当前位置: 首页 > news >正文

Python Pandas(11):Pandas 数据可视化

        数据可视化是数据分析中的重要环节,它帮助我们更好地理解和解释数据的模式、趋势和关系。通过图形、图表等形式,数据可视化将复杂的数字和统计信息转化为易于理解的图像,从而便于做出决策。Pandas 提供了与 Matplotlib 和 Seaborn 等可视化库的集成,使得数据的可视化变得简单而高效。在 Pandas 中,数据可视化功能主要通过 DataFrame.plot() 和 Series.plot() 方法实现,这些方法实际上是对 Matplotlib 库的封装,简化了图表的绘制过程。

图表类型描述方法
折线图展示数据随时间或其他连续变量的变化趋势df.plot(kind='line')
柱状图比较不同类别的数据df.plot(kind='bar')
水平柱状图比较不同类别的数据,但柱子水平排列df.plot(kind='barh')
直方图显示数据的分布df.plot(kind='hist')
散点图展示两个数值型变量之间的关系df.plot(kind='scatter', x='col1', y='col2')
箱线图显示数据分布,包括中位数、四分位数等df.plot(kind='box')
密度图展示数据的密度分布df.plot(kind='kde')
饼图显示不同部分在整体中的占比df.plot(kind='pie')
区域图展示数据的累计数值df.plot(kind='area')

1 Pandas 数据可视化概述

        Pandas 提供的 plot() 方法可以轻松地绘制不同类型的图表,包括折线图、柱状图、直方图、散点图等。plot() 方法有很多参数,可以定制图表的样式、颜色、标签等。

1.1  基本的 plot() 方法

参数说明
kind图表类型,支持 'line''bar''barh''hist''box''kde''density''area''pie' 等类型
x设置 x 轴的数据列
y设置 y 轴的数据列
title图表的标题
xlabelx 轴的标签
ylabely 轴的标签
color设置图表的颜色
figsize设置图表的大小(宽, 高)
legend是否显示图例

1.2 常用图表类型

图表类型描述常用用法
折线图用于显示随时间变化的数据趋势df.plot(kind='line')
柱状图用于显示类别之间的比较数据df.plot(kind='bar')
水平柱状图与柱状图类似,但柱子是水平的df.plot(kind='barh')
直方图用于显示数据的分布(频率分布)df.plot(kind='hist')
散点图用于显示两个数值变量之间的关系df.plot(kind='scatter', x='col1', y='col2')
箱线图用于显示数据的分布、异常值及四分位数df.plot(kind='box')
密度图用于显示数据的密度分布df.plot(kind='kde')
饼图用于显示各部分占总体的比例df.plot(kind='pie')
区域图用于显示累计数值的图表(类似于折线图,但填充了颜色)df.plot(kind='area')

2 数据可视化示例

2.1 折线图 (Line Plot)

        折线图通常用于展示数据随时间的变化趋势。

import pandas as pd
import matplotlib.pyplot as plt

# 示例数据
data = {'Year': [2015, 2016, 2017, 2018, 2019, 2020],
        'Sales': [100, 150, 200, 250, 300, 350]}
df = pd.DataFrame(data)

# 绘制折线图
df.plot(kind='line', x='Year', y='Sales', title='Sales Over Years', xlabel='Year', ylabel='Sales', figsize=(10, 6))
plt.show()

2.2 柱状图 (Bar Chart)

        柱状图用于展示不同类别之间的比较,尤其适用于离散数据。

import pandas as pd
import matplotlib.pyplot as plt

# 示例数据
data = {'Category': ['A', 'B', 'C', 'D'],
        'Value': [10, 15, 7, 12]}
df = pd.DataFrame(data)

# 绘制柱状图
df.plot(kind='bar', x='Category', y='Value', title='Category Values', xlabel='Category', ylabel='Value', figsize=(8, 5))
plt.show()

2.3 散点图 (Scatter Plot)

        散点图用于展示两个数值变量之间的关系。

import pandas as pd
import matplotlib.pyplot as plt

# 示例数据
data = {'Height': [150, 160, 170, 180, 190],
        'Weight': [50, 60, 70, 80, 90]}
df = pd.DataFrame(data)

# 绘制散点图
df.plot(kind='scatter', x='Height', y='Weight', title='Height vs Weight', xlabel='Height (cm)', ylabel='Weight (kg)',
        figsize=(8, 5))
plt.show()

