使用pyecharts来画图实现之前matplotlib实操任务。
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考我们经过学习能够:掌握matplotlib的基本概念:熟悉matplotlib库的基本结构,包括Figure对象、Axes对象及其关系。了解不同类型的图表:认识各种常用的图表类型(如折线图、柱状图、饼图、散点图等),并理解它们适用的场
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
提示:这里可以添加本文要记录的大概内容:
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。
提示:以下是本篇文章正文内容,下面案例可供参考
一、pyecharts是什么?
Pyecharts 是一个基于 Echarts 的 Python 数据可视化库,支持生成交互式图表。它提供丰富的图表类型(如折线图、柱状图、饼图等),并允许通过简单的 Python 代码实现复杂的数据可视化效果。
目录
3.查看数据修改格式
4.绘制各省份用户人数的柱状图
5.绘制用户数据的散点图
6.绘制折线图
7.绘制饼图
1.引入库
代码如下(示例):
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as snsplt.rc
Params['font.family'] = 'SimHei' # Windows系统
plt.rcParams['axes.unicode_minus'] = False # 解决负号显示问题
• import numpy as np:导入 NumPy 库(别名为 np ),用于高效数值计算,像数组操作、数学函数等场景常用。
• import pandas as pd:导入 Pandas 库(别名为 pd ),是数据处理“神器”,能方便读写表格数据、做数据清洗和分析。
• import matplotlib.pyplot as plt:导入 Matplotlib 的 pyplot 模块(别名为 plt ),用于绘制各种可视化图表(折线图、柱状图等)。
• import seaborn as sns:导入 Seaborn 库(别名为 sns ),基于 Matplotlib,让图表更美观,还简化了复杂可视化(如热力图、分面图)的代码。
• plt.rcParams['font.family'] = 'SimHei':设置 Matplotlib 绘图时的 字体为“SimHei”(宋体),解决 Windows 系统下中文显示乱码问题。
• plt.rcParams['axes.unicode_minus'] = False:解决 Matplotlib 中 负号显示为方块/乱码 的问题,让负号正常显示。
2.读入数据
代码如下(示例):
data = pd.read_excel('./航空公司数据.xlsx')
data.head(2)
3.查看数据修改格式
代码如下(示例):
df1 = data.groupby('工作地所在省份').size().sort_values(ascending = False)[:30]
df1
labels=df1.index.tolist()
1. data.groupby('工作地所在省份')
◦ 对 data(Pandas 的 DataFrame 数据)按**“工作地所在省份”列**分组,把相同省份的行归为一组。
◦ 类似 Excel 里“按省份分类汇总”的逻辑,为后续统计做准备。
2. .size()
◦ 统计每个分组(省份)的行数,结果是一个 Series(索引是省份名,值是该省份的记录数量)。
3. .sort_values(ascending=False)
◦ 对 size() 结果按“数量”降序排序(ascending=False 表示降序,True 是升序),让省份按“记录数从多到少”排列。
4. [:30]
◦ 取排序后的前 30 条结果,即保留“记录数最多的 30 个省份”。
最终结果:
df1 是一个 Series,结构如下:
• 索引(index):省份名称(如“广东”“江苏”等)。
• 值(values):每个省份对应的记录数量(已降序排前 30)。
代码段 2(In [11])
labels = df1.index.tolist()
逐部分拆解:
1. df1.index
◦ 获取 df1(Series)的索引,也就是前面统计的“省份名称”。
2. .tolist()
◦ 把索引(省份名称)转成Python 列表,方便后续用列表做可视化(如图表的 x 轴标签)、循环等操作。
最终结果:
labels 是一个列表,元素是“工作地所在省份”的名称(前 30 个,按记录数降序排列)。
两段代码的关联
1. 第 1 段:从 data 中统计“各省记录数”,筛选前 30 名,存在 df1。
2. 第 2 段:提取 df1 的省份名(索引),转成列表 labels,后续可用于可视化图表的标签(比如柱状图的 x 轴省份名称)。
简单说,这是**“数据分组统计 → 排序筛选 → 提取标签”** 的典型流程,为后续数据可视化(如画各省数量的柱状图)做准备。
4.绘制各省份用户人数的柱状图
代码如下(示例):
plt.figure(figsize=(10,5)) # 适当增大画布尺寸
bars = plt.bar(range(30), df1, color='steelblue')
plt.title('各省份用户人数分布(前30)', pad=20)
plt.xlabel('省份名称', labelpad=10)
plt.ylabel('人数', labelpad=10)
plt.xticks(range(30), labels, rotation=45, ha='right')
plt.yticks(np.arange(0, max(df1)*1.2, step=max(df1)//5))
for bar in bars:
height = bar.get_height()
plt.annotate(f'{height}',
xy=(bar.get_x() + bar.get_width()/2, height),
xytext=(0, 3), # 3 points vertical offset
textcoords="offset points",
ha='center', va='bottom',
fontsize=8)
plt.grid(axis='y', linestyle='--', alpha=0.5)
plt.tight_layout() # 自动调整布局
plt.show()
5.绘制用户数据的散点图
# 数据准备
x = data['平均折扣系数']
y = data['飞行里程数']
# 创建画布
plt.figure(figsize=(10,5))
# 绘制散点
plt.scatter(x, y, s=10, alpha=0.6, c='blue')
# 添加标签和标题
plt.title('用户消费特征分析\n平均折扣系数 vs 飞行里程数')
plt.xlabel('平均折扣系数')
plt.ylabel('飞行里程数')
# 添加辅助元素
plt.grid(True, linestyle=':', alpha=0.3)
plt.tight_layout()
# 显示图形
plt.show()
6.绘制折线图
6.1. 查看数据基本信息
data.info()
• 作用:调用 Pandas 的 info() 方法,输出 data(DataFrame 类型)的基本信息,包括:
◦ 各列的名称、数据类型(如 int64/object 等)。
◦ 非空值数量(检查是否有缺失值)。
◦ 数据占用内存大小。
• 典型场景:数据分析第一步,快速了解数据结构、排查缺失值。
6.2. 提取“入会年份”
data['入会年份']=[i.year for i in data['入会时间']]
data.head(2)
6.3. 按“入会年份”分组统计
df2 = data.groupby('入会年份').size()
df2
6.4. 转换数据格式(为可视化做准备)
df21 = df2.tolist()
year = df2.index.tolist()
6.5.输出代码
plt.figure(figsize=(10,5))
plt.plot(year,df2,marker = 'o')
plt.xticks(year)
plt.title('每年入会会员人数折线图')
plt.xlabel('年份')
plt.ylabel('人数')
for i ,txt in enumerate(df21):
plt.annotate(f'{txt}',
(year[i],df21[i]+50),
ha = 'center')
plt.show()
7.绘制饼图
7.1.计算当前时间与数据框中“入会时间”列的时间差
import datetime as dt
data['时间差']=[((pd.Timestamp(dt.datetime.now())-i)/365).days for i in data['入会时间']]
data.head(2)
7.2 进行分箱操作
data['飞龄分箱'] = pd.cut(data['时间差'], bins=[12, 15, 18, 21])
data.head(2)
7.3.对数据进行分组统计并提取标签名称
df3 = data.groupby(data['飞龄分箱']).size()
label1 = df3.index.tolist()
7.4.输出代码
plt.figure(figsize=(5,5))
plt.pie(df3, labels=label1, autopct='%1.1f%%')
plt.title('飞龄分箱饼图')
plt.show()
8.绘制直方图和箱型图
8.1.分组统计飞行次数
df4 = data.groupby(data['飞行次数']).size()
8.2输出代码
plt.figure(figsize=(12, 12))
# 直方图
plt.subplot(2, 1, 1)
plt.hist(data['飞行次数'], bins=50, color='skyblue', edgecolor='black')
plt.title('用户飞行次数分布直方图', pad=20)
plt.xlabel('飞行次数')
plt.ylabel('频次')
# 箱线图
plt.subplot(2, 1, 2)
plt.boxplot(data['飞行次数'], vert=False, patch_artist=True,
boxprops=dict(facecolor='lightgreen'))
plt.title('用户飞行次数分布箱线图', pad=20)
plt.xlabel('飞行次数')
plt.tight_layout()
plt.show()
总结
我们经过学习能够:
-
掌握matplotlib的基本概念:熟悉matplotlib库的基本结构,包括Figure对象、Axes对象及其关系。
-
了解不同类型的图表:认识各种常用的图表类型(如折线图、柱状图、饼图、散点图等),并理解它们适用的场景。
-
掌握图表元素:理解图表中的各个组成部分,如标题、标签、刻度、图例等,并知道如何进行定制化设置。
更多推荐


所有评论(0)