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()
无标题-wjj.jpg
上一篇 下一篇

猜你喜欢

热点阅读