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

5.数据分析Matplotlib(数据可视化)

1.折线图(趋势数据分析)

# 导入必要的库
import pandas as pd  # 用于数据处理与表格操作
import matplotlib.pyplot as plt  # 用于数据可视化,绘制图表# 创建数据:以字典形式定义每个月的三个产品的销量
data = {'月份': ['1月', '2月', '3月', '4月', '5月', '6月','7月', '8月', '9月', '10月', '11月', '12月'],  # x轴:时间(月份)'产品A': [120, 135, 150, 145, 160, 170,  # y轴:产品A每月销量165, 180, 175, 190, 185, 200],'产品B': [90, 95, 105, 110, 115, 120,   # 产品B每月销量125, 130, 135, 140, 145, 150],'产品C': [70, 75, 80, 85, 90, 95,      # 产品C每月销量100, 105, 110, 115, 120, 125]
}# 将字典转换为 pandas 的 DataFrame,便于后续处理和绘图
df = pd.DataFrame(data)# =========================
# 开始使用 matplotlib 绘图
# =========================# 1.设置中文字体支持(否则中文可能显示为方块或乱码)
plt.rcParams['font.sans-serif'] = ['SimHei']  # 使用黑体显示中文
plt.rcParams['axes.unicode_minus'] = False    # 解决负号'-'显示为方块的问题# 2.创建一个画布和坐标轴对象(fig: 整个图像,ax: 坐标轴)
fig, ax = plt.subplots(figsize=(10, 6))  # 设置图像大小为宽10英寸,高6英寸# 3.绘制三条折线,分别代表 产品A、产品B、产品C 的销量变化
# 参数说明:
# x: x轴数据(月份)
# y: y轴数据(销量)
# label: 图例中显示的名称
# marker: 数据点标记样式(如 'o' 表示圆点)
# linewidth: 线条粗细
# color: 线条颜色(可选,可自定义如 'red', '#1f77b4' 等)
ax.plot(df['月份'], df['产品A'], label='产品A', marker='o', linewidth=2, color='blue')
ax.plot(df['月份'], df['产品B'], label='产品B', marker='s', linewidth=2, color='green')
ax.plot(df['月份'], df['产品C'], label='产品C', marker='^', linewidth=2, color='red')# 4.添加图表标题
ax.set_title('2024年各月份产品销量趋势图', fontsize=16, fontweight='bold')# 5.添加x轴和y轴标签
ax.set_xlabel('月份', fontsize=12)
ax.set_ylabel('销量(件/月)', fontsize=12)# 6.添加图例(显示每条线代表什么),并设置图例位置为右上角
ax.legend(loc='upper left')# 7.设置x轴刻度标签旋转角度(避免月份重叠,提升可读性)
plt.xticks(rotation=45)# 8.添加网格线(便于观察数值),alpha控制透明度
ax.grid(True, alpha=0.3)# 9.自动调整布局,防止标签被截断
plt.tight_layout()# 10.显示图表
plt.show()

2.条形图(数据之间的对比)

# 导入必要的库
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np  # 用于生成条形图的定位点# 原始数据
data = {'月份': ['1月', '2月', '3月', '4月', '5月', '6月','7月', '8月', '9月', '10月', '11月', '12月'],'产品A': [120, 135, 150, 145, 160, 170, 165, 180, 175, 190, 185, 200],'产品B': [90, 95, 105, 110, 115, 120, 125, 130, 135, 140, 145, 150],'产品C': [70, 75, 80, 85, 90, 95, 100, 105, 110, 115, 120, 125]
}# 转为 DataFrame
df = pd.DataFrame(data)# 1.设置中文字体,避免中文乱码
plt.rcParams['font.sans-serif'] = ['SimHei']  # 黑体
plt.rcParams['axes.unicode_minus'] = False    # 解决负号显示问题# 2.创建画布
plt.figure(figsize=(12, 6))# 3.设定条形的宽度
bar_width = 0.25# 4.获取月份作为x轴的索引位置
x = np.arange(len(df['月份']))  # [0, 1, 2, ..., 11]# 5.绘制三个产品的条形图,通过调整x的位置实现并排(分组条形图)
plt.bar(x - bar_width, df['产品A'], width=bar_width, label='产品A', color='blue')
plt.bar(x, df['产品B'], width=bar_width, label='产品B', color='green')
plt.bar(x + bar_width, df['产品C'], width=bar_width, label='产品C', color='red')# 6.添加图表标题和轴标签
plt.title('2024年各月份产品销量对比(分组条形图)', fontsize=16)
plt.xlabel('月份', fontsize=12)
plt.ylabel('销量(件)', fontsize=12)# 7.设置x轴刻度位置和标签
plt.xticks(x, df['月份'], rotation=45)  # 让月份居中显示,并适当旋转避免重叠# 8.添加图例
plt.legend()# 9.添加网格(可选,便于观察数值)
plt.grid(axis='y', alpha=0.3)# 10自动调整布局
plt.tight_layout()# 11.显示图表
plt.show()

