Raul2018

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

From: https://mp.weixin.qq.com/s/8eu8srnv_aD1BUy0kIc5ng

-----------------------------------------------------------------------------------

Sweetviz是一个开源Python库,只需两行代码即可生成美观、高效率的可视化报告,快速进行EDA(探索性数据分析),输出是一个固定格式HTML报告文件。这个库围绕快速可视化目标值和比较数据集而构建。其目标是帮助快速分析目标特征、训练与测试数据以及其他数据表征任务。

主要功能

1、快速分析报告

        仅需两行代码即可产出html分析报告,自动识别数据类型,对各字段产出分布图、相关系数矩阵图、统计指标(唯一值数量,缺失率,重复率,最小/最大/中位数/众数/均值,分位数等等)

2、目标变量分析

        可自行指定y变量,报告会增加x变量与y变量的二维分布图

3、不同数据集对比分析

        不同数据集的分布对比,如train、test分布对比 ,通过分布图、各项统计指标可以快速直观地发现变量的分布差异

安装包

pip install sweetvizpip install sweetviz -i https://pypi.tuna.tsinghua.edu.cn/simpl

github地址

    https://github.com/fbdesignpro/sweetviz

代码演示

本文是用房价预测数据集来演示sweetviz的数据eda功能

import numpy as npimport pandas as pddf=pd.read_csv('D:/文档/部分数据/最简数据挖掘/KingCountry房价预测数据/KingCountry鎴夸环棰勬祴鏁版嵁/train.csv')print(df.shape)df.head()

Image

1、快速生成数据分析报告

        仅需两行代码即可生成报告并以html文件方式输出如下,包括各字段常规数据统计指标(最大最小平均、分位数、偏度峰度等)、缺失值、分布图等等

import sweetviz as svmy_report = sv.analyze(df)my_report.show_html() # Default arguments will generate to "SWEETVIZ_REPORT.html"

Image

将鼠标放在其中一栏、右侧会有对应的详细数据分析

Image

点击报告上方ASSOCIATIONS按钮,可以展示相关系数矩阵图

Image

2、添加目标变量的分析报告

        在analyze函数中添加target_feat参数(这里写的是房价),在生成报告时目标变量栏为黑色,各变量分布图会增加y变量分布

import sweetviz as svmy_report = sv.analyze(df,target_feat='price',pairwise_analysis='on')my_report.show_html() # Default arguments will generate to "SWEETVIZ_REPORT.html"

Image

3、不同数据集对比分析

        对于train、test(或train、oot)数据集对比分析也极其便利,使用compare函数快速对各变量分布/缺失等等情况进行对比分析,分布图也可以直观看到两个数据集的分布差异

my_report = sv.compare([df.head(5000), "Training Data"], [df.tail(5000), "Test Data"], "price")my_report.show_html()

Image

4、在notebook中显示

my_report.show_notebook()

Image

 ------------------------------------------------------

调试通过的一段代码例子

import arrow
import pytest
import sweetviz as sv

class Test_New_Functions():

def test_generate_html_report(self):
df = pd.read_csv('D:/sli_downloads/1.csv')
print(df.shape)
df.head()
my_report = sv.analyze(df)
# my_report = sv.analyze(df, target_feat='left', pairwise_analysis='on')
my_report.show_html()
print("between show_html and notebook")
my_report.show_notebook()

if __name__ == '__main__':
pytest.main(['-vs', 'test_new_functions.py'])
posted on 2024-03-30 15:25  Raul2018  阅读(8)  评论(0编辑  收藏  举报