2.4 直方图 (Histogram)

        直方图用于显示数据的分布,特别是用于描述数据的频率分布。

import pandas as pd
import matplotlib.pyplot as plt

# 示例数据
data = {'Scores': [55, 70, 85, 90, 60, 75, 80, 95, 100, 65]}
df = pd.DataFrame(data)

# 绘制直方图
df.plot(kind='hist', y='Scores', bins=5, title='Scores Distribution', xlabel='Scores', figsize=(8, 5))
plt.show()

2.5 箱线图 (Box Plot)

        箱线图用于展示数据的分布情况,包括中位数、四分位数以及异常值。

import pandas as pd
import matplotlib.pyplot as plt

# 示例数据
data = {'Scores': [55, 70, 85, 90, 60, 75, 80, 95, 100, 65]}
df = pd.DataFrame(data)

# 绘制箱线图
df.plot(kind='box', title='Scores Boxplot', ylabel='Scores', figsize=(8, 5))
plt.show()

2.6 饼图 (Pie Chart)

        饼图用于展示各部分占总体的比例。

import pandas as pd
import matplotlib.pyplot as plt

# 示例数据
data = {'Category': ['A', 'B', 'C', 'D'],
        'Value': [10, 15, 7, 12]}
df = pd.DataFrame(data)

# 绘制饼图
df.plot(kind='pie', y='Value', labels=df['Category'], autopct='%1.1f%%', title='Category Proportions', figsize=(8, 5))
plt.show()

3 Seaborn 可视化

        Seaborn 是基于 Matplotlib 的高级数据可视化库,提供了更漂亮、更易用的图表和更丰富的统计图表类型。在 Pandas 中,可以直接与 Seaborn 配合使用。

3.1 热力图(Heatmap)

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

# 示例数据
data = {'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]}
df = pd.DataFrame(data)

# 绘制热力图
sns.heatmap(df.corr(), annot=True, cmap='coolwarm')
plt.show()

3.2 散点图矩阵

        数据集中所有数值特征之间的散点图矩阵:

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

# 示例数据
data = {'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]}
df = pd.DataFrame(data)

sns.pairplot(df)
plt.show()

4 Matplotlib 高级自定义

        除了使用 Pandas 提供的 plot() 方法外,Matplotlib 还可以提供更灵活的自定义功能,例如添加标题、标签、设置图表风格、调整坐标轴等。

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

# 示例数据
data = {'Year': [2015, 2016, 2017, 2018, 2019],
        'Sales': [100, 150, 200, 250, 300]}
df = pd.DataFrame(data)

# 绘制折线图
plt.plot(df['Year'], df['Sales'], color='blue', marker='o')

# 自定义
plt.title('Sales Over Years')
plt.xlabel('Year')
plt.ylabel('Sales')
plt.grid(True)

# 显示
plt.show()

相关文章:

  • shell脚本自动安装MySQL8
  • 使用Redis实现分布式锁,基于原本单体系统进行业务改造
  • python-leetcode 31.K个一组翻转链表
  • Selenium常用自动化函数
  • Jenkins 通过 Execute Shell 执行 shell 脚本 七
  • 读取本地excel并生成map,key为第一列,value为第二列
  • leetcode:171. Excel 表列序号(python3解法)
  • 深入解析 STM32 GPIO:结构、配置与应用实践
  • DeepSeek 助力 Vue 开发:打造丝滑的通知栏(Notification Bar)
  • 网络模型分层与对比
  • PostgreSQL 备库的延迟问题
  • 哪吒闹海!SCI算法+分解组合+四模型原创对比首发!SGMD-FATA-Transformer-LSTM多变量时序预测
  • 6.appender
  • MySQL、MariaDB 和 TDSQL 的区别
  • 10 FastAPI 的自动文档
  • Golang的图形编程应用案例
  • github不翻墙就可以访问
  • 数据结构——【二叉树模版】
  • vue项目使用vite和vue-router实现history路由模式空白页以及404问题
  • fetch() 与 XMLHttpRequest 的差异
  • 下辖各区密集“联手”,南京在下一盘什么样的棋?
  • 【社论】城市更新,始终以人为核心
  • “朱雀玄武敕令”改名“周乔治华盛顿”?警方称未通过审核
  • 浙江省台州市政协原副主席林虹被“双开”
  • 广西等地旱情缓解,水利部针对甘肃启动干旱防御Ⅳ级响应
  • 玉渊谭天丨卢拉谈美国降低对华关税:中国的行动捍卫了主权