Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 熊猫-以不等间隔绘制事件_Python_Matplotlib_Pandas_Ipython Notebook - Fatal编程技术网

Python 熊猫-以不等间隔绘制事件

Python 熊猫-以不等间隔绘制事件,python,matplotlib,pandas,ipython-notebook,Python,Matplotlib,Pandas,Ipython Notebook,我有一个表示事件日志的datetime对象列表: [datetime.datetime(2014, 12, 16, 0, 18, 12), datetime.datetime(2014, 12, 16, 0, 18, 27), datetime.datetime(2014, 12, 16, 0, 18, 27), datetime.datetime(2014, 12, 16, 0, 19, 9), datetime.datetime(2014, 12, 16, 0, 19, 3

我有一个表示事件日志的datetime对象列表:

 [datetime.datetime(2014, 12, 16, 0, 18, 12),
  datetime.datetime(2014, 12, 16, 0, 18, 27),
  datetime.datetime(2014, 12, 16, 0, 18, 27),
  datetime.datetime(2014, 12, 16, 0, 19, 9),
  datetime.datetime(2014, 12, 16, 0, 19, 39),
  datetime.datetime(2014, 12, 16, 0, 19, 49),
  datetime.datetime(2014, 12, 16, 0, 20, 2),
  datetime.datetime(2014, 12, 16, 0, 20, 19),
  datetime.datetime(2014, 12, 16, 0, 20, 47),
  ...
  datetime.datetime(2014, 12, 16, 6, 23, 43),
  datetime.datetime(2014, 12, 16, 6, 25, 45)]
如何创建每秒事件数的绘图?例如,价值应为:

  • 1表示日期时间。日期时间(2014、12、16、0、18、12)
  • 0表示datetime.datetime(2014,12,16,0,18,13)-datetime.datetime(2014,12,16,0,18,26)
  • 2表示日期时间。日期时间(2014、12、16、0、18、27)
  • 等等
我试过这样的方法:

pd.Series([1 for _ in xrange(len(events_list))], index=events_list).plot()
这是:

df = pd.DataFrame({'ts': t, 'value': 1} for t in events_list)
df.pivot_table(index='ts', columns='value', aggfunc=len, fill_value=0).plot()
显然我得到了错误的结果:


我可以要求您指导我完成这项工作吗?

您可能希望使用“value\u counts”来计算特定时间事件实例的数量,然后对数据帧重新采样以填充na,如下所示

import pandas as pd
import datetime
events = [datetime.datetime(2014, 12, 16, 0, 18, 12),
  datetime.datetime(2014, 12, 16, 0, 18, 27),
  datetime.datetime(2014, 12, 16, 0, 18, 27),
  datetime.datetime(2014, 12, 16, 0, 19, 9),
  datetime.datetime(2014, 12, 16, 0, 19, 39),
  datetime.datetime(2014, 12, 16, 0, 19, 49),
  datetime.datetime(2014, 12, 16, 0, 20, 2),
  datetime.datetime(2014, 12, 16, 0, 20, 19),
  datetime.datetime(2014, 12, 16, 0, 20, 47),
  datetime.datetime(2014, 12, 16, 6, 23, 43),
  datetime.datetime(2014, 12, 16, 6, 25, 45)]
df = pd.DataFrame ({'ts' : events})
df2 = df.ts.value_counts()
df2 = df2.resample('s').fillna(0)
print (df2.head(30))
这应该是让步的,

2014-12-16 00:18:12    1
2014-12-16 00:18:13    0
2014-12-16 00:18:14    0
2014-12-16 00:18:15    0
2014-12-16 00:18:16    0
2014-12-16 00:18:17    0
2014-12-16 00:18:18    0
2014-12-16 00:18:19    0
2014-12-16 00:18:20    0
2014-12-16 00:18:21    0
2014-12-16 00:18:22    0
2014-12-16 00:18:23    0
2014-12-16 00:18:24    0
2014-12-16 00:18:25    0
2014-12-16 00:18:26    0
2014-12-16 00:18:27    2
2014-12-16 00:18:28    0
2014-12-16 00:18:29    0
2014-12-16 00:18:30    0
2014-12-16 00:18:31    0
2014-12-16 00:18:32    0
2014-12-16 00:18:33    0
2014-12-16 00:18:34    0
2014-12-16 00:18:35    0
2014-12-16 00:18:36    0
2014-12-16 00:18:37    0
2014-12-16 00:18:38    0
2014-12-16 00:18:39    0
2014-12-16 00:18:40    0
2014-12-16 00:18:41    0
Freq: S, dtype: float64