全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 数据分析与数据挖掘
876 0
2020-12-22
使用Python中的函数优化探索性数据分析
这是对任何数据集进行的分析量的完美说法。
随着越来越多的人选择从事数据科学事业,越来越需要一种Fastrack方法来指导每个人走这条道路。我以python为基础开始学习,然后逐渐增加了一些技能,这些技能帮助我在数据科学领域发展。
功能EDA
在这篇文章中,我将添加可用于任何数据集上的探索性数据分析(EDA)的所有重要步骤和python函数。
好的,今天的计划是尽我们最大的努力来探究数据,并尽我们所能,但要以一种优化的方式。我写这篇文章是为了共享用户定义的功能,以帮助并缩短EDA编码时间。
在项目中要遵循的最重要步骤是:
导入数据
资料验证
列数据类型
估算空值/缺失值
数据探索(EDA)
单变量
双变量
多变量
特征工程
转换/缩放
模型构建(应用机器学习算法)和调整
分数计算
综上所述,我们将介绍EDA的功能。同样,如果您在使用这些打印机时遇到任何问题,或者在任何其他方面需要任何帮助,请在评论中让我知道。有几种实现方法,但我选择了最通用的方法。
指数
介绍
单变量分析
双变量分析
多元分析
有用的功能
概要
介绍
任何分析问题中最重要且最耗时的部分是了解数据。花时间研究数据比一次又一次地编码同一件事更好。
我们今天要构建的功能非常通用,您可以根据需要对其进行调整。
python中用户定义函数的伪代码为:
功能定义:
          def func_name(parameters):#函数名称和参数
                 “ function_steps”
                   function_commands
                  返回[return_value]
函数调用:
            func_name(参数)
单变量分析功能:
转到EDA,我们可以一次定义任何函数,然后通过将数据集中的要素名称作为参数传递来调用它。我已经附加了一个GitHub链接,该链接演示了下面描述的所有功能的实现– Github – https://github.com/r-pant/data-h ... 20sales/file1.ipynb
分类:
在功能图下方,传递给功能的功能的计数图。
            def plot_cat(var,l = 8,b = 5):
                       plt.figure(figsize =(l,b))
                       sns.countplot(df1 [var],order = df1 [var] .value_counts()。index)
连续:
对于连续功能的简单distplot
               def plot_cont(var,l = 8,b = 5):
                     plt.figure(figsize =(l,b))
                     sns.distplot(df1 [var])
                     plt.xlabel(var)
2.要查看包含所有详细信息的详细kde图:
               #用中值和标准值绘制kde图
               def plot_cont_kde(var,l = 8,b = 5):
                     mini = df1 [var] .min()
                     maxi = df1 [var] .max()
                     ran = df1 [var]。 max()-df1 [var] .min()
                    平均值= df1 [var] .mean()
                    偏斜= df1 [var] .skew()
                     kurt = df1 [var] .kurtosis()
                    中位数= df1 [var] .median ()
                     st_dev = df1 [var] .std()
                    点=均值-st_dev,均值+ st_dev
                     图,轴= plt.subplots(1
                      sns.boxplot(data = df1,x = var,ax = axes [0 ])
                     sns.distplot(a = df1 [var],ax = axes [1],color ='#ff4125')
                      sns.lineplot(points,[0
                      sns .scatterplot([mini,maxi],[0
                      sns.scatterplot([mean],[0],color ='red',label =“平均值”)
                      sns.scatterplot([median],[0],color ='blue',label =“ median”)图
                     .set_size_inches(l,b)
                      plt.title('std_dev = {};峰度= {}; nskew = {}; range = {} nmean = {};
                                中位数= {}'。format((round(points [0],2),round(points [1],2)),
                                圆(kurt,2),圆(skew,2),(圆(mini,2),圆(maxi,2),
                                round(ran,2),round(mean,2),round(median,2)))
双变量分析功能:
双变量分析对于找出相关模式并检验我们的假设非常有帮助。这将帮助我们推断并构建不同的功能以馈入模型。
类别-类别:
         def BVA_categorical_plot(data,tar,cat):
               '''取得数据和两个分类变量,
               计算两个变量之间的               chi2显着性,
并使用countplot和CrossTab打印结果
              '''
               #分离变量
              data = data [[cat, tar]] [:]
               #形成交叉
              表table = pd.crosstab(data [tar],data [cat],)
               f_obs = np.array([table.iloc [0] [:]。values,
               table.iloc [ 1] [:]。values])
               #              从scipy.stats执行chi2测试
import chi2_contingency
              chi,p,dof,期望= chi2_contingency(f_obs)
              #             如果p <0.05,则检查结果是否显着

                   sig = True
             其他:
                   sig = False
              #对分组的图进行
             sns.countplot(x = cat,hue = tar,data = data )
              plt.title(“ p值= {} n差异显着吗?= {} n” .format(round(p,8),sig))
              #绘制             百分比堆积条形图
#sns.catplot(ax,kind ='堆叠')
              AX1 = data.groupby(猫)[焦油] .value_counts(正规化=真).unstack()
              ax1.plot(种类='酒吧”,叠= '真',标题= STR(AX1))
             int_level = data [cat] .value_counts()
分类连续:
在这里,我使用了两个函数,一个函数计算z值,另一个函数绘制特征之间的关系。
    def TwoSampleZ(X1,X2,sigma1,sigma2,N1,N2):
          '''
          函数采用均值,标准差和否。观察值和返回值:         从numpy导入sqrt,abs,
          scipy取整为2采样Z检验         '''
计算的p值
.stats导入范数
         ovr_sigma = sqrt(sigma1 ** 2 / N1 + sigma2 ** 2 / N2 )
           z =(X1-X2)/ ovr_sigma
           pval = 2 *(1-norm.cdf(abs(z)))
           return pval
                  --------------------- -------------------------------------------------- -------------------------------------------------- -
       DEF Bivariate_cont_cat(数据,CONT,猫,类别):
           应#creating 2个样品
           x1 = data [cont] [data [cat] == category] ??[:]#所有分类特征
           x2 = data [cont] [?(data [cat] == category)]] [:]#所有连续特征#计算
           描述性
           n1,n2 = x1.shape [0],x2.shape [0]
            m1,m2 = x1.mean(),x2.mean()#计算平均值
           std1,std2 = x1.std(),x2.mean() #计算标准差#计算
            p值
            z_p_val = TwoSampleZ(m1,m2,std1,std2,n1,n2)
             #table
             table = pd.pivot_table(data = data,values = cont,column = cat,aggfunc = np.mean )
             #plotting
             plt.figure(figsize =(15
             #barplot
            plt.subplot(1
             sns.barplot([str(category),'not {}'。format(category)],[m1,m2])
             plt.ylabel('mean {}'。format( cont))
             plt.xlabel(cat)
             plt.title('n z-test p-value = {} n {}'。format(z_p_val,table))
             #
             boxplot plt.subplot(1
             sns。 boxplot(x = cat,y = cont,data = data)
             plt.title('分类盒图')
连续-连续:
           #定义一个函数来计算列之间的相关性:
      def corr_2_cols(Col1,Col2):
           res = pd.crosstab(df1 [Col1],df1 [Col2])
           #res = df1.groupby([Col1,Col2])。size( ).unstack()
           res ['perc'] =(res [res.columns [1]] /(res [res.columns [0]] + res [res.columns [1]]))
          返回res
多元分析功能:
       def Grouped_Box_Plot(data,cont,cat1,cat2):
             #boxplot
             sns.boxplot(x = cat1,y = cont,hue = cat2,data = data,orient ='v')
             plt.title('Boxplot')
题库
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群