SweetViz是一个开放源代码Python库,主要用于生成精美的高密度可视化文件,启动探索性数据分析(EDA),输出为完全独立的HTML应用程序。
探索性数据分析(EDA)是分析和总结数据集主要特征的过程,通常旨在了解数据中的潜在模式,关系和趋势。
SweetViz库的特点
主要包括以下几个方面:
- 快速生成可视化图表:通过仅两行代码或更少,SweetViz可以快速生成美观且高密度的可视化图表,便于进行探索性数据分析(EDA)。
- 目标值分析:帮助用户分析目标特征,例如如何将目标值(布尔值或数字值)与其他特征关联起来。
- 可视化和比较数据集:支持对不同的数据集(例如训练与测试数据)进行可视化及比较分析,也可以对同个数据集的不同类别进行比较。
- 混合型关联分析:无缝集成了数字(皮尔森相关性)、分类(不确定性系数)和分类数字(相关性)数据类型的关联,以提供所有数据类型的最大信息。
- 独立HTML应用程序:SweetViz的输出是一个完全独立的HTML应用程序,用户可以轻松地分享和查看生成的图表和报告。
总的来说,SweetViz库旨在为用户提供一种快速、简便的方法来进行数据分析和可视化,帮助用户更好地理解数据和特征之间的关系。
安装
首先,我们将使用下面给出的pip install命令安装SweetViz库:
pip install sweetviz
导入必要的库
# import the required libraries
import pandas as pd
import sweetviz as sv
from sklearn.model_selection import train_test_split
print("SweetViz Version : {}".format(sv.__version__))
输出
SweetViz Version : 2.3.1
加载数据集
df = pd.read_csv('california_housing.csv')
df.info()
输出
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 3000 entries, 0 to 2999
Data columns (total 9 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 longitude 3000 non-null float64
1 latitude 3000 non-null float64
2 housing_median_age 3000 non-null float64
3 total_rooms 3000 non-null float64
4 total_bedrooms 3000 non-null float64
5 population 3000 non-null float64
6 households 3000 non-null float64
7 median_income 3000 non-null float64
8 median_house_value 3000 non-null float64
dtypes: float64(9)
memory usage: 211.1 KB
生成分析报告
为了生成报告,我们有3个函数:
- analyze() 用于单个数据集
- compare() 用于比较2个数据集(例如,Test与Train)
- compare_intra() 用于比较一个数据集中某个选项的数据集的不同
这里,我们有一个单一的数据集,所以在这个时候我们将使用analyze()函数;
report = sv.analyze([df, 'Train'], target_feat='median_house_value')
一旦我们创建了我们的报告对象,然后简单地将其传递给两个’show’函数之一:
show_html()或show_ notebook()
show_html()函数将在给定的文件路径下创建并保存一个HTML报告(HTML页面),
show_notebook()函数将报表嵌入到Notebook中。
# show the report in a form of an HTML file
report.show_html('Report.html')
比较训练和测试数据集
# Split the dataset
train_df, test_df = train_test_split(df, train_size=0.75)
# compare the dataset
compare = sv.compare(source=train_df, compare=test_df, target_feat="median_house_value")
# Show the result
compare.show_html('Compare.html')
将鼠标悬停在报告左侧导航栏中的“Associations”按钮上,将在报告左侧显示关联图。关联图显示数据集中所有特征对之间的成对关系,每个点表示两个特征的唯一组合。点的大小和颜色表示两个特征之间关联的强度和方向,较大和较暗的点表示较强的正关联,较小和较亮的点表示较弱或负关联。
比较一个数据集中两个不同子群
# import the necessary libraries
import sweetviz as sv
from sklearn.datasets import load_breast_cancer
# Load the dataset
cancer = load_breast_cancer(as_frame=True)
# dataframe
df = cancer.frame
# Define the FeatureConfig object to force
# the target feature to be numerical
my_feature_config = sv.FeatureConfig(force_num=['target'])
# Create a boolean array to use as the grouping condition
condition_series = df['target'] == 0
# Analyze the dataset with the specified FeatureConfig object
# and grouping condition
my_report = sv.compare_intra(df,
condition_series,
['malignant', 'benign'],
feat_cfg=my_feature_config,
target_feat='target')
# Generate and display the report
my_report.show_html()