记录研究生封校生活的学习day8(第七篇)pandas实战(七.Matplotlib绘图)

143 阅读1分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第8天,点击查看活动详情

总计:今天是十月更文计划第八天,第十七篇

Pyplot绘图

Python 扩展库Matplotlib依赖于扩展库numpy和标准库tkinter,可以绘制多种形式的图形,如折线图、散点图、饼状图、柱状图、雷达图等。

matplotlib 主要包括pylab、pyplot等绘图模块和大量用于字体、颜色、图例等元素的管理与控制的模块

#%% md

使用pylab或pyplot绘图的一般过程为:

首先生成或读入数据,然后根据实际需要绘制折线图、散点图、柱状图、饼状图、雷达图或三维曲线和曲面,

接下来设置坐标轴标签(可以使用matplotlib.pyplot模块的xlabel()、ylabel()函数或轴域的set_xlabel()、set_ylabel()方法)、坐标轴刻度(可以使用matplotlib.pyplot模块的xticks()、yticks()函数或轴域的set_xticks()、set_yticks()方法)、图例(可以使用matplotlib.pyplot模块的legend()函数)、标题(可以使用matplotlib.pyplot模块的title()函数)等图形属性,

最后显示或保存绘图结果。

每一种图形都有特定的应用场景,对于不同类型的数据和可视化要求,要选择最合适类型的图形进行展示,不能生硬地套用某种图形。

##  绘制各员工在不同柜台业绩平均值的柱状图
import pandas as pd
import matplotlib.pyplot as plt      #导入
import matplotlib.font_manager as fm    #用于创建字体

# 读取全部数据,使用默认索引
df = pd.read_excel(r'超市营业额2.xlsx')

# 修改异常值
df.loc[df.交易额>3000, '交易额'] = 3000
df.loc[df.交易额<200, '交易额'] = 200

# 删除重复值
df.drop_duplicates(inplace=True)

# 填充缺失值
df['交易额'].fillna(df['交易额'].mean(), inplace=True)

# 使用交叉表得到每人在各柜台交易额平均值
print(''.ljust(20,'='))
df_group = pd.crosstab(df.姓名, df.柜台, df.交易额, aggfunc='mean').apply(round)

# 绘制柱状图,默认使用index作为横坐标
df_group.plot(kind='bar')

font = fm.FontProperties(fname=r'C:\Windows\Fonts\STKAITI.ttf')    #指定一个字体文件,生成楷体
plt.xlabel('员工业绩分布', fontproperties='simhei')   #设置X周的文本,指定字体为黑体
plt.xticks(fontproperties='simhei')     #设置x周刻度的字体
plt.legend(prop=font)      #显示图例,设置刚才创建的字体

# 显示绘制结果
plt.show()

输出的结果如下:

image.png