pandas数据画像
By 青衣极客 Blue Geek In 2019-10-15
很多从事数据分析或者有志于此的朋友都会比较熟悉pandas这一款python的第三方库,之前我已经在一篇文章中讨论了pandas的21个基本操作,这里就不在赘述。在使用pandas分析数据的时候常常有一个需求,就是对一个数据集合进行画像分析,从而了解这个数据集的整体情况以及各个变量之间的关系。大家对人物画像或者用户画像可能会稍微有些概念,数据画像其实也差不多,就是分一些比较具体的维度对数据进行刻画。接下来本文就使用一款配合pandas使用的插件来生成数据画像。本文是在学习一篇英文帖子之后制作的,喜欢阅读英文版的朋友可以从本文结尾处的链接访问英文网页。
1. 简单的统计
事实上,pandas自带了几个简单的接口用于刻画几个常用维度的信息,比如数据采样,以了解数据项的具体内容和形式。
import pandas as pd
d = {'A':[1,2,3,4,5,6,7,8],
'B':[2,3,4,5,6,7,8,9],
'C':[3,4,5,6,7,8,9,0]}
df = pd.DataFrame(d)
df.sample(5)
| A | B | C | |
|---|---|---|---|
| 4 | 5 | 6 | 7 |
| 0 | 1 | 2 | 3 |
| 2 | 3 | 4 | 5 |
| 3 | 4 | 5 | 6 |
| 5 | 6 | 7 | 8 |
pandas还提供了求取列数据的均值、标准差、计数、最大值、最小值等等比较基础的统计信息。这些pandas自带的接口虽然是简单易用,但是功能比较还是太少。
df.describe()
| A | B | C | |
|---|---|---|---|
| count | 8.00000 | 8.00000 | 8.000000 |
| mean | 4.50000 | 5.50000 | 5.250000 |
| std | 2.44949 | 2.44949 | 2.915476 |
| min | 1.00000 | 2.00000 | 0.000000 |
| 25% | 2.75000 | 3.75000 | 3.750000 |
| 50% | 4.50000 | 5.50000 | 5.500000 |
| 75% | 6.25000 | 7.25000 | 7.250000 |
| max | 8.00000 | 9.00000 | 9.000000 |
2. 数据画像
有一款第三方库pandas_profiling可以同时满足使用方便和功能丰富的需求。这个第三方库并不是pandas本身的功能,因此需要额外手动安装。直接执行命令 pip3 install pandas_profiling。由于依赖项较多,安装过程可能会花一点时间。我们就用这个工具来对上文的简单数据表进行一下数据画像的操作。
import pandas_profiling
df.profile_report()
3. 实例展示
上面的简单数据表的画像只是让大家对这个工具产生的结果有一个初步的了解,下面我们使用这个工具对有实际意义的数据进行画像,观察一下这个工具在实际使用中的表现。
(1) 数据集信息
通常使用数据表来表示的数据集中,每一行的数据代表一个样本点,也成一次观测,每一列数据属于一个随机变量的若干个测量值。因此,数据的每一列都是代表这一个随机变量。数据集信息这一项就包含随机变量的个数、样本点数、数据缺失程度以及与存储相关的信息。
(2) 变量类型
pandas_profiling这款工具还可以根据一列数据的类型来判断随机变量的类型。比如在这里例子中,就是有5个数值型的随机变量和一个类别型的随机变量。
(3) 变量观察值分析
生成的报告还包括每个变量的众多观察值的统计分析,常用的最大最小值、均值零值等等。甚至还会给出这个变量的统计直方图。以了解观察值的范围和分布。
(4) 相关性
pandas_profiling生成的另一个很重要的统计项是相关性。在日常工作或者科研中,我们常常需要判断一个因素之间的相关性,以便于削减一些重复的投入或者增加一些协同作用很强的措施。这款工具生成的数据画像可以完美地满足这种需求,而且还提供了不同准则下的相关性,结果显示非常直观。
(5) 缺失数据情况
在处理实际数据中难以避免的一个问题就是数据缺失。我们常常需要掌握数据缺失的具体情况,以保证整体的数据可用。特别是在一些数据缺失严重的项目中,需要使用一些技巧来对缺失的数据进行估计或者至少保证数据分析结论基本可靠。 数据画像的这一功能还可以看出变量测量值缺失在整体样本中的分布情况。
(6) 样本实例
对于大量数据自然是统计分析的结论更加可靠和令人信服,但是对于数据分析者而言,了解具体数据项目和形式也是非常重要的。因此,数据画像包括了从原始数据中进行一些采样的样本点,可以查看数据的具体形式。
df = pd.read_csv('data/planets.csv')
df.profile_report()
到此,关于使用pandas_profiling来为pandas.DataFrame结构数据进行数据画像就讨论完毕。对此感兴趣的朋友可以亲自尝试一下,效果确实不俗。参考的英文版网页链接如下:https://towardsdatascience.com/exploring-your-data-with-just-1-line-of-python-4b35ce21a82d 。

COMMENT
博客评论区功能由Github Issue提供,提交Issue时请以本文标题为话题。
"BG31-pandas数据画像"