2016-04-21 57 views
1

我正在尝试关于自某个事件日期以来的时间差异进行可视化数据。Matplotlib /大熊猫散点图在日期'deltas'失败

我从一系列日期中减去事件的日期。

当尝试使用“分散”绘制它,它失败,此错误:

TypeError: Cannot cast scalar from dtype('<m8[ns]') to dtype('<m8') according to the rule 'same_kind' 

,另一方面作品找到“块”。

我怎样才能使这项工作与'分散'?

完整的示例:

import pandas as pd 


dates = ["Tue 2 Jun 16:55:51 CEST 2015", 
"Wed 3 Jun 14:51:49 CEST 2015", 
"Fri 5 Jun 10:31:59 CEST 2015", 
"Sat 6 Jun 20:47:31 CEST 2015", 
"Sun 7 Jun 13:58:23 CEST 2015", 
"Mon 8 Jun 14:56:49 CEST 2015", 
"Tue 9 Jun 23:39:11 CEST 2015", 
"Sat 13 Jun 16:55:26 CEST 2015", 
"Sun 14 Jun 15:52:34 CEST 2015", 
"Sun 15 Jun 16:17:24 CEST 2015", 
"Mon 16 Jun 13:23:18 CEST 2015"] 

delta_dates = pd.to_datetime(dates) - pd.to_datetime("Tue 9 Jun 23:39:11 CEST 2015") 


fig, ax = plt.subplots() 

ax.plot(delta_dates, [1]*len(delta_dates)) # WORKS 
ax.scatter(delta_dates, [1]*len(delta_dates)) # FAILS 
plt.show() 

回答

0

可以使用np.timedelta64转换TimedeltaIndexFloat64Index。例如,绘制delta_date在几秒钟内,使用

delta_dates = (pd.to_datetime(dates) - pd.to_datetime("Tue 9 Jun 23:39:11 CEST 2015"))/np.timedelta64(1, "s") 

这然后用ax.scatter工作。

+0

太棒了! (接受在2分钟:) – oshi2016

+0

顺便说一下,什么是最好的方式来保存实际的三角洲的X标签? – oshi2016

+0

我不确定你的意思是“实际的增量”。你的意思是'delta_dates',就像你在问题中定义的那样,是'TimedeltaIndex'? – jdmcbr