利用pandas进行数据分析 + matplotlib进行可视化展示
- 1 第一个绘图
- 2 pandas利用DataFrame的plot方法绘图
- 3 pandas利用DataFrame绘图柱状图/堆积图(加载csv数据)
- 4 pandas绘图频率直方图(加载csv文件)
- 5 pandas绘图箱型图
- 6 利用pandas 处理后的数据绘图
- 6.1◆条形图
- 6.2◆折线图
- 7 利用pandas 绘制柱状堆积图
- 8 利用pandas 绘制点状图
- 8.1◆绘制 散点图
- 8.2◆绘制 气泡图
- 9 利用pandas 绘制饼图
1 第一个绘图
(原本在matplotlib中需要几段代码,在pandas中只需要一行代码)
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# Series 默认索引为x轴
s = pd.Series(
np.random.randn(10).cumsum() #产生一个10行4列的随机数
index = np.arange(0,100,10) #0-100之间,以10作为分割
)
s.plot()
plt.show()
2 pandas利用DataFrame的plot方法绘图
df = pd.DataFrame(np.random.randn(10,4), #生成10行4列标准正态分布的数据
columns = list('ABCD'),
index = np.range(0,100,10) #指定索引为 x 轴
3 pandas利用DataFrame绘图柱状图/堆积图(加载csv数据)
案例1
fig = plt.figure()
fig,axes = plt.subplots(2,1)
data = pd.Series(np.random.randn(16),
index = list('abcdefghijklmnop'))
data.plot(kind = 'bar',ax = axes[0],color = 'k',alpha
data.plot(kind = 'barh',ax = axes[1],color = 'k',alpha
plt.show()
4 pandas绘图频率直方图(加载csv文件)
df = pd.read_excel('./pandas-matplotlib.xlsx','Sheet1') #导入数据文件
fig = plt.figure() # 创建画板
ax = fig.add_subplot(111) # 创建绘图区域
fig.set_size_inches(10,5) # 设置已创建画布大小
ax.hist(df['Age'],bins = 7) # 绘制频率直方图
plt.title('年龄平均分布图')
plt.xlabel('Age')
plt.ylabel('Employee')
plt.show()
pandas-matplotlib.xlsx中 Sheet1 数据如下:
EMPIDGenderAgeSalesBMIIncomeE001M34123Normal350E002F40114Overweight450E003F37135Obesity169E004M30139Underweight189E005F44117Underweight183E006M36121Normal80E007M32133Obesity166E008F26140Normal120E009M32133Normal75E010M36133Underweight40
5 pandas绘图箱型图
df = pd.read_excel('./pandas-matplotlib.xlsx','Sheet1') #导入数据文件
fig = plt.figure()
ax = fig.add_subplot(111)
ax.boxplot(df['Age']) #绘制箱型图
6 利用pandas 处理后的数据绘图
6.1◆条形图
var = df.groupby('Gender').Sales.sum()
fig = plt.figure()
ax1 = fig.add_subplot(211)
ax1.set_xlabel('Gender')
ax1.set_ylabel('Sum of Sales')
ax1.set_title('Gender wise Sum of Sales')
var.plot(kind = 'bar')
6.2◆折线图
line = df.groupby('BMI').Sales.sum()
#print(line)
ax1 = fig.add_subplot(212)
ax1.set_xlabel('BMI')
ax1.set_ylabel('Sum of Sales')
ax1.set_title('BMI wise Sum of Sales')
line.plot(kind = 'line')
plt.tight_layout()
plt.show()
7 利用pandas 绘制柱状堆积图
df = pd.read_excel('./excel/pandas-matplotlib.xlsx','Sheet1') #导入数据文件
fig = plt.figure()
var = df.groupby(['BMI', 'Gender']).Sales.sum()
var.unstack().plot(kind='bar', stacked=True, color=['red', 'blue'])
plt.show()
8 利用pandas 绘制点状图
8.1◆绘制 散点图
fig = plt.figure()
ax1
8.2◆绘制 气泡图
df = pd.read_excel('./excel/pandas-matplotlib.xlsx','Sheet1') #导入数据文件
fig = plt.figure()
ax = fig.add_subplot(111)
ax.scatter(df['Age'],
df['Sales'],
s=df['Income']) #在散点图上添加第三个参数:表明收入(气泡的大小)
9 利用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%%', # 保留两位小时
shadow = True, # 设置阴影
explode=[0,0.1]) # 0 :扇形不分离,0.1:分离0.1单位
plt.title('expense')
plt.show()