美文网首页
数据建模:常用EDA方法

数据建模:常用EDA方法

作者: 梦游的猫头鹰 | 来源:发表于2020-05-31 15:23 被阅读0次

一、样本统计描述

1、数据基本情况

df.sample(5) # 随机抽取数据,查看数据内容,df,head(2)、df,tail(2)。

df.shape # 查看数据量大小。

df.info # 查看数据类型,字符型、数值型等,df.value、df.info()直接查看数据。

df['gender'].value_counts(dropna=False)

# 类别性变量查看分布,df['gender'].nunique()、df['gender'].unique()。

df.describe() # 数据型分布查看,include=['O'],类别型设置参数亦可。

2、数据质量分析

缺失率分析

df.isnull().any()

df.isnull().all()

var_null = (df.isnull().sum() / df.isnull().count()).sort-values(ascending=False) * 100 

var_null[var_null > 80].index.values

# 缺失率分析,并可根据阈值筛选变量。

同一性分析

异常值分析

p = df[var].boxplot(return_type='dict', sym='o', whis=3, flierprops={'maker':'o', 'markerfacecolor':'red', 'color':‘black’})

plt.savefig(folder + '{}-{}.png'.format(index, var)) 

# 主要通过箱型图观测,更复杂的异常值检测方法见孤立森林等算法。

其他常用方法

agg_grouops =pd.cut(df[''age], bins=[19, 40, 65, np.inf])

pd.crosstab(age_groups, df['sex'])

# crosstab示例,常用groupby、pivot_table。

二、变量可视化分析

主要使用matplotlib、seaborn两个库。

1、单变量分析

数值型变量

# 直方图

sns.set_style('white')

from scipy.stats import norm

# df['age'] = np.log(df['age'])

sns.distplot(df['age'], kde=True, hist=False, fit=norm)

# kdeplot(绘制累计分布)

# df['age'].plot(kind='hist')

# pandas通用作图函数,boxplot箱型图,scatter散点图,lie折线图,bar条形图,pie # 饼图。

# 箱型图

sns.boxplot(x='type', y='income', data=df)   # x增加了分析的适用性。

类别性变量

# 条形图

plt.figure(figsize=(14, 8))

ax = sns.barplot(x='type', y='income', hue='gender', data=df)

# estimatoer可修改计算函数,默认平均值,修改为count时,等同于countplot()

# sns.countplot(x='type', hue='gender', data=df)

# capsize设置误差棒帽条的宽度,可对ax进行图片参数设置更改。

# ax.set(yscale='log')

# ax.figure.savefig('pic')

plt.title('barplot')

plt.legend(loc='best')

# 饼图

fig, axs = plt.subplots(1, 2, figsize=(14, 8))

sns.countplot(x='astro', hue='target', data=df, ax=axs[0])

axs[0] .set_title('astro')

df['target'].value_counts().plot(x=None, y=None, kind='pie', ax=axs[1], autopct='%1.2f%%') # 输出百分好的样式。

axs[0] .set_title('target')

plt.xticks(rotataion=90) # 未生效,原因易知。

2、多变量分析

数值型变量

# 联合分布

sns.jointplot('age', 'worktime', data=df, kind='reg', size=10)

sns.pairplot(df, vars=['age', 'debt', 'cs_cnt'], hue='target', diag_kind='kde', kind='reg', size=7) # vars中的变量,必须都是数值型。

类别性变量

# 类别型与数值型

sns.pointplot(x='hour', y='count', hue='season', join=True, data=df)

# 参考官方文档,此图的实际含义更加清楚。

g = sns.FacetGrid(df, col='target', row='sex')

# g.sharex=False

g,map(plt.scatter, 'age', 'worktime') # 分析起来非常方便。

热点图

三、常用技巧及子图绘制

1、常用参数及技巧

plt.style.use('ggplot') # r语言风格

plt.style.available

%config inlinebackend.figure_format = 'retina'

plt.grid(True, axis='y') # 增加网格

plt.text(3.1, 0.3, 'sin function') # 增加文字描述

plt.xlim([-10, 15]) # 制定x轴的取值范围

plt.axis([0, 6, 0, 20]) # 制定坐标轴范围,xmin,xmax,ymin,ymax

plt.xticks((0, 500, 1000), ('0', '0.5K', '1k')) # 替换坐标刻度值

#  plt.xticks(np.arange(10), top10.name)

# plt.set_xticks(range(0, n, 20))

# plt.set_xticklabels(['%d' %val for val in range(0, n, 20)])

2、子图绘制

fig.subplots_adjust(wspace=0.5, hspace=0.3) # 调整子图横纵向距离。

fig.tight_layout() # 自动调整subplot间距离。

# 方法很多,这里只列出自己用的最顺手的。

fig = plt.figure()

ax1 = fig.add_subplot(131)

3、通用绘图函数

g = sns.FacetGrid(df, col='target')

g.map(sns.distplot, 'age')

sns.factorplot(data=df, x='type', y='cum', col='target') # kind='bar'

# 默认绘制的此图类,类似于jointpoint。

g = sns.JointGrid(x='age', y='debt', data=df, size=10) # 类似的有sns.PairGrid。

g.plot_joint(sns.regplot, order=3)

g.plot_marginals(sns.distplot)

相关文章

网友评论

      本文标题:数据建模:常用EDA方法

      本文链接:https://www.haomeiwen.com/subject/cgodahtx.html