分享

pandas_profiling:生成动态交互的数据探索报告

 大邓的Python 2021-02-23

今天学到pandas的一个扩展库- pandas-profiling,该库可以从dataframe中生成报告文件。实际上df.describe()就是能实现类似的功能,但是对于数据分析初期的数据探索略微有些鸡肋。

pandas-profiling 可以在html动态交互页面中呈现如下统计信息:

  • 基础信息:类型、唯一值、缺失值

  • 分位数统计量:如最小值,Q1,中位数,Q3,最大值,范围,四分位数范围

  • 描述性统计量:均值、标准差、和、中位绝对偏差、变异系数、峰度、偏度

  • 最常出现的值

  • 直方图

  • 相关系数:高度相关的变量、斯皮尔曼和皮尔森矩阵

安装

  1. !pip3 install pandas_profiling

pandas-profiling例子

这里我们使用气象学会的综合数据集,该数据集包含所有已知陨石着陆的信息。 由Javier de la Torre收集,提供了一个由34,513个陨石组成的XLS文件,其中包括以下字段:

  1. location

  2. type_of_meteorite

  3. mass_g

  4. fell_found

  5. year


  6. database

  7. coordinate_1

  8. coordinate_1

  9. coordinates_2

  10. cartodb_id

  11. created_at

  12. updated_at

  13. year_date

  14. longitude

  15. latitude

  16. geojson

我们先读取数据看看

  1. import pandas as pd

  2. import pandas_profiling

  3. import numpy as np

  4. df = pd.read_csv('Meteorite_Landings.csv', parse_dates=['year'])

  5. df.head()

生成一些实验数据

为了方便学习pandas_profiling库,我们生成一些缺失值、随机值、高度自相关等特点的信息。

  1. #pandas不支持1880年之前的日期,所以遇到errors我们需要设置处理方式。

  2. #pandas中errors有raise、ignore和coerce三种。coerce是将不支持的日期设置为NaN

  3. df['year'] = pd.to_datetime(df['year'], errors='coerce')

  4. # 常量

  5. df['source'] = "NASA"

  6. #随机生成df.shape[0]个布尔值

  7. df['boolean'] = np.random.choice([True, False], df.shape[0])

  8. # 随机生成df.shape[0]个1或者A

  9. df['mixed'] = np.random.choice([1, "A"], df.shape[0])

  10. # 新建一个与reclat高度相关的reclat_city变量

  11. df['reclat_city'] = df['reclat'] + np.random.normal(scale=5,size=(len(df)))

  12. duplicates_to_add[u'name'] = pd.DataFrame(df.iloc[0:10][u'name']) + " copy"

  13. df = df.append(duplicates_to_add, ignore_index=True)

  14. df.tail(5)

输出分析报告

在notebook的Cell内输出dataframe的分析报告

  1. pandas_profiling.ProfileReport(df)

具体我们看看详细的报告,注意图片中的Toggle Detail也是可以点击查看更详细的信息。

报告真的很详细美观,很适合用到数据探索阶段。

将报告输出到html文件中

有时候我们需要将分析报告分享给其他人,这时候我们就需要将报告输出为html文件方便其他人查看。

  1. pfr = pandas_profiling.ProfileReport(df)

  2. pfr.to_file("report.html")

profiling对象行内显示

刚刚上面的pfr变量是profiling对象,可以直接在行内显示具体的报告信息

  1. pfr

高级用法

pandas_profiling.ProfileReport()函数有以下参数,我们可以根据需要自定义

  • bins (int):直方图的列数(默认为10).

相关性设置:

  • check_correlation: 布尔型值,是否检验相关性,默认为True

  • correlation_threshold: 浮点值(值域0-1),该值用来设置判定两个变量之间是否为相关。默认阈值为0.9,在社科类中,这个参数可以用来诊断变量间的共线性问题

  • correlation_overrides: (list): Variable names not to be rejected because they are correlated (None by default).

  • check_recoded (boolean): 布尔型值,用来诊断记录间是否存在相关性,因为这种计算比较消耗计算能力,所以建议只在小样本量的情况下使用。

  • pool_size:整数型,并行加快计算,该参数默认与CPU的个数相等。

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多