【Python数据分析与可视化】:使用【Matplotlib】实现销售数据的全面分析 ——【Matplotlib】数模学习

目录

安装Matplotlib

1.打开PyCharm:

2.打开终端:

3.安装Matplotlib:

4.确认安装:

导入Matplotlib

创建简单的折线图

代码解析:

创建子图

代码解析:

创建柱状图

代码解析:

创建散点图

代码解析:

创建直方图

代码解析:

多图形组合

代码解析:

保存图形

代码解析:

结论

实战案例:数据分析与可视化

数据集说明

[1. 导入库和数据准备](#1. 导入库和数据准备)

[2. 折线图:展示销售趋势](#2. 折线图:展示销售趋势)

代码解析:

[3. 柱状图:展示销售和费用比较](#3. 柱状图:展示销售和费用比较)

代码解析:

[4. 散点图:展示客户数量与销售额关系](#4. 散点图:展示客户数量与销售额关系)

代码解析:

[5. 直方图:展示销售额分布](#5. 直方图:展示销售额分布)

代码解析:

[6. 组合图:展示多种数据](#6. 组合图:展示多种数据)

代码解析:


专栏:数学建模学习笔记

pycharm专业版免费激活教程见资源

python相关库的安装:pandas,numpy,matplotlib,statsmodels

总篇:【数学建模】---【新手小白到国奖选手】---【学习路线】

第一卷:【数学建模】---【Python库】---【Numpy】---【学习】

第二卷:【数学建模】------【python库】------【Pandas学习】

本章属于第三卷Matplotlib的学习

安装Matplotlib

在开始使用Matplotlib之前,必须先在你的Python环境中安装它。PyCharm提供了一种方便的方法来安装第三方库。下面是如何在PyCharm中安装Matplotlib的详细步骤:

1.打开PyCharm

  • 打开PyCharm并创建或打开一个现有的项目。

2.打开终端

  • 点击右下角的Terminal标签以打开终端窗口。

3.安装Matplotlib

在终端中输入以下命令并按Enter键:

复制代码
pip install matplotlib

4.确认安装

复制代码
import matplotlib.pyplot as plt

你可以通过再次在终端中运行以下命令来确认安装是否成功:

复制代码
pip show matplotlib

导入Matplotlib

安装成功后,你需要在你的Python脚本中导入Matplotlib库。通常我们会使用以下导入语句:

  • matplotlib.pyplot 是Matplotlib库中的一个子模块,它提供了类似于MATLAB的绘图接口。
  • plt 是一个常见的缩写,用于简化代码书写。

创建简单的折线图

折线图是一种显示数据变化趋势的基本图表类型。以下是一个创建简单折线图的详细步骤和代码解析:

复制代码
import matplotlib.pyplot as plt

# 数据
x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 7, 11]

# 创建图形
plt.plot(x, y)

# 添加标题和标签
plt.title('Simple Line Plot')
plt.xlabel('X Axis')
plt.ylabel('Y Axis')

# 显示图形
plt.show()

代码解析:

  1. 导入库 :使用import matplotlib.pyplot as plt导入Matplotlib库。
  2. 数据准备 :创建两个列表xy,分别表示横轴和纵轴的数据点。
  3. 创建图形 :使用plt.plot(x, y)方法绘制折线图。plot方法的第一个参数是x轴数据,第二个参数是y轴数据。
  4. 添加标题和标签 :使用plt.title方法添加图形的标题,使用plt.xlabelplt.ylabel方法为横轴和纵轴添加标签。
  5. 显示图形 :使用plt.show()方法显示图形。

创建子图

子图用于在同一个图形窗口中展示多个图表。以下是一个创建两个子图的详细示例:

复制代码
import matplotlib.pyplot as plt

# 数据
x = [1, 2, 3, 4, 5]
y1 = [2, 3, 5, 7, 11]
y2 = [1, 4, 6, 8, 10]

# 创建子图
fig, (ax1, ax2) = plt.subplots(2, 1)

# 第一个子图
ax1.plot(x, y1)
ax1.set_title('First Subplot')

# 第二个子图
ax2.plot(x, y2)
ax2.set_title('Second Subplot')

# 调整布局
plt.tight_layout()

# 显示图形
plt.show()

代码解析:

  1. 导入库 :使用import matplotlib.pyplot as plt导入Matplotlib库。
  2. 数据准备 :创建三个列表xy1y2,分别表示两个子图的x轴和y轴数据。
  3. 创建子图 :使用plt.subplots方法创建一个包含两个子图的图形。plt.subplots(2, 1)表示创建一个两行一列的子图布局,fig是图形对象,ax1ax2是两个子图对象。
  4. 绘制子图 :分别使用ax1.plotax2.plot方法绘制两个子图。
  5. 添加标题 :分别使用ax1.set_titleax2.set_title方法为两个子图添加标题。
  6. 调整布局 :使用plt.tight_layout()方法自动调整子图布局,使其不重叠。
  7. 显示图形 :使用plt.show()方法显示图形。

创建柱状图

柱状图用于展示分类数据的分布。以下是一个创建简单柱状图的详细示例:

复制代码
import matplotlib.pyplot as plt

# 数据
categories = ['A', 'B', 'C', 'D', 'E']
values = [5, 7, 3, 8, 6]

# 创建柱状图
plt.bar(categories, values)

# 添加标题和标签
plt.title('Simple Bar Chart')
plt.xlabel('Categories')
plt.ylabel('Values')

# 显示图形
plt.show()

代码解析:

  1. 导入库 :使用import matplotlib.pyplot as plt导入Matplotlib库。
  2. 数据准备 :创建两个列表categoriesvalues,分别表示分类和对应的值。
  3. 创建柱状图 :使用plt.bar(categories, values)方法创建柱状图。第一个参数是分类,第二个参数是对应的值。
  4. 添加标题和标签 :使用plt.title方法添加图形的标题,使用plt.xlabelplt.ylabel方法为横轴和纵轴添加标签。
  5. 显示图形 :使用plt.show()方法显示图形。

创建散点图

散点图用于显示两个变量之间的关系。以下是一个创建简单散点图的详细示例:

复制代码
import matplotlib.pyplot as plt

# 数据
x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 7, 11]

# 创建散点图
plt.scatter(x, y)

# 添加标题和标签
plt.title('Simple Scatter Plot')
plt.xlabel('X Axis')
plt.ylabel('Y Axis')

# 显示图形
plt.show()

代码解析:

  1. 导入库 :使用import matplotlib.pyplot as plt导入Matplotlib库。
  2. 数据准备 :创建两个列表xy,分别表示横轴和纵轴的数据点。
  3. 创建散点图 :使用plt.scatter(x, y)方法创建散点图。scatter方法的第一个参数是x轴数据,第二个参数是y轴数据。
  4. 添加标题和标签 :使用plt.title方法添加图形的标题,使用plt.xlabelplt.ylabel方法为横轴和纵轴添加标签。
  5. 显示图形 :使用plt.show()方法显示图形。

创建直方图

直方图用于展示数据的频率分布。以下是一个创建简单直方图的详细示例:

复制代码
import matplotlib.pyplot as plt

# 数据
data = [1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 5]

# 创建直方图
plt.hist(data, bins=5, edgecolor='black')

# 添加标题和标签
plt.title('Simple Histogram')
plt.xlabel('Value')
plt.ylabel('Frequency')

# 显示图形
plt.show()

代码解析:

  1. 导入库 :使用import matplotlib.pyplot as plt导入Matplotlib库。
  2. 数据准备 :创建一个列表data,表示数据样本。
  3. 创建直方图 :使用plt.hist(data, bins=5, edgecolor='black')方法创建直方图。hist方法的第一个参数是数据样本,bins参数表示直方图的柱子数量,edgecolor参数设置柱子的边框颜色。
  4. 添加标题和标签 :使用plt.title方法添加图形的标题,使用plt.xlabelplt.ylabel方法为横轴和纵轴添加标签。
  5. 显示图形 :使用plt.show()方法显示图形。

多图形组合

在同一个图形中组合多种不同类型的图形可以让你更全面地展示数据。以下是一个组合折线图和散点图的详细示例:

复制代码
import matplotlib.pyplot as plt

# 数据
x = [1, 2, 3, 4, 5]
y1 = [1, 4, 9, 16, 25]
y2 = [1, 3, 6, 10, 15]

# 创建图形和子图
fig, ax1 = plt.subplots()

# 绘制第一个数据集
ax1.plot(x, y1, 'g-')  # 绿色实线
ax1.set_xlabel('X data')
ax1.set_ylabel('Y1 data', color='g')

# 创建第二个Y轴
ax2 = ax1.twinx()
ax2.plot(x, y2, 'b--')  # 蓝色虚线
ax2.set_ylabel('Y2 data', color='b')

# 添加标题
plt.title('Multiple Data Sets')

# 显示图形
plt.show()

代码解析:

  1. 导入库 :使用import matplotlib.pyplot as plt导入Matplotlib库。
  2. 数据准备 :创建三个列表xy1y2,分别表示两个数据集的x轴和y轴数据。
  3. 创建图形和子图 :使用plt.subplots()方法创建图形和子图对象。fig是图形对象,ax1是第一个子图对象。
  4. 绘制第一个数据集 :使用ax1.plot(x, y1, 'g-')方法绘制第一个数据集。参数'g-'表示绿色实线。
  5. 设置第一个Y轴标签 :使用ax1.set_xlabelax1.set_ylabel方法设置第一个子图的x轴和y轴标签,color参数设置标签颜色。
  6. 创建第二个Y轴 :使用ax1.twinx()方法创建第二个Y轴。
  7. 绘制第二个数据集 :使用ax2.plot(x, y2, 'b--')方法绘制第二个数据集。参数'b--'表示蓝色虚线。
  8. 设置第二个Y轴标签 :使用ax2.set_ylabel方法设置第二个子图的y轴标签,color参数设置标签颜色。
  9. 添加标题 :使用plt.title方法为整个图形添加标题。
  10. 显示图形 :使用plt.show()方法显示图形。

保存图形

创建图形后,你可能需要将其保存到文件中。Matplotlib允许你将图形保存为多种格式,包括PNG、PDF、SVG等。以下是一个保存图形为PNG文件的详细示例:

复制代码
import matplotlib.pyplot as plt

# 数据
x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 7, 11]

# 创建图形
plt.plot(x, y)

# 添加标题和标签
plt.title('Simple Line Plot')
plt.xlabel('X Axis')
plt.ylabel('Y Axis')

# 保存图形
plt.savefig('line_plot.png')

# 显示图形
plt.show()

代码解析:

  1. 导入库 :使用import matplotlib.pyplot as plt导入Matplotlib库。
  2. 数据准备 :创建两个列表xy,分别表示横轴和纵轴的数据点。
  3. 创建图形 :使用plt.plot(x, y)方法绘制折线图。
  4. 添加标题和标签 :使用plt.title方法添加图形的标题,使用plt.xlabelplt.ylabel方法为横轴和纵轴添加标签。
  5. 保存图形 :使用plt.savefig('line_plot.png')方法将图形保存为PNG文件。你可以根据需要更改文件名和文件格式,例如line_plot.pdfline_plot.svg
  6. 显示图形 :使用plt.show()方法显示图形。

结论

Matplotlib是一个功能强大且灵活的Python库,非常适合用于数学建模和数据可视化。通过以上详细的示例和解析,你可以掌握Matplotlib的基本用法,并在实际项目中应用这些技能进行数据分析和展示。随着你对Matplotlib的深入了解,你可以进一步探索更多高级功能,如自定义图形样式、添加图例、调整图形布局等,使你的图形更具专业性和表现力。

实战案例:数据分析与可视化

为了更好地理解和应用Matplotlib,我们将通过一个实际案例来展示如何使用Matplotlib进行数据分析与可视化。我们将分析一个虚构的数据集,该数据集包含某家公司在不同月份的销售数据,并展示如何绘制折线图、柱状图、散点图、直方图和组合图。

数据集说明

我们假设有一个包含以下信息的数据集:

  • month: 月份(1月到12月)
  • sales: 销售额(单位:千元)
  • expenses: 费用(单位:千元)
  • customers: 客户数量

数据如下:

复制代码
data = {
    'month': ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
    'sales': [20, 34, 30, 35, 27, 25, 30, 32, 31, 29, 28, 35],
    'expenses': [12, 17, 18, 23, 22, 19, 20, 21, 19, 20, 18, 22],
    'customers': [200, 240, 230, 250, 220, 210, 230, 240, 235, 220, 215, 250]
}

1. 导入库和数据准备

首先,导入必要的库并准备数据:

复制代码
import matplotlib.pyplot as plt

data = {
    'month': ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
    'sales': [20, 34, 30, 35, 27, 25, 30, 32, 31, 29, 28, 35],
    'expenses': [12, 17, 18, 23, 22, 19, 20, 21, 19, 20, 18, 22],
    'customers': [200, 240, 230, 250, 220, 210, 230, 240, 235, 220, 215, 250]
}

2. 折线图:展示销售趋势

折线图适合用来展示数据随时间的变化趋势。我们来绘制销售额随月份变化的折线图:

复制代码
plt.plot(data['month'], data['sales'], marker='o', linestyle='-', color='b')
plt.title('Monthly Sales')
plt.xlabel('Month')
plt.ylabel('Sales (in thousands)')
plt.grid(True)
plt.show()

代码解析:

  1. 导入库 :使用import matplotlib.pyplot as plt导入Matplotlib库。
  2. 准备数据:使用字典形式准备数据。
  3. 绘制折线图 :使用plt.plot方法绘制折线图,marker='o'表示数据点使用圆形标记,linestyle='-'表示实线,color='b'表示蓝色。
  4. 添加标题和标签 :使用plt.titleplt.xlabelplt.ylabel方法添加图形标题和轴标签。
  5. 显示网格 :使用plt.grid(True)方法显示网格线。
  6. 显示图形 :使用plt.show()方法显示图形。

3. 柱状图:展示销售和费用比较

柱状图适合用来比较不同类别的数据。我们来绘制销售额和费用的柱状图:

复制代码
import numpy as np

# 设置柱的宽度和位置
bar_width = 0.35
index = np.arange(len(data['month']))

# 创建柱状图
plt.bar(index, data['sales'], bar_width, label='Sales', color='b')
plt.bar(index + bar_width, data['expenses'], bar_width, label='Expenses', color='r')

# 添加标题和标签
plt.xlabel('Month')
plt.ylabel('Amount (in thousands)')
plt.title('Sales vs Expenses')
plt.xticks(index + bar_width / 2, data['month'])
plt.legend()

# 显示图形
plt.show()

代码解析:

  1. 导入库 :除了matplotlib.pyplot,还需要导入numpy来处理数组和索引。
  2. 设置柱的宽度和位置 :使用bar_width设置每个柱子的宽度,使用np.arange创建一个数组表示每个柱子的x轴位置。
  3. 创建柱状图 :使用plt.bar方法绘制柱状图,第一个参数是x轴位置,第二个参数是数据值,bar_width设置柱子的宽度,label设置图例标签,color设置颜色。
  4. 添加标题和标签 :使用plt.xlabelplt.ylabelplt.title方法添加图形标题和轴标签。
  5. 设置x轴刻度 :使用plt.xticks方法设置x轴刻度的位置和标签。
  6. 添加图例 :使用plt.legend()方法显示图例。
  7. 显示图形 :使用plt.show()方法显示图形。

4. 散点图:展示客户数量与销售额关系

散点图适合用来展示两个变量之间的关系。我们来绘制客户数量与销售额的散点图:

复制代码
plt.scatter(data['customers'], data['sales'], color='g')
plt.title('Customers vs Sales')
plt.xlabel('Number of Customers')
plt.ylabel('Sales (in thousands)')
plt.grid(True)
plt.show()

代码解析:

  1. 导入库 :使用import matplotlib.pyplot as plt导入Matplotlib库。
  2. 准备数据:使用字典形式准备数据。
  3. 绘制散点图 :使用plt.scatter方法绘制散点图,第一个参数是x轴数据,第二个参数是y轴数据,color参数设置数据点颜色。
  4. 添加标题和标签 :使用plt.titleplt.xlabelplt.ylabel方法添加图形标题和轴标签。
  5. 显示网格 :使用plt.grid(True)方法显示网格线。
  6. 显示图形 :使用plt.show()方法显示图形。

5. 直方图:展示销售额分布

直方图适合用来展示数据的频率分布。我们来绘制销售额的直方图:

复制代码
plt.hist(data['sales'], bins=5, edgecolor='black')
plt.title('Sales Distribution')
plt.xlabel('Sales (in thousands)')
plt.ylabel('Frequency')
plt.grid(True)
plt.show()

代码解析:

  1. 导入库 :使用import matplotlib.pyplot as plt导入Matplotlib库。
  2. 准备数据:使用字典形式准备数据。
  3. 绘制直方图 :使用plt.hist方法绘制直方图,第一个参数是数据样本,bins参数设置直方图的柱子数量,edgecolor参数设置柱子的边框颜色。
  4. 添加标题和标签 :使用plt.titleplt.xlabelplt.ylabel方法添加图形标题和轴标签。
  5. 显示网格 :使用plt.grid(True)方法显示网格线。
  6. 显示图形 :使用plt.show()方法显示图形。

6. 组合图:展示多种数据

组合图可以同时展示多种类型的数据。我们来创建一个组合图,包含折线图和柱状图:

复制代码
fig, ax1 = plt.subplots()

# 折线图:销售额
ax1.plot(data['month'], data['sales'], 'b-', marker='o', label='Sales')
ax1.set_xlabel('Month')
ax1.set_ylabel('Sales (in thousands)', color='b')
ax1.tick_params('y', colors='b')

# 创建第二个Y轴
ax2 = ax1.twinx()
ax2.bar(data['month'], data['expenses'], alpha=0.6, color='r', label='Expenses')
ax2.set_ylabel('Expenses (in thousands)', color='r')
ax2.tick_params('y', colors='r')

# 添加标题
plt.title('Monthly Sales and Expenses')

# 添加图例
fig.tight_layout()
fig.legend(loc='upper left', bbox_to_anchor=(0.1,0.9))

# 显示图形
plt.show()

代码解析:

  1. 导入库 :使用import matplotlib.pyplot as plt导入Matplotlib库。
  2. 准备数据:使用字典形式准备数据。
  3. 创建图形和子图 :使用plt.subplots()方法创建图形和子图对象。fig是图形对象,ax1是第一个子图对象。
  4. 绘制折线图 :使用ax1.plot方法绘制折线图,设置折线图颜色和标记样式。
  5. 设置第一个Y轴标签 :使用ax1.set_xlabelax1.set_ylabel方法设置第一个子图的x轴和y轴标签,color参数设置标签颜色。
  6. 创建第二个Y轴 :使用ax1.twinx()方法创建第二个Y轴。
  7. 绘制柱状图 :使用ax2.bar方法绘制柱状图,设置柱状图颜色和透明度。
  8. 设置第二个Y轴标签 :使用ax2.set_ylabel方法设置第二个子图的y轴标签,color参数设置标签颜色。
  9. 添加标题 :使用plt.title方法为整个图形添加标题。
  10. 调整布局和添加图例 :使用fig.tight_layout()方法自动调整布局,使用fig.legend方法添加图例,设置图例的位置。
  11. 显示图形 :使用plt.show()方法显示图形。
相关推荐
databook13 小时前
Manim实现闪光轨迹特效
后端·python·动效
Juchecar14 小时前
解惑:NumPy 中 ndarray.ndim 到底是什么?
python
用户83562907805114 小时前
Python 删除 Excel 工作表中的空白行列
后端·python
Json_14 小时前
使用python-fastApi框架开发一个学校宿舍管理系统-前后端分离项目
后端·python·fastapi
数据智能老司机21 小时前
精通 Python 设计模式——分布式系统模式
python·设计模式·架构
数据智能老司机1 天前
精通 Python 设计模式——并发与异步模式
python·设计模式·编程语言
数据智能老司机1 天前
精通 Python 设计模式——测试模式
python·设计模式·架构
数据智能老司机1 天前
精通 Python 设计模式——性能模式
python·设计模式·架构
c8i1 天前
drf初步梳理
python·django
每日AI新事件1 天前
python的异步函数
python