概括性统计包括平均值、分位值、标准差。.describe
方法能计算DataFrame中数值列的统计信息:
调用独立的方法计算平均值、标准差、分位值:
调用.describe
方法:
查看object列的统计信息:
对.describe
的结果进行转置,可以显示更多信息:
查看.dtypes
属性:
每种数据类型的数量:
可以转换列的数据类型以节省内存:
city08
和comb08
两列的值都没超过150。iinfo
函数可以查看数据类型的范围。可以将类型改为int16
。内存降为原来的25%:
finfo
函数可以查看浮点数的范围。
基数低的话,category
类型更节省内存。传入memory_usage='deep'
,查看object
和category
两种类型的内存占用:
数据可以分为日期、连续型数据、类型数据。
选取数据类型为object
的列:
使用.nunique
方法确定基数:
使用.sample
方法查看一些数据:
确认缺失值的数量和百分比:
使用.value_counts
查看每种数据的个数:
如果值太多,则查看排名前6的,折叠其余的:
使用Pandas对统计作图:
使用seaborn
对统计作图:
查看drive
列是缺失值的行:
因为value_counts
不统计缺失值,设置dropna=False
就可以统计缺失值:
rangeA
这列是object
类型,但用.value_counts
检查时,发现它其实是数值列。这是因为该列包含/
和-
,Pandas将其解释成了字符串列。
可以使用.str.extract
方法和正则表达式提取冲突字符:
缺失值的类型是字符串:
统计缺失值的数量:
将缺失值替换为0,-
替换为/
,根据/
分割字符串,然后取平均值:
另一种处理数值列的方法是用cut
和qcut
方法分桶:
qcut
方法是按分位数平均分桶:
提取出数值列:
使用.sample
查看一些数据:
查看缺失值的数量和比例:
获取统计信息:
使用Pandas画柱状图:
发现这张图中的数据很偏移,尝试提高分桶的数目:
使用seaborn创建分布图,包括柱状图、核密度估计和地毯图:
seaborn中还有其它用于表征数据分布的图:
boxplot,violin plot,和 boxen plot
如果想检查数据是否是正态分布的,可以使用Kolmogorov-Smirnov测试,该测试提供了一个p值,如果p < 0.05,则不是正态分布的:
还可以用概率图检查数据是否是正态的,如果贴合红线,则数据是正态的:
分析Ford、Honda、Tesla、BMW四个品牌的city08
列的平均值和标准差:
使用seaborn进行画图:
boxplot不能体现出每个品牌中的数据量:
另一种方法是在boxplot的上方画swarmplot:
catplot
可以补充更多的维度,比如年份:
或者,可以通过参数hue
将四张图放进一张:
如果是在Jupyter中,可以对groupby
结果使用格式:
比较两列的协方差:
比较两列的皮尔森系数:
用热力图显示相关系数:
用散点图表示关系:
因为有的车是电车,没有气缸,我们将缺失值填为0:
使用seaborn添加回归线:
使用relplot
,散点可以有不同的颜色和大小:
还可以加入类别维度:
如果两列不是线性关系,还可以使用斯皮尔曼系数:
降低基数,将VClass
列变为SClass
,只用六个值:
对每个品牌的车辆品类进行计数:
使用crosstab
达到上一步同样的目标:
加入更多维度:
使用Cramér's V方法检查品类的关系:
.corr
方法可以接收可调用变量,另一种方法如下:
使用barplot可视化:
用seaborn实现:
使用堆积条形图来表示:
使用pip install pandas-profiling
安装profiling库。使用ProfileReport
创建一个HTML报告:
可以将其保存到文件: