使用pandas和matplotlib实现数据可视化

本文介绍了如何使用pandas和matplotlib实现数据可视化

导入pandas和matplotlib

Matplotlib Pyplot

Pyplot 是 Matplotlib 的子库,提供了和 MATLAB 类似的绘图 API。
Pyplot 是常用的绘图模块,能很方便让用户绘制 2D 图表。
Pyplot 包含一系列绘图函数的相关函数,每个函数会对当前的图像进行一些修改,例如:给图像加上标记,生新的图像,在图像中产生新的绘图区域等等。
使用的时候,我们可以使用 import 导入 pyplot 库,并设置一个别名 plt

import matplotlib.pyplot as plt

Pandas

安装 pandas 需要基础环境是 Python,Pandas 是一个基于 Python 的库,因此你需要先安装 Python,然后再通过 Python 的包管理工具 pip 安装 Pandas。

import pandas as pd

matplotlib绘制图形

柱形图

plt.rcParams['font.family'] = 'SimHei' # 显示中文
index = [1, 2, 3]
values = [3, 2, 1]
plt.bar(
    index,
    values,
    width = 0.8, # 柱子宽度,max值为1
    color = 'pink'
)
plt.title('我是标题')
for x, y in zip(index, values):
    plt.text(x, y, f'{y}', ha = 'center') # 设置柱子标题
plt.xticks(rotation = 15)
plt.show()

这段代码创建了一个柱状图,其中包含三个柱子,分别对应于index列表中的1、2、3,高度对应于values列表中的3、2、1。图表的标题为“我是标题”,并且x轴标签被旋转了15度以避免重叠。每个柱子的顶部都显示了其高度值。
在这里插入图片描述

饼图

data = [123, 234, 222] # 模拟数据
plt.pie(
    data,
    labels = ['占比1', '占比2', '占比3'], # 数据项,即数据对应的含义
    autopct = '%1.2f%%' # 控制小数点位数
)
plt.title('我是标题')
plt.show()

这段代码包含三个扇区,分别代表data列表中的数值。每个扇区的大小与列表中的数值成比例,且每个扇区旁边显示了其对应的百分比。图表的标题为“我是标题”
在这里插入图片描述

折线图

# 引入外部数据
df_plot = pd.read_excel('../dataset/股价数据.xlsx')

在这里插入图片描述

# 对事件做顺序排序
df_plot2 = df_plot.sort_values(by = 'date').reset_index(drop = True)
df_plot2
n = 400 # 取前n个数据画图
x = df_plot2['date'][:n]
y1 = df_plot2['close'][:n]
y2 = df_plot2['ma20'][:n]
plt.plot(
    x,
    y1,'r-',   # 通过字符串配置线条样式
    y2,'b--'
)
plt.title('股票的收盘价和20日均线折线图')
plt.legend(['收盘价','20日均线'])
plt.xticks([i for i in range(0, n, int(n/7))], rotation = 15) # 选择7个等距x刻度显示
plt.show()

这段代码首先对股票数据按照日期进行排序,然后选取前400个数据点,绘制了收盘价和20日均线的折线图,并添加了标题、图例和旋转的x轴刻度标签
在这里插入图片描述

散点图

# 引入外部数据
df_scatter = pd.read_excel('../dataset/明日科技图书销量.xlsx')

在这里插入图片描述

plt.scatter(
    df_scatter['浏览量'],
    df_scatter['成交商品件数'],
    s = 20, # 点的大小
    c = 'red', # 颜色
    marker = '+' # 点的样式
)
plt.xlim(0, 5000) # x轴的范围
plt.ylim(0, 400) # y轴的范围
plt.xlabel('浏览量', loc = 'right') # x轴名称
plt.ylabel('成交数量', loc = 'top') # y轴名称
plt.show()

x轴代表浏览量,y轴代表成交商品件数。图表中的每个点代表一个数据点,点的大小为20,颜色为红色,样式为加号。x轴和y轴的显示范围分别被限制在0到5000和0到400之间。图表的x轴和y轴标签分别被设置为“浏览量”和“成交数量”,并且x轴标签位于右侧,y轴标签位于顶部
在这里插入图片描述

直方图

# 引入外部数据
df_hist = pd.read_excel('../dataset/航空公司数据.xlsx')

在这里插入图片描述

plt.hist(
    df_hist['年龄'],
    bins = [i for i in range(int(df_hist['年龄'].min()), int(df_hist['年龄'].max()), 1)] # 设置分组区间
)
plt.title('航空公司用户年龄分布直方图')
plt.xlabel('年龄区间')
plt.ylabel('人数')
plt.show()

这段代码展示了航空公司用户年龄的分布情况。图表的x轴表示年龄区间,y轴表示每个年龄区间内的人数。通过直方图,我们可以直观地看到不同年龄区间内用户数量的分布情况
在这里插入图片描述

箱型图

# 引入外部数据
df_box = pd.read_excel('../dataset/航空公司数据.xlsx')

在这里插入图片描述

plt.boxplot(
    df_box['年龄'].dropna(), # 输入序列,不能有空值
    vert = False, # 横向展示
    labels = ['年龄']
)
plt.show()

这段代码展示了航空公司用户年龄的分布情况。通过这个箱形图,我们可以快速了解年龄数据的最小值、第一四分位数、中位数、第三四分位数和最大值,从而对数据的分布有一个直观的认识

同时显示多张图

# 引入外部数据
df = pd.read_excel('../dataset/航空公司数据.xlsx')

在这里插入图片描述

plt.figure(figsize = (12, 10)) # figsize为Sequence,第一个值为宽,第二个值为高
plt.subplot(2, 1, 1) # subplot设置该图像在图中哪行哪列,第一个值设置底图一共有几行,第二个值设置底图一共有几列,第三个值设置图形显示顺序
plt.hist(
    df['飞行次数'],
    bins = [i for i in range(int(df['飞行次数'].min()), int(df['飞行次数'].max()), 5)] # 设置分组区间
)
plt.title('用户飞行次数直方图')
plt.xlabel('飞行次数')
plt.ylabel('人数')
plt.subplot(2, 1, 2) # subplot设置该图像在图中哪行哪列,第一个值设置底图一共有几行,第二个值设置底图一共有几列,第三个值设置图形显示顺序
plt.boxplot(
    df['飞行次数'],
    vert = False,
    labels = ['飞行次数']
)
plt.title('用户飞行次数箱型图')
plt.show()

这段代码创建了一个包含两个子图的图形,第一个子图是用户飞行次数的直方图,第二个子图是用户飞行次数的箱形图。通过这两个图表,我们可以从不同角度了解用户飞行次数的分布情况和统计特性
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值