2017-10-30 4 views
1

とすると、私の意味は パンダスはどのように設計されていますか?すべてのPandas時系列関数は、その前提に基づいて構築されていますか?Pandasのdatetimeデータはインデックス内にあるはずですか?

数週間前、私はpandas.rolling_meanを実験していましたが、これはdatetimeがインデックス内にあるように思っていました。このようなデータフレームを考える

:1として

df.set_index('date', inplace=True) 
df 

datetime as index

...:

df = pd.DataFrame({'date' : ['23/10/2017', '24/10/2017', '25/10/2017','26/10/2017','27/10/2017'], 'dax-close' : [13003.14, 13013.19, 12953.41,13133.28,13217.54]}) 
df['date'] = pd.to_datetime(df['date']) 
df 

datetime as column

を...それは常にこの操作を行うことが重要です分析の最初のステップは?

+0

時系列インデックスが「DatetimeIndex」であることを意味し、[docs](http: /pandas.pydata.org/pandas-docs/stable/timeseries.html) – EdChum

+0

ありがとう、パンダには少なくとも2種類のインデックスタイプがあります。上記の最初のDataFrameの 'type(df.index)'は 'pandas.core.indexes.range.RangeIndex'と' pandas.core.indexes.datetimes.DatetimeIndex'を返します。おそらく、第2の型はおそらく時系列そうでなければ、パンダの機能を適切に使用していません。 – cardamom

答えて

1

短い答えは、通常、timeseriesデータはDatetimeIndexとして日付を持ちます。多くのパンダの機能はそれを利用しています。 resampleは大きなものです。

つまり、インデックスとして日付を持つ必要はありません。たとえば、複数のDatetime列を持つこともできます。次に、バニラのサンプルを呼び出すことはできません...しかし、pd.Grouperを使用してコラム(以上/複数列のGROUPBYの一部として)の「再サンプル」

In [11]: df.groupby(pd.Grouper(key="date", freq="2D")).sum() 
Out[11]: 
      dax-close 
date 
2017-10-23 26016.33 
2017-10-25 26086.69 
2017-10-27 13217.54 

In [12]: df.set_index("date").resample("2D").sum() 
Out[12]: 
      dax-close 
date 
2017-10-23 26016.33 
2017-10-25 26086.69 
2017-10-27 13217.54 

は、前者では、複数の列をGROUPBYできるという点で、より多くの柔軟性を提供します:定義により

In [21]: df["X"] = list("AABAC") 

In [22]: df.groupby(["X", pd.Grouper(key="date", freq="2D")]).sum() 
Out[22]: 
       dax-close 
X date 
A 2017-10-23 26016.33 
    2017-10-25 13133.28 
B 2017-10-25 12953.41 
C 2017-10-27 13217.54 
関連する問題