2013-06-19 19 views
6

我正在嘗試爲時間序列(例如5分鐘溫度觀測)創建一組星期幾盒圖。從熊貓時間序列中生成星期幾箱圖的最佳方法

我的代碼:

# ts is our timeseries 
ts = df.SomeColumn 

dow_map = {} 
days = ['MON','TUE','WED','THU','FRI','SAT','SUN'] 
dow_idx = ts.index.dayofweek 

i = 0 
for d in days: 
    dow_map[d] = ts[dow_idx == i] 
    i = i + 1 

df = pd.DataFrame(dow_map) 
df.boxplot() 

結果:

--------------------------------------------------------------------------- 
Exception         Traceback (most recent call last) 
<ipython-input-898-6070c45e4c4b> in <module>() 
    41  i = i + 1 
    42 
---> 43 df = pd.DataFrame(dow_map) 
    44 df.boxplot() 
... 
Exception: Reindexing only valid with uniquely valued Index objects 

我沒有通過爲每個星期幾,DataFrames找到成功的情況下,然後CONCAT-ING他們進入最終的數據幀,但這似乎效率低下...

+4

除此之外,如果你發現自己我+ = 1 python中,你可能就錯了(在這種情況下使用['enumerate'(HTTP://文檔.python.org/2/library/functions.html#enumerate)) –

+0

你認爲這個DataFrame看起來像什麼?它似乎很稀疏...... –

回答

9

1st創建數據框並使用工作日方法獲取星期幾:

import pandas as pd 
import numpy.random as random 
n=1000 
df = pd.DataFrame(random.randn(n), pd.date_range('2010-01-01', periods=n), columns=["data"]) 
df['Dates'] = df.index 
df['week_days'] =df.index.weekday 
df 

現在轉動該表,以便week_days作爲列(也可以將需要日期更改爲字符串格式的日子,但將其留給您。

x =df.pivot(index='Dates', columns='week_days', values='data') 
x.boxplot() 

enter image description here

+0

偉大的解決方案。 TXS! –

1
import locale, calendar 
# for example pl_PL 
locale.setlocale(locale.LC_ALL, 'pl_PL.UTF-8') 
x = x.rename_axis(lambda x: calendar.day_abbr[x].capitalize()) 
相關問題