pandas汇总告警并折线图展示

输入的是统计区域内的每日的所有告警汇总,然后处理后得到日期和每日的告警总数,两个方法来进行折线图展示,方法一是用pandas.plot直接画图,但是测试发现横轴不显示日期,纵轴不显示label,明天重点研究下。方法二是用matplot直接画图,这个不如pandas.plot方便,但暂时能满足要求,先记录下吧,明天重点重构下代码,研究下pandas.plot。

# -*- 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']

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]
date_list = []
fm_sum_yingyeting = []
fm_sum_jingpinqu = []
# print(int(filename_list[1].split('name')[1]))

for index, filename in enumerate(filename_list):
    if index < 5:
        date_list.append(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='删除断和掉电告警后分类统计')['计数']))

df_fm_yingyeting = []
df_fm_jingpinqu = []
for i in range(len(date_list)):
    df_fm_yingyeting.append([date_list[i], fm_sum_yingyeting[i]])
    df_fm_jingpinqu.append([date_list[i], fm_sum_jingpinqu[i]])

df_fm_yingyeting = pd.DataFrame(df_fm_yingyeting, columns=['日期', '告警总数'])
df_fm_jingpinqu = pd.DataFrame(df_fm_jingpinqu, columns=['日期', '告警总数'])

# 设置图框的大小
fig = plt.figure(figsize=(10,6))
# 绘图
plt.plot(df_fm_yingyeting['日期'], # x轴数据
         df_fm_yingyeting['告警总数'], # y轴数据
         linestyle = '-', # 折线类型
         linewidth = 2, # 折线宽度
         color = 'steelblue', # 折线颜色
         marker = 'o', # 点的形状
         markersize = 2, # 点的大小
         markeredgecolor='black', # 点的边框色
         markerfacecolor='steelblue') # 点的填充色

# 添加标题和坐标轴标签
plt.title('VIP营业厅每日告警汇总')
plt.xlabel('日期')
plt.ylabel('告警总数')

# 剔除图框上边界和右边界的刻度
plt.tick_params(top = 'off', right = 'off')

# 网格显示
plt.grid(ls='--')
# 显示图形
plt.show()

你可能感兴趣的:(pandas汇总告警并折线图展示)