簡體   English   中英

在Python中繪制直方圖的時間序列

[英]Plot timeseries of histograms in Python

我正在嘗試用Python繪制時間序列的直方圖。 有一個類似的問題,但在R。 所以,基本上,我需要相同的東西,但我在R中真的很糟糕。我的數據集中每天通常有48個值。 其中 - 9999表示缺少數據。 這是數據的樣本。

我開始閱讀數據並構建一個pandas DataFrame

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())

但后來我被卡住了。 我不知道如何使用matplotlib來獲取直方圖的時間序列。 任何幫助表示贊賞,不一定使用pandas

制作直方圖並使用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中的鏈接示例之后,水平軸應為日期,垂直軸應為區間范圍。 直方圖值是“熱圖”。

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

在此輸入圖像描述

它仍然是標記軸。 這個答案應該有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM