使用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')
题库


雷达卡



京公网安备 11010802022788号







