像梦一样奔驰|一行 Python 命令搞定前期数据探索性分析
对于每个从事和数据科学有关的人来说 , 前期的数据清洗和探索一定是个花费时间的工作 。 毫不夸张的说 , 80%的时间我们都花在了前期的数据工作中 , 包括清洗、处理、EDA(Exploratory Data Analysis , 探索性数据分析)等 。 前期的工作不仅关乎数据的质量 , 也关乎最终模型预测效果的好坏 。
每当我们手上出现一份新的数据时 , 我们都需要事先通过人为地观察、字段释义等方式预先对数据进行熟悉与理解 。 在清洗、处理完数据之后才会开始真正的 EDA 过程 。
这个过程最通用的操作无非就是对现有的数据做基本性的统计、描述 , 包括平均值、方差、最大值与最小值、频数、分位数、分布等 。 实际上往往都是比较固定且机械的 。
在 R 语言中 skimr 包提供了丰富的数据探索性统计信息 , 比 Pandas 中的 describe() 基本统计信息更为丰富一些 。
01-skmir
但在 Python 社区中 , 我们同样也可以实现 skmir 的功能 , 甚至比 skmir 有过之而无不及 。 那就是使用 pandas-profiling 库来帮助我们搞定前期的数据探索工作 。
快速使用通过 pip install pandas-profiling 之后我们就可以直接导入并使用了 。 我们只需要通过其一行核心代码 ProfileReport(df, **kwargs) 即可实现:
import pandas as pdimport seaborn as snsfrom pandas_profiling import ProfileReporttitanic = sns.load_dataset("Titanic")ProfileReport(titanic, title = "The EDA of Titanic Dataset")如果我们是在 Jupyter Notebook 中使用 , 则会在 Jupyter Notebook 中渲染最后直接输出到单元格中 。
02-profile
pandas-profiling 库也扩展了 DataFrame 对象方法 , 这意味着我们也可以通过像调用方法一样使用 DataFrame.profile_report() 来实现和上述一样的效果 。
无论使用哪种方式 , 最后都是生成一个 ProfileReport 对象;如果要进一步贴合 Jupyter Notebook , 可以直接调用 to_widgets() 和 to_notebook_iframe() 来分别生成挂架或对应的组件 , 在展示效果上会更加美观 , 而不是在输出栏进行展示 。
03-widgets
如果不在 Jupyter Notebook 中直接使用 , 而是使用其他 IDE , 那么我们可以通过 to_file()方法来直接将报告输出 , 需要注意的是最后保存的文件名需要加上扩展名 .html 。
另外 , Pandas-profiling 还和多个框架、云上平台等进行了集成 , 能够让我们方便的进行调用 , 详情见官网(https://pandas-profiling.github.io/pandas-profiling/docs/master/rtd/pages/integrations.html) 。
进一步定制报告信息虽然生成的探索性报告基本上已经能满足我们了解数据的简单需求 , 但是当中输出的信息也有些不足或是冗余 。 好在 pandas-profiling 也给我们提供了自己定制的可能 。 这些定制的配置最终会写入到 yaml 文件中 。
在官方文档中列出了几个我们能够进一步调整的部分 , 分别对应了报告 Tab 栏的各部分标签:
- vars:主要用于调整数据中字段或变量在报告中的呈现的统计指标
推荐阅读
- 芒种风向标|奔驰全新S级的内饰好看吗?不得不说优秀全靠同行衬托
- 奔驰E级|奔驰E级:开始清仓,为什么降到35万还有库存
- 光明论|劳动者的尊严不能像证件一样被“扔”在地上
- 懂车善用|如今跌破22万,比奔驰C漂亮,22万开出50万面子,曾经卖60万
- 有车以后|2 万多!,最便宜的奔驰 SUV 新款上市,价格又便宜了
- 胖哥汽车频道|或取消2.0T发动机,奔驰国产全新C级谍照曝光
- 科技日日说|realme真我X7全方位评测:不一样的颜值,不一样的体验!,原创
- 王者荣耀|没有明世隐的“狼狗”不能玩?正确玩法教给你一样凯瑞全场!
- 像梦一样奔驰|51WDP开发者平台五大工具全面开放,让数字孪生触手可及
- 虎扑足球|巴黎也是一样,莱昂纳多:任何俱乐部要签人都得先卖人