3.饼图(比例分布)

# 导入必要的库
import pandas as pd
import matplotlib.pyplot as plt# 原始销售数据
data = {'月份': ['1月', '2月', '3月', '4月', '5月', '6月','7月', '8月', '9月', '10月', '11月', '12月'],'产品A': [120, 135, 150, 145, 160, 170, 165, 180, 175, 190, 185, 200],'产品B': [90, 95, 105, 110, 115, 120, 125, 130, 135, 140, 145, 150],'产品C': [70, 75, 80, 85, 90, 95, 100, 105, 110, 115, 120, 125]
}# 转为 DataFrame
df = pd.DataFrame(data)# 1.计算各产品的总销量
产品A总销量 = df['产品A'].sum()  # 12个月加总
产品B总销量 = df['产品B'].sum()
产品C总销量 = df['产品C'].sum()# 2.构建饼图所需数据
labels = ['产品A', '产品B', '产品C']          # 每一块的标签
sizes = [产品A总销量, 产品B总销量, 产品C总销量]  # 每一块的数值
colors = ['lightblue', 'lightgreen', 'lightcoral']  # 每一块的颜色(可选)
explode = (0, 0.1, 0)  # 突出显示第2块(产品B),值越大突出越明显# 3.设置中文字体(防止中文显示为方块)
plt.rcParams['font.sans-serif'] = ['SimHei']  # 黑体
plt.rcParams['axes.unicode_minus'] = False    # 解决负号显示问题# 4.创建饼图
plt.figure(figsize=(8, 8))  # 设置画布大小
plt.pie(sizes,labels=labels,           # 每一块的标签colors=colors,           # 每一块颜色autopct='%1.1f%%',       # 显示百分比,保留1位小数startangle=90,           # 起始角度(90度,从顶部开始)explode=explode,         # 突出显示某一块shadow=True,             # 是否显示阴影(立体感))# 5.添加标题
plt.title('2024年各产品总销量占比(饼图)', fontsize=16)# 6.显示图表
plt.show()

4.散点图(两变量之间的相关性)

# 导入必要的库
import matplotlib.pyplot as plt
import numpy as np  # 用于生成模拟数据(也可用真实数据)# 🎲 模拟一组数据(也可以替换成你的真实数据,比如从 CSV、Excel、DataFrame 读取)
np.random.seed(42)  # 设置随机种子,保证每次运行结果一致# 模拟广告投入(x轴,单位:万元)
x = np.random.randint(1, 50, size=50)  # 50个样本,范围 1~49 万元# 模拟销量(y轴,与x有一定相关性,但也加入随机扰动)
y = 2 * x + np.random.normal(0, 20, size=50)  # 基础线性关系 + 噪声# 设置中文字体(防止中文显示乱码)
plt.rcParams['font.sans-serif'] = ['SimHei']  # 黑体
plt.rcParams['axes.unicode_minus'] = False    # 解决负号显示问题# 创建画布
plt.figure(figsize=(8, 6))# 绘制散点图
plt.scatter(x, y,s=60,                # 每个点的大小c='blue',            # 每个点的颜色(可设为列表实现多色)alpha=0.7,           # 透明度(0透明 ~ 1不透明)marker='o',          # 点的形状,'o'是圆点,也可以是 's'(方块)、'^'(三角)等edgecolors='black',  # 点的边框颜色label='广告投入 vs 销量'  # 图例标签)# 添加标题和坐标轴标签
plt.title('广告投入与产品销量散点图', fontsize=16)
plt.xlabel('广告投入(万元)', fontsize=12)
plt.ylabel('产品销量(件)', fontsize=12)# 添加图例
plt.legend()# 添加网格(便于观察数值趋势)
plt.grid(True, alpha=0.3)# 显示图表
plt.show()

5.箱线图(数据分布范围和异常值)

# 导入必要的库
import matplotlib.pyplot as plt
import numpy as np  # 用于生成模拟数据# 🎲 模拟 6 个门店的月销量数据(单位:件)
np.random.seed(42)  # 设置随机种子,保证结果可复现# 生成6组不同的销量分布数据(每组15~20个样本)
data = [np.random.normal(120, 15, 20),  # 门店1:均值120,标准差15np.random.normal(130, 20, 20),  # 门店2np.random.normal(110, 10, 20),  # 门店3np.random.normal(150, 30, 20),  # 门店4(波动大,可能有异常值)np.random.normal(125, 18, 20),  # 门店5np.random.normal(140, 25, 20),  # 门店6
]# 设置中文字体(防止中文显示为方块)
plt.rcParams['font.sans-serif'] = ['SimHei']  # 黑体
plt.rcParams['axes.unicode_minus'] = False    # 解决负号显示问题# 创建画布
plt.figure(figsize=(10, 6))# 绘制箱线图
plt.boxplot(data,vert=True,            # 垂直箱线图(True:竖直,False:水平)patch_artist=True,    # 填充箱体颜色notch=False,          # 不显示中位数置信区间凹槽showfliers=True,      # 显示异常值(outliers)tick_labels=['门店1', '门店2', '门店3', '门店4', '门店5', '门店6'],  # x轴标签
)# 添加标题和轴标签
plt.title('各门店销量分布箱线图', fontsize=16)
plt.xlabel('门店', fontsize=12)
plt.ylabel('销量(件)', fontsize=12)# 添加网格(便于观察)
plt.grid(True, alpha=0.3)# 显示图表
plt.show()

http://www.dtcms.com/a/466844.html

相关文章:

  • 西双版纳网站制作公司网站集约化建设题目
  • hot100的解析
  • 企业网站建设上机考试微信推广引流方法
  • 【LangChain】P19 LangChain Memory(一):让 AI 拥有“记忆力“的秘密
  • 揭阳网站制作案例宝安中心医院上班时间
  • 吴江开发区建设局网站如何建立网站站点
  • 娱乐公司网站模板西安市网站搭建
  • 做网站运用的软件郑州百姓网免费发布信息网
  • Ansible安装及模块
  • 揭阳网站建设公司全民建网站
  • 哪些网站可以做调查赚钱wordpress服务器镜像
  • AI + 区块链开发实战:3 大技术方向 + 5 个落地案例,解锁去中心化网络效能密码
  • 安阳网站建设方案自己做社交网站吗
  • Linux之curl常用参数介绍
  • 唐山seo网站建设提供网页制作平台的公司
  • 南阳市网站建设专利申请
  • 芜湖有哪些招聘网站阿里巴巴吧做网站
  • 网站做优化按点击收费做网站给韩国卖高仿
  • 做网站销售经常遇到的问题智能建站网站
  • Lambda表达式
  • SD12C.TCT瞬态电压抑制(TVS)二极管Semtech升特 电子元器件IC解析
  • wordpress后台添加导航珠海网络排名优化
  • nftables 是什么
  • 基于AD9361的天气雷达回波模拟与硬件系统(三)
  • Fast AutoAugment
  • wordpress 主题 小众百度整站优化
  • Linux内核驱动-Linux系统移植
  • Python人脸检测
  • 鱼骨建站公司专业高端网站设计首选
  • 大模型前世今生(十一):信息论——信息准确传输的上限