【发布时间】:2019-02-13 19:08:19
【问题描述】:
我有一个 CSV 作为日志文件/数据库。它的结构如下:
User1,Client3,Ops/Admin,19:33:46,19:33:57,178.054662,Notes,05/09/2018
User1,Client2,Ops/Admin,20:33:46,20:33:57,449.272576,Notes,05/09/2018
User1,Client3,Support Management,21:33:46,21:33:57,1073.425258,Notes,05/09/2018
User1,Client2,Support Management,22:33:46,22:33:57,290.640219,Notes,05/09/2018
User1,Client3,Ops/Admin,23:33:46,23:33:57,402.223927,Notes,05/09/2018
User1,Client1,Support Management,00:33:46,00:33:57,761.266062,Notes,05/09/2018
User1,Client1,Business Developement,01:33:46,01:33:57,1623.303656,Notes,05/09/2018
我想使用 matplotlib.pyplot 制作一个折线图,它汇总了每个客户在每个日期的 col[5] 总数。即同一图表上的不同线,其中 x 轴是日期 (col[7]),y 轴是该日期值的总和 (col[5])。
我正在使用 pandas,这是我的起点:
import matplotlib.pyplot as plt
import pandas as pd
import datetime, csv
csv_file = pd.read_csv("file.csv",
names = ['USER',
'CLIENT',
'TYPE',
'START',
'END',
'DURATION',
'NOTES',
'DATE'])
然后我尝试将表格设为数据透视表:
date_pivot = csv_file.pivot_table('DURATION', index='CLIENT', columns='DATE')
或使用 .groupby() 函数:
dategroup = csv_file.groupby(['CLIENT','DATE'], as_index = False).sum()
两者似乎都生成了一个看起来应该足够使用的表格。
问题是,由于不乏尝试(...),我无法弄清楚如何在 matplotlib.pyplot.plot() 上按日期绘制 CLIENT 的总和值...您能帮忙吗?
到目前为止我唯一的想法:
- 我是否应该以某种方式重新排列表格,以便客户端沿 Y 轴 (/index) 运行而日期沿 X 轴 (/header) 运行?
- 是否需要某种形式的使用 .loc() 的 def 迭代函数?
对此的任何帮助将不胜感激,因此在此先感谢!
【问题讨论】:
标签: python pandas matplotlib