问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

探索性数据分析 EDA 之最常用的10个可视化图表案例

创作时间:
作者:
@小白创作中心

探索性数据分析 EDA 之最常用的10个可视化图表案例

引用
CSDN
1.
https://blog.csdn.net/fengshi_fengshi/article/details/142797439

探索性数据分析(EDA)是数据分析过程中非常重要的一个环节,通过可视化和统计方法帮助我们理解数据的内在结构、检查数据质量、选择数据特征,并为后续的统计检验或建模提供基础。本文将基于一个消费数据集,介绍在EDA中常用的10个可视化图表及其应用场景。

数据集简介

本文使用的数据集为tips消费数据集,包含以下属性:

  • 总金额(total_bill)
  • 消费金额(tip)
  • 是否吸烟(smoker)
  • 时间段(time)
  • 就餐人数(size)

1. 条形图

条形图用于显示分类变量的分布,通过可视化数据集中每个类别的频率或计数,可以快速看出各类别的大小。

import seaborn as sns
import matplotlib.pyplot as plt
data = pd.read_csv('tips.csv')
order = ['Thur', 'Fri', 'Sat', 'Sun']
ax = sns.countplot(x='day', hue='day', data=data, order=order)
for bar in ax.patches:
    height = bar.get_height()
    ax.text(bar.get_x() + bar.get_width() / 2, height, 
            f'{height}', ha='center', va='bottom')
plt.title('Count of Tips by Day')
plt.show()  

2. 折线图

折线图主要用于展示数据随时间或其他变量变化的趋势,通过分析现有数据的趋势,可以进行未来值的预测,帮助决策制定。

import seaborn as sns
import matplotlib.pyplot as plt
data = sns.load_dataset('tips')
data.sort_values(by='total_bill', inplace=True)
plt.plot(data['total_bill'].values, data['tip'].values)
plt.title('Line Plot of Tip Over Total Bill')
plt.show()  

3. 散点图

散点图用于展示两个变量之间的关系,可以通过观察点的分布,直观地显示两个变量之间的关系,比如正相关、负相关或无相关性。

import seaborn as sns
import matplotlib.pyplot as plt
data = sns.load_dataset('tips')
sns.scatterplot(x='total_bill', y='tip', data=data)
plt.title('Scatter Plot of Total Bill vs. Tip')
plt.show()  

4. 箱线图

箱线图用于展示数据分布特征的统计图表,显示数据中的平均值、中位数、分位数和离群值。比较多个变量的分布。可以识别扩散的数值变量,检测数据集中潜在的异常值。

import seaborn as sns
import matplotlib.pyplot as plt
data = pd.read_csv('tips.csv')
order = ['Thur', 'Fri', 'Sat', 'Sun']
sns.boxplot(x='day', y='total_bill', hue='day', data=data, order=order)
plt.title('Box Plot of Total Bill by Day')
plt.show()  

5. 密度图

密度图用于显示数据分布的可视化工具,能够清晰地展示数据的概率密度,帮助分析者直观理解数据的分布情况。

import seaborn as sns
import matplotlib.pyplot as plt
data = sns.load_dataset('tips')
sns.kdeplot(data['total_bill'], shade=True)
plt.title('Density Plot of Total Bill')
plt.show()  

6. 饼图

饼图用于展示各部分与整体之间的比例关系。

import matplotlib.pyplot as plt
labels = ['A', 'B', 'C', 'D']
sizes = [15, 30, 45, 10] 
colors = ['gold', 'lightcoral', 'lightskyblue', 'lightgreen'] 
explode = (0.1, 0, 0, 0)
plt.figure(figsize=(8, 6))
plt.pie(sizes, explode=explode, labels=labels, colors=colors,
        autopct='%1.1f%%', shadow=True, startangle=140)
plt.axis('equal')  
plt.title('饼图示例')
plt.show()  

7. 热图

热图主要用于展示数据矩阵的值,通过颜色的深浅来表示数值的大小。

import seaborn as sns
import matplotlib.pyplot as plt
data = sns.load_dataset('tips')
data = data[['total_bill', 'tip', 'size']]
correlation_matrix = data.corr()
sns.heatmap(correlation_matrix, annot=True, cmap='coolwarm')
plt.title('Correlation Heatmap')
plt.show()  

8. 小提琴图

小提琴图用于展示数据的分布情况,可以可视化一个数值变量在不同类别中的分布,非常适合比较多个组的数据分布。

import seaborn as sns
import matplotlib.pyplot as plt
tips = sns.load_dataset("tips")
sns.violinplot(x='day', hue='day', y='total_bill', data=tips)
plt.title('Violin Plot of Total Bill by Day')
plt.show()  

9. 子图

为了进行对比,可以在同一图中并排比较多个子图。

import seaborn as sns
import matplotlib.pyplot as plt
data = sns.load_dataset('tips')
plt.figure(figsize=(12, 8))
plt.subplot(2, 2, 1)
sns.scatterplot(x='total_bill', y='tip', data=data)
plt.title('Scatter Plot of Total Bill vs Tip')
plt.subplot(2, 2, 2)
sns.boxplot(x='day', y='total_bill',  hue='day', data=data)
plt.title('Box Plot of Total Bill by Day')
plt.subplot(2, 2, 3)
sns.barplot(x='day', y='total_bill',  hue='day', data=data)
plt.title('Bar Plot of Total Bill by Day')
plt.subplot(2, 2, 4)
sns.violinplot(x='day', hue='day', y='total_bill', data=tips)
plt.title('Violin Plot of Total Bill by Day')
plt.tight_layout()
plt.show()  

10. 关系图

pairplot 是 Seaborn 库中的一个非常有用的函数,用于可视化数据集中所有数值特征之间的关系。

import seaborn as sns
import matplotlib.pyplot as plt
data = sns.load_dataset('tips')
sns.pairplot(data, hue='day')
plt.suptitle('Pairplot of Numerical Variables by Day', y=1.02)
plt.show()  

通过这些可视化图表,我们可以更好地理解数据的分布、汇总统计、变量和异常值之间的关系,从而得出有价值的洞见,辅助策略决策。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号