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()