pandas处理文件并用matplotlib.pyplot画图展
2019-08-12 本文已影响0人
余生还长你别慌
主要两个函数,一个是数据处理,入参是文件的列表,返回的是处理后得到的时间列表,这个会作为画图的横轴,然后还有两个高级总数的列表,这两个会作为最终两个图的纵轴用。第二个函数就是作图。然后pandas作用指示读取excel文件而已,然后进行下最基本的数据处理。其中作图用的legend的参数记录如下:
'best' : 0, (only implemented for axes legends)(自适应方式)
'upper right' : 1,
'upper left' : 2,
'lower left' : 3,
'lower right' : 4,
'right' : 5,
'center left' : 6,
'center right' : 7,
'lower center' : 8,
'upper center' : 9,
'center' : 10,
# -*- encoding=UTF-8 -*-
__author__ = 'wjj1982'
__date__ = '2019/8/10 20:45'
__product__ = 'PyCharm'
__filename__ = 'test'
import pandas as pd
import matplotlib.pyplot as plt
# 兼容汉字
plt.rcParams['font.sans-serif'] = ['SimHei']
def get_date_fm_sum(filename_list):
# 最终提取日期列表data_list,营业厅告警总数列表fm_sum_yingyeting,精品区域告警总数列表 fm_sum_jingpinqu
date_list = []
fm_sum_yingyeting = []
fm_sum_jingpinqu = []
# 对文件列表循环处理,注意是用到enumerate,获取了列表的index,同时也循环了filename。
# 主要是用index来if处理下日期只有5天,否则要循环10天了哈
for index, filename in enumerate(filename_list):
if index < 5:
date_list.append(filename.split('_')[1].split('-')[0] + '-' + filename.split('_')[1].split('-')[1] + '-' +
filename.split('_')[1].split('-')[2])
fm_sum_yingyeting.append(sum(pd.read_excel(filename, sheet_name='删除断和掉电告 警后分类统计')['计数']))
else:
fm_sum_jingpinqu.append(sum(pd.read_excel(filename, sheet_name='删除断和掉电告警 后分类统计')['计数']))
return date_list, fm_sum_jingpinqu, fm_sum_yingyeting
def get_plot(date_list, fm_sum):
# 设置图框的大小
fig = plt.figure(figsize=(10, 6))
# 绘图
plt.plot(date_list, # x轴数据
fm_sum, # y轴数据
linestyle='-', # 折线类型
label='告警总数', # 图例,注意这里要和后面的legend合作使用
linewidth=2, # 折线宽度
color='steelblue', # 折线颜色
marker='o', # 点的形状
markersize=6, # 点的大小
markeredgecolor='red', # 点的边框色
markerfacecolor='steelblue') # 点的填充色
# 添加图例,标题和坐标轴标签。legend的参数loc是个元组前面记录
plt.legend(loc=1)
plt.title('VIP营业厅每日告警汇总')
plt.xlabel('日期')
plt.ylabel('告警总数')
# 剔除图框上边界和右边界的刻度
plt.tick_params(top='off', right='off')
# 增加栅格,好看点哈
plt.grid(ls='--')
# 显示图形
plt.show()
def main():
# 统计营业厅告警
filename1 = '6大营业厅告警统计_2019-08-05-14-55-19-019.xlsx'
filename2 = '6大营业厅告警统计_2019-08-06-17-37-28-028.xlsx'
filename3 = '6大营业厅告警统计_2019-08-07-10-13-29-029.xlsx'
filename4 = '6大营业厅告警统计_2019-08-08-20-15-40-040.xlsx'
filename5 = '6大营业厅告警统计_2019-08-09-09-10-31-031.xlsx'
# 统计精品区域告警
filename6 = '精品区域告警统计_2019-08-05-14-55-19-019.xlsx'
filename7 = '精品区域告警统计_2019-08-06-17-37-28-028.xlsx'
filename8 = '精品区域告警统计_2019-08-07-10-13-29-029.xlsx'
filename9 = '精品区域告警统计_2019-08-08-20-15-40-040.xlsx'
filename10 = '精品区域告警统计_2019-08-09-09-10-31-031.xlsx'
filename_list = [filename1, filename2, filename3, filename4, filename5, filename6, filename7, filename8, filename9,filename10]
# 最终提取日期列表data_list,营业厅告警总数列表fm_sum_yingyeting,精品区域告警总数列表 fm_sum_jingpinqu
date_list, fm_sum_yingyeting, fm_sum_jingpinqu = get_date_fm_sum(filename_list)
# 啦啦,可以画图咯,不需要多说了哈,下面画了俩图而已,你懂的
get_plot(date_list, fm_sum_yingyeting)
get_plot(date_list, fm_sum_jingpinqu)
if __name__ == '__main__':
main()
