使用Pandas处理连续数据

连续数据是存储为数字(整数或浮点数)的数据。

目录

《Pandas1.x实例精解》新书抢先看!

【第1篇】利用Pandas操作DataFrame的列与行

【第2篇】Pandas如何对DataFrame排序和统计

【第3篇】Pandas如何使用DataFrame方法链

【第4篇】Pandas如何比较缺失值以及转置方向?

【第5篇】DataFrame如何玩转多样性数据

【第6篇】如何进行探索性数据分析?

【第7篇】使用Pandas处理分类数据

微信搜索关注《Python学研大本营》,加入读者群,分享更多精彩

连 续 数 据

笔者对连续数据的广义定义是存储为数字(整数或浮点数)的数据。在分类数据和连续数据之间存在一些灰色区域。例如,年级就可以表示为数字(忽略幼儿园,或使用0表示)。在这种情况下,年级列既可以是分类的,也可以是连续的,因此,本节和5.4节“分类数据”中的技术都可以应用。

本节将检查燃油经济性数据集中的连续列。在city08列中,列出了城市道路条件下以较低速度驾驶汽车时预期的每加仑英里数。

实战操作

(1)选择数字列(通常是int64或float64)。

>>> fueleco.select_dtypes("number")

(2)使用.sample方法查看部分值。

>>> fueleco.city08.sample(5, random_state=42)
4217 11
1736 21
36029 16
37631 16
1668 17
Name: city08, dtype: int64

(3)确定缺失值的数量和百分比。

>>> fueleco.city08.isna().sum() 
0

>>> fueleco.city08.isna().mean() * 100 
0.0

(4)获取摘要统计信息。

>>> fueleco.city08.describe()

Name: city08, dtype: float64

(5)使用Pandas绘制直方图。

>>> import matplotlib.pyplot as plt
>>> fig, ax = plt.subplots(figsize=(10, 8))
>>> fueleco.city08.hist(ax=ax)
>>> fig.savefig(
...  "c5-conthistpan.png", dpi=300
... )

其输出结果如图5-3所示。

图5-3  Pandas直方图

(6)图5-3看起来很偏斜,因此可以增加直方图中箱子(bin)的数量,以查看偏斜是否隐藏了行为(因为偏斜会使箱子更宽)。

>>> import matplotlib.pyplot as plt
>>> fig, ax = plt.subplots(figsize=(10, 8))
>>> fueleco.city08.hist(ax=ax, bins=30)
>>> fig.savefig(
...  "c5-conthistpanbins.png", dpi=300
... )

其输出结果如图5-4所示。

图5-4  修改之后的Pandas直方图 

(7)使用Seaborn创建一个分布图,其中包括直方图、核密度估计(kernel density estimation,KDE)和rug图。

>>> fig, ax = plt.subplots(figsize=(10, 8))
>>> sns.distplot(fueleco.city08, rug=True, ax=ax)
>>> fig.savefig(
...  "c5-conthistsns.png", dpi=300
... )

其输出结果如图5-5所示。

图5-5  Seaborn直方图  

提示:

  • 直方图显示的是箱子。

  • KDE显示的是密度曲线。

  • rug图可以标示数据分布情况。元素出现一次,就会绘制一个小竖杠。因此,从rug的疏密可以看出元素的疏密。

原理解释

分析人员应该对数字代表的意义有良好的感觉,而研究数据的样本将使你找到这种感觉,知道某些值代表的意义。另外,我们还需要知道缺失值的情况。回想一下,当我们对列执行操作时,Pandas将忽略缺失值。

.describe方法提供的摘要统计信息非常有用,这可能是我们最喜欢的检查连续值的方法。一定要检查最小值和最大值,这对于理解数字的意义很有帮助。例如,如果在miles per gallon(每加仑英里数)这一列中的最小值出现了负值,那就很奇怪。

分位数向我们表明了数据的偏斜度。由于分位数是数据趋势的可靠指标,因此它们不受异常值的影响。

还需要注意的另一件事是无穷值,无论是正无穷还是负无穷。在我们的示例中没有出现无穷值,如果有这些值,那么它可能会导致某些数学运算或绘图失败。如果数据中包含无穷值,则需要考虑如何对这些值进行处理。Pandas的常见做法是对无穷值进行修剪和删除。

