7

Python でヒストグラムの時系列をプロットしようとしています。これについて同様の質問がありましたが、 R . したがって、基本的には同じものが必要ですが、R が本当に苦手です。通常、データセットには 1 日あたり 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

4

1 に答える 1

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 のリンクされた例に従って、横軸は日付で、縦軸はビンの範囲である必要があります。ヒストグラムの値は「ヒート マップ」です。

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

ここに画像の説明を入力

軸にラベルを付ける必要があります。この答えは、何らかの助けになるはずです。

于 2013-06-11T18:04:12.643 に答える