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()
pandas把每次describe的数据进行处理,汇总并绘图,用于分析每次执行结果
于 2022-09-20 17:20:19 首次发布