我们是绘图功能的忠实拥护者,Pandas和Seaborn都使可视化连续数据的分布变得非常容易。俗话说“一图胜千言”,这样的俗话用在数据分析领域真是再恰当不过了。

扩展知识

Seaborn库有许多汇总连续数据的选项。除distplot函数外,还有一些用于创建箱形图(box plot)、增强箱形图(boxen plot)和小提琴图(violin plot)的函数。

R语言是用于统计分析、绘图的语言和操作环境。R语言创建了一个称为字母值图(letter value plot)的图,Seaborn的作者复制了该图,但是将名称更改为增强箱形图。在增强箱形图中,它的中值(median value)是黑色线。中值以50表示,从50~0和100各划分一半,从而划分出四分位数线。箱子从上到下展示的是上四分位数(75分位数,这是箱子的上边线)、中位数(median,即箱子中间的线)和下四分位数(25分位数,这是箱子的下边线),上四分位数和下四分位数之间的距离称为四分位距(inter quartile range, IQR),也就是25~75分位数的范围。最高的块显示的就是25~75分位数的范围。在下边缘的下一个箱子是从25到该值的一半(也就是12.5),所以显示的就是12.5~25分位数。重复此模式,下一个箱子就是6.25~12.5分位数,以此类推。

小提琴图基本上是一个直方图,其另一侧翻转了一个副本。如果你有双模型直方图,则该直方图看起来像小提琴,这也是它名称的由来。

>>> fig, axs = plt.subplots(nrows=3, figsize=(10, 8))
>>> sns.boxplot(fueleco.city08, ax=axs[0])
>>> sns.violinplot(fueleco.city08, ax=axs[1])
>>> sns.boxenplot(fueleco.city08, ax=axs[2])
>>> fig.savefig("c5-contothersns.png", dpi=300)

其输出结果如图5-6所示。

图5-6  用Seaborn创建的箱形图、小提琴图和增强箱形图 

如果你担心数据是否正常,则可以使用SciPy库通过数字和可视化对其进行量化。

K-S检验(kolmogorov-smirnov test)可以评估数据是否为正态分布。K-S检验为我们提供了p值。如果此值是显著的(<0.05),则数据就不是正态分布的。

>>> from scipy import stats
>>> stats.kstest(fueleco.city08, cdf="norm") 
KstestResult(statistic=0.9999999990134123, pvalue=0.0)

我们可以绘制概率图(probability plot)以查看值是否为正态分布。正态概率图将是一条直线,如果样本跟踪这条线,则数据是正态分布的。

>>> from scipy import stats
>>> fig, ax = plt.subplots(figsize=(10, 8))
>>> stats.probplot(fueleco.city08, plot=ax)
>>> fig.savefig("c5-conprob.png", dpi=300)

其输出结果如图5-7所示。

图5-7  概率图显示了值是否为正态分布

推荐书单

《Pandas1.x实例精解》

本书详细阐述了与Pandas相关的基本解决方案,主要包括Pandas基础,DataFrame基本操作,创建和保留DataFrame,开始数据分析,探索性数据分析,选择数据子集,过滤行,对齐索引,分组以进行聚合、过滤和转换,将数据重组为规整形式,组合Pandas对象,时间序列分析,使用Matplotlib、Pandas和Seaborn进行可视化,调试和测试等内容。此外,本书还提供了相应的示例、代码,以帮助读者进一步理解相关方案的实现过程。本书适合作为高等院校计算机及相关专业的教材和教学参考书,也可作为相关开发人员的自学用书和参考手册。

购买链接:https://u.jd.com/UKjx4et

精彩回顾

使用Pandas处理分类数据

如何进行探索性数据分析?

DataFrame如何玩转多样性数据

Pandas如何比较缺失值以及转置方向?

Pandas如何使用DataFrame方法链

Pandas如何对DataFrame排序和统计

利用Pandas操作DataFrame的列与行

《Pandas1.x实例精解》新书抢先看!

微信搜索关注《Python学研大本营》

访问【IT今日热榜】,发现每日技术热点

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值