字段存在缺失值的示例
与检查缺失值相关的代码如下。
#generatepreviewofentrieswithnullvalues
ifdf.isnull().any(axis=None):
print("\nPreviewofdatawithnullvalues:\nxxxxxxxxxxxxx")
print(df[df.isnull().any(axis=1)].head(3))
missingno.matrix(df)
plt.show()
在我们的示例中,也没有重复的条目,代码将通过打印输出“没有找到重复的条目”来直接指出这一点。
在出现重复条目时,输出将显示重复条目的数量并预览这些条目。
重复值输出的示例
检查重复项的代码:
#generatecountstatisticsofduplicateentries
iflen(df[df.duplicated()])>0:
print("No.ofduplicatedentries:",len(df[df.duplicated()]))
print(df[df.duplicated(keep=False)].sort_values(by=list(df.columns)).head())
else:
print("Noduplicatedentriesfound")
如果有任何丢失的值或重复的条目,您应该在进一步进行 EDA 的其他部分之前决定所需的清理步骤。
对于重复的条目,检查它们是否确实重复,并通过以下代码删除它们。
df.drop_duplicates(inplace=True)
分类数据EDA
我们对分类数据的主要 EDA 目标是知道唯一值及其对应的计数。
商店的销售情况,例如,Promo列表示商店是否在当天进行促销活动。根据其唯一值的count结果计算促销活动的次数。结果表明,促销活动举行得相当频繁,占据了大约40% (388,080/1,017,209)的商店天数。这可能表明促销是预测销售额的一个重要特征。
为分类数据生成 EDA 的函数是categorical_eda。
defcategorical_eda(df):
"""Givendataframe,generateEDAofcategoricaldata"""
print("Tocheck:Uniquecountofnon-numericdata")
print(df.select_dtypes(include=['category']).nunique())
top5(df)
#Plotcountdistributionofcategoricaldata
forcolindf.select_dtypes(include='category').columns:
fig=sns.catplot(x=col,kind="count",data=df)
fig.set_xticklabels(rotation=90)
plt.show()
数值型数据EDA
对于数值型数据,我们的 EDA 方法如下:
- 绘制每个数值数据的单变量分布图
- 如果有分类数据,则按每个分类值绘制单变量分布图
- 绘制数值数据的成对联合分布图
在运行 eda 函数之前,我们创建了一个新的列ave_sales,将Sales除以Customer,这样我们就可以分析每个顾客每个商店日的平均销售额。
我们的数值型数据EDA的第一个输出显示了一些简单的分布统计数据,包括平均值、标准差和四分位数。
我们可以从输出中得出的一些观点包括:
- 所有数值数据都没有负值。如果有任何负值,这可能意味着我们必须进一步调查,因为销售和客户数量不太可能是负值,我们可能不得不重新清洗数据。
- 数值数据的最大值与上四分位数(75%)相差甚远,这表明我们可能存在异常值。