0%

pandas-profiling 数据分析利器

介绍

pandas-profiling可以为DataFrame生成一份报告,在pandas中 df.describe() 是比较基础的探索性数据分析函数,而pandas_profiling则是在DataFrame的基础上扩展,用于快速数据分析。

对于每个column,以下统计信息(与列类型相关)将显示在交互式HTML报告中:

  1. 类型推断:检测DataFrame中列的类型。
  2. 概要:类型,唯一值,缺失值
  3. 分位数统计信息,例如最小值,Q1,中位数,Q3,最大值,范围,四分位数范围
  4. 描述性统计数据,例如均值,众数,标准偏差,和,中位数绝对偏差,变异系数,峰度,偏度
  5. 出现频率高的值
  6. 直方图
  7. 高度相关变量(Spearman,Pearson和Kendall矩阵)的相关性分析
  8. 缺失值:矩阵,计数(count),热图和缺失值树状图
  9. 重复行列出出现次数最多的重复行
  10. 文本分析:了解文本数据的类别(大写,空格),脚本(拉丁,西里尔字母)和块(ASCII)

安装

使用pip安装

pip install pandas-profiling

使用conda安装

conda install -c anaconda pandas-profiling

一行代码生成报告

首先导入测试数据,这里我们使用tushare获取的股票数据来进行测试。

import pandas as pd
import tushare as ts
from pandas_profiling import ProfileReport

pro = ts.pro_api()
symbol = '000001.SZ'
df = ts.pro_bar(ts_code=symbol, adj='qfq', start_date='20200101', end_date='20201113')
df.index = pd.to_datetime(df['trade_date'])
df.index.name = None   # 这步不可缺少,否则生成报告时同名列会报错
df.sort_index(inplace=True)

接下来生成测试报告

report = ProfileReport(df.sample(frac=0.05), title='%s 股票分析' % symbol)
report.to_file(output_file='%s.html' % symbol)

报告汇总信息如下截图

大数据问题解决方案

当pandas-profiling应用在大数据量的DataFrame上运行速度会非常慢,这时候可以考虑使用以下办法解决。

1. Minimal模式

在此模式下report会去掉一些耗时的计算操作,生成一份简略的数据分析报告。通过将参数minimal设置为True可以开启此模式。

profile = ProfileReport(large_dataset, minimal=True)
profile.to_file("output.html")

2. 采样

采样方式可以有效降低数据量,但缺点是可能漏掉某些数量较小的错误情况。

tmp = df.sample(100) # 方法1,随机采样100条数据
tmp = df.sample(frac=0.01)   # 方法2,返回数据的比例,不可以跟上面的数值同时使用

参考

https://pandas-profiling.github.io/pandas-profiling/docs/master/rtd/

Python量化交易实战
欢迎您扫码订阅我的微信公众号: pyquant
坚持原创技术分享,您的支持将鼓励我继续创作!

欢迎关注我的其它发布渠道