使用Python进行数据可视化:Matplotlib与Seaborn实战

今天 4阅读

在当今的数据驱动世界中,数据可视化(Data Visualization)已成为数据分析、机器学习和商业智能等领域的核心技能之一。通过图表和图形,我们可以更直观地理解数据的分布、趋势以及潜在的模式。本文将介绍如何使用 Python 中两个最流行的数据可视化库 —— MatplotlibSeaborn 来创建各种类型的图表,并结合实际代码示例帮助读者掌握其基本用法。

环境准备

在开始之前,请确保你的环境中已经安装了以下库:

pip install matplotlib seaborn pandas numpy

我们还会使用一些示例数据集来演示绘图功能。其中一部分来自 Seaborn 自带的数据集,另一部分则使用 Pandas 生成模拟数据。

Matplotlib 简介

2.1 Matplotlib 基础

Matplotlib 是 Python 中最基础也是最强大的绘图库之一,它提供了类似于 MATLAB 的接口,支持多种图形输出格式,适用于大多数操作系统平台。

示例:绘制一个简单的折线图

import matplotlib.pyplot as pltimport numpy as np# 创建数据x = np.linspace(0, 10, 100)y = np.sin(x)# 创建画布和坐标轴plt.figure(figsize=(10, 5))plt.plot(x, y, label='sin(x)', color='blue', linestyle='--')# 添加标题和标签plt.title('Sine Wave')plt.xlabel('X axis')plt.ylabel('Y axis')# 显示图例plt.legend()# 显示图形plt.grid(True)plt.show()

这段代码展示了如何使用 Matplotlib 绘制一条正弦曲线,并设置了图形大小、标题、坐标轴标签、图例和网格线。

2.2 子图绘制

有时候我们需要在一个窗口中显示多个图表,可以使用 subplots 方法:

fig, axes = plt.subplots(2, 2, figsize=(12, 8))axes[0, 0].plot(x, np.sin(x), 'r')axes[0, 0].set_title('Sine')axes[0, 1].plot(x, np.cos(x), 'g')axes[0, 1].set_title('Cosine')axes[1, 0].plot(x, np.tan(x), 'b')axes[1, 0].set_title('Tangent')axes[1, 1].plot(x, x**2, 'k')axes[1, 1].set_title('Quadratic')plt.tight_layout()plt.show()

Seaborn 进阶可视化

Seaborn 是基于 Matplotlib 的高级绘图库,专注于统计图形,能以更简洁的方式实现美观的图表。

3.1 加载内置数据集

Seaborn 提供了一些经典的数据集用于练习,例如 tipsirisflights 等。

import seaborn as sns# 加载小费数据集tips = sns.load_dataset("tips")# 查看前几行数据print(tips.head())

输出结果如下:

   total_bill   tip     sex smoker  day    time  size0       16.99  1.01  Female     No  Sun  Dinner     21       10.34  1.66    Male     No  Sun  Dinner     32       21.01  3.50    Male     No  Sun  Dinner     33       23.68  3.31    Male     No  Sun  Dinner     24       24.59  3.61  Female     No  Sun  Dinner     4

3.2 分类图:箱形图与条形图

plt.figure(figsize=(10, 6))sns.barplot(x="day", y="total_bill", data=tips, ci=None)  # ci=None 表示不显示置信区间plt.title("Average Total Bill by Day")plt.show()

该图展示了每天平均消费金额的对比情况。

plt.figure(figsize=(10, 6))sns.boxplot(x="day", y="total_bill", data=tips)plt.title("Total Bill Distribution by Day")plt.show()

箱形图可以帮助我们了解不同星期几的小费分布情况,包括异常值。

3.3 关系图:散点图与回归图

plt.figure(figsize=(10, 6))sns.scatterplot(x="total_bill", y="tip", data=tips, hue="sex", style="smoker")plt.title("Tip vs Total Bill")plt.show()

这个散点图根据性别和是否吸烟对数据进行了颜色和形状的区分。

plt.figure(figsize=(10, 6))sns.lmplot(x="total_bill", y="tip", data=tips, hue="smoker", height=5)plt.title("Regression of Tip on Total Bill")plt.show()

这是一张带有回归线的散点图,适合展示变量之间的线性关系。

3.4 热力图与相关性分析

热力图常用于展示多变量之间的相关性。

# 加载 flights 数据集并转换为透视表flights = sns.load_dataset("flights")flights_pivot = flights.pivot_table(index="month", columns="year", values="passengers")plt.figure(figsize=(12, 8))sns.heatmap(flights_pivot, annot=True, fmt="d", cmap="YlGnBu")plt.title("Passenger Count Heatmap")plt.show()

这张热力图清晰地展示了每个月份的乘客数量变化情况。

实战项目:销售数据分析

接下来我们将使用 Pandas 创建一个模拟的销售数据集,并使用 Matplotlib 和 Seaborn 对其进行可视化分析。

4.1 创建模拟数据

import pandas as pdimport numpy as np# 模拟3个月的销售数据np.random.seed(42)months = ['Jan', 'Feb', 'Mar']products = ['A', 'B', 'C']data = {    "Month": np.repeat(months, len(products)),    "Product": products * len(months),    "Sales": np.random.randint(100, 500, size=len(months)*len(products))}df_sales = pd.DataFrame(data)print(df_sales)

输出示例:

   Month Product  Sales0    Jan       A    1521    Jan       B    4372    Jan       C    3733    Feb       A    1224    Feb       B    2955    Feb       C    3706    Mar       A    4247    Mar       B    1488    Mar       C    390

4.2 销售趋势可视化

plt.figure(figsize=(10, 6))sns.barplot(x="Month", y="Sales", hue="Product", data=df_sales)plt.title("Monthly Sales by Product")plt.legend(title="Product")plt.show()

这个分组柱状图展示了每个产品在不同月份的销售表现。

4.3 折线图展示销售走势

plt.figure(figsize=(10, 6))sns.lineplot(x="Month", y="Sales", hue="Product", data=df_sales, marker='o')plt.title("Sales Trend Over Time")plt.legend(title="Product")plt.grid(True)plt.show()

折线图更适合观察销售趋势的变化。

总结

本文介绍了如何使用 Python 中的 MatplotlibSeaborn 库进行数据可视化。从基础的折线图、柱状图到高级的热力图、回归图,我们通过多个实例展示了这些工具的强大功能。无论是学术研究、企业分析还是个人项目,掌握数据可视化技术都将极大地提升你理解和表达数据的能力。

如果你希望进一步深入学习,可以尝试以下方向:

使用 Plotly 或 Altair 实现交互式可视化;结合 Jupyter Notebook 编写可执行的报告文档;利用 Dash 构建基于 Web 的数据仪表盘。

参考资料:

Matplotlib 官方文档Seaborn 官方文档Pandas 文档

如需完整代码文件或运行环境配置建议,请留言或私信联系。

免责声明:本文来自网站作者,不代表CIUIC的观点和立场,本站所发布的一切资源仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。客服邮箱:ciuic@ciuic.com

目录[+]

您是本站第23621名访客 今日有24篇新文章

微信号复制成功

打开微信,点击右上角"+"号,添加朋友,粘贴微信号,搜索即可!