2013-06-11 3 views
7

파이썬에서 히스토그램의 시계열을 플로팅하려고합니다. There has been a similar question about this, but in R. 그래서, 기본적으로, 나는 똑같은 것을 필요로합니다.하지만 저는 R에서 정말 나쁩니다. 데이터 세트에 하루에 보통 48 개의 값이 있습니다. 여기서 - 9999는 누락 된 데이터를 나타냅니다. Here's 데이터 샘플.파이썬에서 히스토그램의 시간 그래프를 플롯

데이터를 읽고부터 시작하여 pandasDataFrame으로 시작했습니다.

import pandas as pd 
df = pd.read_csv('sample.csv', parse_dates=True, index_col=0, na_values='-9999') 
print df 

<class 'pandas.core.frame.DataFrame'> 
DatetimeIndex: 336 entries, 2008-07-25 14:00:00 to 2008-08-01 13:30:00 
Data columns (total 1 columns): 
159.487691046 330 non-null values 
dtypes: float64(1) 

는 지금은 그룹 일까지 데이터 수 :

daily = df.groupby(lambda x: x.date()) 

을하지만 그때 붙어있어. 나는 이것을 히스토그램의 timeseries를 얻기 위해 matplotlib과 함께 사용하는 방법을 모른다. 어떤 도움을 주셔서 감사합니다. 반드시 pandas을 사용할 필요는 없습니다.

답변

5

히스토그램을 만들고 matplotlib의 pcolor을 사용하십시오.

그룹을 일률적으로 보관해야하므로 샘플 데이터의 범위에 따라 수동으로 저장소가 만들어집니다.

In [26]: bins = np.linspace(0, 360, 10) 

각 그룹에 histogram을 적용하십시오.

In [27]: f = lambda x: Series(np.histogram(x, bins=bins)[0], index=bins[:-1]) 

In [28]: df1 = daily.apply(f) 

In [29]: df1 
Out[29]: 
      0 40 80 120 160 200 240 280 320 
2008-07-25 0 0 0 3 18 0 0 0 0 
2008-07-26 2 0 0 0 17 6 13 1 8 
2008-07-27 4 3 10 0 0 0 0 0 31 
2008-07-28 0 7 15 0 0 0 0 6 20 
2008-07-29 0 0 0 0 0 0 20 26 0 
2008-07-30 10 1 0 0 0 0 1 25 9 
2008-07-31 30 4 1 0 0 0 0 0 12 
2008-08-01 0 0 0 0 0 0 0 14 14 

R의 연결된 예제 다음에 가로 축은 날짜 여야하며 세로 축은 bin 범위 여야합니다. 히스토그램 값은 "히트 맵"입니다.

In [30]: pcolor(df1.T) 
Out[30]: <matplotlib.collections.PolyCollection at 0xbb60e2c> 

enter image description here

그것은 축 레이블을 남아있다. This answer 도움이 될 것입니다.

+3

요리 책에 추가하십시오! – Jeff

+0

감사! 이렇게해야합니다. 저는 9999가 빠진 숫자이므로 폐기해야한다는 것을 완전히 잊어 버렸습니다. 질문에 추가 할 것입니다. – abudis

+0

이것은 매우 멋지다! –

관련 문제