Python Pandas(四) --数据可视化

使用 pandas 库将数据制作成饼图、条形图及直方图来进行数据展现

对于 分类型数据 ,通常使用 饼图 以及 条形图 进行数据展现
对于 数值型数据 ,通常使用 直方图 进行数据展现

系列

安装

使用 pandas 可视化数据需要安装 matplotlib ,使用 pipenv 安装

1
pipenv install matplotlib
matplotlib版本 : 3.2.1

饼图

饼图 主要用于展现不同类别在整体中所占比重,通常是展现分类型数据 频率分布 的最佳选择

是否确认饼图

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import pandas as pd
from matplotlib import pyplot as plt

# 文件相对路径,与py文件在同一个目录下
path = './abc.csv'
# 读取数据,得到一个DataFrame对象
data = pd.read_csv(path, encoding='gb2312')

# 读取data中 '是否确认' 的频率分布,得到一个Series对象
是否确认 = data['是否确认'].value_counts()/data['是否确认'].value_counts().sum()

# 中文宋体显示
plt.rcParams['font.sans-serif'] = ['STSong']

# 饼图可视化
是否确认.plot(
kind='pie', # 设置图表类型为饼图
autopct='%.2f%%', # 保留小数点后两位
figsize=(7, 7), # 设置图表宽度和高度为7英寸
title='是否确认频率分布图', # 设置图表标题
label='' # 隐藏图表中的列标签 '是否确认'
)

# 显示绘图
plt.show()

28

部门饼图

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import pandas as pd
from matplotlib import pyplot as plt

# 文件相对路径,与py文件在同一个目录下
path = './abc.csv'
# 读取数据,得到一个DataFrame对象
data = pd.read_csv(path, encoding='gb2312')

# 读取data中 '部门' 的频率分布,得到一个Series对象
部门 = data['部门'].value_counts()/data['部门'].value_counts().sum()

# 中文宋体显示
plt.rcParams['font.sans-serif'] = ['STSong']

# 饼图可视化
部门.plot(
kind='pie', # 设置图表类型为饼图
autopct='%.2f%%', # 保留小数点后两位
figsize=(7, 7), # 设置图表宽度和高度为7英寸
title='部门频率分布图', # 设置图表标题
label='' # 隐藏图表中的列标签 '部门'
)

# 显示绘图
plt.show()

29

对于部门这种类别较多且对比不明显的使用条形图更好

条形图

条形图 是用一个单位长度表示一定的数量,根据数量的大小画成长短不同的直条

部门条形图

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import pandas as pd
from matplotlib import pyplot as plt

# 文件相对路径,与py文件在同一个目录下
path = './abc.csv'
# 读取数据,得到一个DataFrame对象
data = pd.read_csv(path, encoding='gb2312')

# 读取data中 '部门' 的频率分布,得到一个Series对象
部门 = data['部门'].value_counts()/data['部门'].value_counts().sum()

# 中文宋体显示
plt.rcParams['font.sans-serif'] = ['STSong']

# 条形图可视化
部门.plot(
kind='bar', # 设置图表类型为条形图
figsize=(13, 8), # 设置图表宽度和高度
title='部门频率分布条形图' # 设置图表标题
)

# 显示绘图
plt.show()

30

直方图

直方图 是用来描绘 数值型数据 频数分布或频率分布的图表
直方图 的柱之间没有空隙,非常适合连续性的数值型数据

abc.csv 文件中属于数值型的有 绩效 提成基本工资 三列数据

基本工资分布直方图

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import pandas as pd
from matplotlib import pyplot as plt

# 文件相对路径,与py文件在同一个目录下
path = './abc.csv'
# 读取数据,得到一个DataFrame对象
data = pd.read_csv(path, encoding='gb2312')

# 读取data中 基本工资 的最小值
最小值 = data['基本工资'].min()
# 读取data中 基本工资 的最大值
最大值 = data['基本工资'].max()
# 打印最小值和最大值
print(最小值,最大值)
'''输出
6000 10000
'''

# 读取data中的 '基本工资',得到一个Series对象
绩效 = data['基本工资']

# 中文宋体显示
plt.rcParams['font.sans-serif'] = ['STSong']

# 直方图可视化
绩效.plot(
kind='hist', # 设置图表类型为直方图
bins=[6000, 7000, 8000, 9000, 10000], # 设置分组,基本工资的值在6000至10000之间
figsize=(8, 5), # 设置图表宽度和高度
title='基本工资分布直方图', # 设置图表标题
grid=True # 显示网格

)

# 显示绘图
plt.show()

31