pandas把每次describe的数据进行处理,汇总并绘图,用于分析每次执行结果

import csv
import time

import pandas as pd
import matplotlib.pyplot as plt
import datetime

today = datetime.date.today()
filename_summary_output = str(today) + '-summary-output.csv'
filename_summary_tmp = str(today) + '-summary-tmp.csv.'

filename_detail_output = str(today) + 'detail-output.csv'
filename_detail_tmp = str(today) + 'detail-tmp.csv'
img_detail_output = str(today) + '.png'


def csv_summary_deal():
# 修改为自己的csv文件 
    df1 = pd.read_csv('a.csv')
    df2 = pd.read_csv('b.csv')
    # 生成csv文件,并添加表头
    csv_file = csv.writer(open(filename_summary_tmp, 'w', newline=''))
    csv_file.writerow(['name', "count", "mean", "std", "min", "25%", "50%", "75%", "max"])
    for i in range(0, len(df2)):
        x = df2.iloc[[i], [0]].values[0][0]
        y = df2.iloc[[i], [1]].values[0][0]
        # 获取时间为x和y中间的值
        z = df1.loc[(df1['date'] >= x) & (df1['date'] <= y), :]
        # 添加表头
        zz = pd.DataFrame(data=z, columns=['pwr'])
        # 获取统计参数
        zf = zz.describe()
        # 转置
        zt = zf.T
        # 临时csv中添加每次的统计信息
        zt.to_csv(path_or_buf=filename_summary_tmp, mode='a', header=True)
    # 处理临时csv
    df3 = pd.read_csv(filename_summary_tmp)
    # 删除表头行
    x = [i for i in range(0, len(df3)) if i % 2 == 1]
    df4 = df3.drop(labels=x)
    # 删除空值行
    df4 = df4.dropna()
    # 删除空列
    df4 = df4.drop(['Unnamed: 0'], axis=1, inplace=False)
    # 从1开始重新生成index
    df4.index = [i for i in range(1, len(df4) + 1)]
    # 修改列数值类型为float64
    xx = ["count", "mean", "std", "min", "25%", "50%", "75%", "max"]
    for i in xx:
        df4[i] = df4[i].astype('float64')
    # 保存有效统计信息
    df4.to_csv(path_or_buf=filename_summary_output, mode='a', header=True, index=True, index_label="id")


def csv_detail_deal():
    df5 = pd.read_csv('pwr.csv')
    df6 = pd.read_csv('pwr_log.csv')
    for i in range(0, len(df6)):
        x = df6.iloc[[i], [0]].values[0][0]
        y = df6.iloc[[i], [1]].values[0][0]
        # 获取时间为x和y中间的值
        z = df5.loc[(df5['date'] >= x) & (df5['date'] <= y), :]
        # 添加表头
        zz = pd.DataFrame(data=z, columns=['pwr'])
        zt = zz.T
        # 临时csv中添加每次的统计信息
        zt.to_csv(path_or_buf=filename_detail_tmp, mode='a', header=True)
    df7 = pd.read_csv(filename_detail_tmp)
    x = [i for i in range(0, len(df7)) if i % 2 == 1]
    df8 = df7.drop(labels=x)
    df8 = df7.dropna()
    df8 = df8.drop(['Unnamed: 0'], axis=1, inplace=False)
    df8.index = [i for i in range(1, len(df8) + 1)]
    df8.to_csv(path_or_buf=filename_detail_output, mode='a', header=True, index=True, index_label="id")


def draw_plot():
    df9 = pd.read_csv(filename_detail_output)
    df10 = pd.DataFrame(df9, index=df9.index, columns=list(df9.columns.values[1:]))
    plt.figure()
    time.sleep(1)
    df10.plot()
    time.sleep(1)
    # plt.savefig(f'0920.png')
    plt.show()


if __name__ == '__main__':
    csv_summary_deal()
    csv_detail_deal()
    draw_plot()
    #
    #     # 转置
    #
    #     # 临时csv中添加每次的统计信息
    #     zt.to_csv(path_or_buf=filename_tmp, mode='a', header=True)
    # # 处理临时csv
    # df3 = pd.read_csv(filename_tmp)
    # # 删除表头行
    # x = [i for i in range(0, len(df3)) if i % 2 == 1]
    # df4 = df3.drop(labels=x)
    # # 删除空值行
    # df4 = df4.dropna()
    # # 删除空列
    # df4 = df4.drop(['Unnamed: 0'], axis=1, inplace=False)
    # # 从1开始重新生成index
    # df4.index = [i for i in range(1, len(df4) + 1)]
    # print(df4.index)
    # # 修改列数值类型为float64
    # xx = ["count", "mean", "std", "min", "25%", "50%", "75%", "max"]
    # for i in xx:
    #     df4[i] = df4[i].astype('float64')
    # # 保存有效统计信息
    # df4.to_csv(path_or_buf=filename_output, mode='a', header=True, index=True, index_label="id")
    # df5=df4.loc(df3['count']>'0.0')
    # df5 = df4.query('mean != NAN')
    # print(df5)
    # print(df5.dtypes)
    # print(df5.info)

    # xx = [ "count", "mean", "std", "min", "25%", "50%", "75%", "max"]
    # for i in xx:
    #     df5[i] = df5[i].astype('float64')
    # print(df5.dtypes)
    # df6 = df5.query('count > 0.0')
    # print(df6)
    # df4=[df3.drop(labels=i) for i in range(0,len(df3)) if i % 2==1]
    # print(df4)
    # def csv_plot():
    #     df1 = pd.read_csv('pwr.csv')
    #
    #     # df1.plot(x='time', y='pwr', kind='line', grid=True)
    #     # plt.show()
    #
    #
    # csv_plot()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值