2016-04-21 52 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