2017-04-22 71 views
2

據幀如下:箱圖熊貓數據

 ID1    ID2 
0 00:00:01.002 00:00:01.002 
1 00:00:01.001 00:00:01.006 
2 00:00:01.004 00:00:01.011 
3 00:00:00.998 00:00:01.012 
4  NaT   00:00:01.000 
       ... 
20  NaT   00:00:00.998 

我所要做的是爲每個ID的箱線圖。根據我提供的數據集,可能有或沒有多個ID。現在我正試圖爲2個數據集解決這個問題。如果可能的話,我希望有一個解決方案將所有數據放在同一個boxplot上,然後再將另一個數據顯示在每個ID的boxplot上。

我是很新的大熊貓(努力學習吧...),並在這多久採取弄清楚我只是感到沮喪...這裏是我的代碼...

deltaTime = pd.DataFrame() #Create blank df 
for x in range(0, len(totIDs)): 
    ID = IDList[x] 
    df = pd.DataFrame(data[ID]).T 
    deltaT[ID] = pd.to_datetime(df[TIME_COL]).diff() 
deltaT.boxplot() 

很簡單,似乎無法得到它做我想繪製每個ID的盒子圖。我不應該說數據是由需要幾個複雜的文件,並將其分類成是由標識索引的數據字典自主開發的文件閱讀器給我。

我正在大熊貓版本0.14.0和Python版本2.7.7

+1

的[如何繪製的數據幀的一列的箱形圖在matplotlib兩組]可能的複製(http://stackoverflow.com/questions/43209795/how-to-plot-a-box-plot -of-A-列的-A-DATA-框架中有兩個組,在-matplotlib) – manelfp

回答

1

我不知道這是如何工作的0.14.0版本,因爲最後是0.19.2 - 我建議升級如果可能的話:

#sample data 
np.random.seed(180) 
dates = pd.date_range('2017-01-01 10:11:20', periods=10, freq='T') 
cols = ['ID1','ID2'] 
df = pd.DataFrame(np.random.choice(dates, size=(10,2)), columns=cols) 
print (df) 
        ID1     ID2 
0 2017-01-01 10:12:20 2017-01-01 10:17:20 
1 2017-01-01 10:16:20 2017-01-01 10:20:20 
2 2017-01-01 10:18:20 2017-01-01 10:17:20 
3 2017-01-01 10:12:20 2017-01-01 10:16:20 
4 2017-01-01 10:14:20 2017-01-01 10:18:20 
5 2017-01-01 10:18:20 2017-01-01 10:19:20 
6 2017-01-01 10:17:20 2017-01-01 10:12:20 
7 2017-01-01 10:13:20 2017-01-01 10:17:20 
8 2017-01-01 10:16:20 2017-01-01 10:11:20 
9 2017-01-01 10:13:20 2017-01-01 10:19:20 

呼叫DataFrame.diff,然後轉換到timedeltastotal_seconds

df = df.diff().apply(lambda x: x.dt.total_seconds()) 
print(df) 
    ID1 ID2 
0 NaN NaN 
1 240.0 180.0 
2 120.0 -180.0 
3 -360.0 -60.0 
4 120.0 120.0 
5 240.0 60.0 
6 -60.0 -420.0 
7 -240.0 300.0 
8 180.0 -360.0 
9 -180.0 480.0 

末使用DataFrame.plot.box

df.plot.box() 

graph

您還可以檢查docs

+0

嘗試在匆忙,因爲我不得不離開,但我做這行的時候出現以下錯誤:pd.to_datetime( 。DF [TIME_COL])的diff()應用(拉姆達×:x.dt.total_seconds())我有:AttributeError的: 'numpy.timedelta64' 對象沒有屬性 'dt的'。 。 – Sharki

+0

你有舊版本的熊貓,所以我認爲這是越野車:(請升級 – jezrael

+0

我不能升級:(...這是一個工作,我們正在運行上不能更改,恕不一個小小的奇蹟系統......花了上次1年只是爲了更新所有軟件... – Sharki