pandas+matplotlib绘图

本文介绍了使用Pandas库进行各种图表绘制的方法,包括折线图、柱状图、直方图、箱线图等,通过实例展示了如何设置图表样式及参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.用Series进行绘图

用series的行索引作为x轴,值作为数据
这里写图片描述

from matplotlib import pyplot as plt
import numpy as np
from pandas import DataFrame,Series
import pandas as pd
#用来正常显示中文标签 
plt.rcParams['font.sans-serif']=['SimHei'] 
#用来正常显示负号 
plt.rcParams['axes.unicode_minus']=False
index=np.arange(0,100,10)
# 利用随机函数创建一组随机序列,并指定索引
series=Series(np.random.randn(10).cumsum(),index=index) #数据集累加和
#开始画图
axes=series.plot(label='折线图',style='ko-')#绘制折线图,style='ko-'标注转折点
axes.set_title('利用Series绘制折线图')      #设定标题
axes.legend()                               #显示小图例

这里写图片描述

2.利用DataFrame进行绘图

这里写图片描述
(1)创建数据,并画图

df=DataFrame(np.random.randn(10,4),
             columns=list('ABCD'), 
             index=np.arange(0, 100, 10))
df.plot()
df

这里写图片描述
(2)将各个DataFramem中的列会知道单独的subplot中

df.plot(subplots=True) # subplots=True 共用一个x轴,包括刻度和界限

这里写图片描述

3.在pandas中绘制柱状图

# 创建画板获取Axes对象
fig,axes=plt.subplots(2,1)

'''
subplots(2,1):   创建一块两行一列的画板
fig:             这个画板,共两行两列,可以理解为这个画板是个正方形,既然分成两行,则共有4块区域
axes:            创建这个画板时选定的区域(2,1),即两行一列,列方向这两个区域
'''

# 创建绘图数据
data=Series(np.random.randn(16),
            index=list('abcdefghijklmnop'))
# 利用Series数据在两行一列的画板上的第一块区域绘制柱状图
data.plot(kind='bar',ax=axes[0], color='r',alpha=0.7)
# 利用Series数据在两行一列的画板上的第二块区域绘制柱条形图
data.plot(kind='barh',ax=axes[1],color='g',alpha=0.7)
'''
kind:            图的类型
ax:              画板区域
alpha:           透明度
'''
plt.show()

这里写图片描述

4.在pandas中绘制直方图

(1)用pandas读取excel文件

df = pd.read_excel('pandas-matplotlib.xlsx','Sheet1')
df

这里写图片描述
(2)画图

#创建一个画板
figure= plt.figure()
#修改画板的大小
fig.set_size_inches(10,10)

#在画板上添加一个Axes绘图区域
ax=figure.add_subplot(111)
#画直方图
ax.hist(df['Age'],bins=7)

plt.title('年龄分布')
plt.xlabel('年龄')
plt.ylabel('职业')
plt.show()

这里写图片描述
(3)对df数据中Ggender进行分组,统计Sales数量,绘制直方图

var = df.groupby('Gender').Sales.sum()
print(var)

fig = plt.figure()
ax1 = fig.add_subplot(111)

ax1.set_xlabel('Gender')
ax1.set_ylabel('Sales总和')
ax1.set_title('Gender wise Sum of Sales')

var.plot(kind='bar')
plt.show()

这里写图片描述

5.在pandas中绘制箱线图

这里写图片描述

fig = plt.figure()   # 绘制箱线图
ax = fig.add_subplot(111)
# 根据年龄绘制箱线图
ax.boxplot(df['Age'])
plt.show()

这里写图片描述

6.在pandas中绘制折线图

var = df.groupby('BMI').Sales.sum()
print(var)

fig = plt.figure()
ax = fig.add_subplot(111)

ax.set_xlabel('BMI')
ax.set_ylabel('Sales总和')
ax.set_title('BMI wise Sum of Sales')

var.plot(kind='line')
plt.show()

这里写图片描述

7.利用pandas绘制柱状堆积图(两组数据画图)

(1)堆积图

result.plot(kind='bar',         #kind图的类型
            stacked=True,       #stacked是否堆积
            color=['red', 'blue'])
plt.show()

这里写图片描述
(2)绘制直方图

result.plot(kind='bar', stacked=False, color=['red', 'blue'])
plt.show()

这里写图片描述

8.利用pandas绘制散点图

fig = plt.figure()
ax = fig.add_subplot(111)
ax.scatter(df['Age'], df['Sales'])
plt.show()

这里写图片描述

9.利用pandas绘制气泡图

fig = plt.figure()
ax = fig.add_subplot(111)
ax.scatter(df['Age'], df['Sales'], s=df['Income']) # 第三个变量表明根据收入气泡的大小
plt.show()

这里写图片描述

10.利用pandas绘制饼图

这里写图片描述

var = df.groupby(['Gender']).sum()

x_list = var['Sales']
label_list = var.index
plt.axis('equal')       #使饼图更圆
plt.pie(x_list, labels=label_list, autopct='%1.1f%%')
plt.title('expense')
plt.show()

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值