4

こんにちは、時系列があり、1 日あたりのイベント数 (つまり、1 日内のテーブルの行) を数えたいと思います。使用したいコマンドは次のとおりです。

ts.resample('D', how='count')

しかし、「カウント」は時系列の有効な集計関数ではないと思います。

明確にするために、データフレームのサンプルを次に示します。

0   2008-02-22 03:43:00
1   2008-02-22 03:43:00
2   2010-08-05 06:48:00
3   2006-02-07 06:40:00
4   2005-06-06 05:04:00
5   2008-04-17 02:11:00
6   2012-05-12 06:46:00
7   2004-05-17 08:42:00
8   2004-08-02 05:02:00
9   2008-03-26 03:53:00
Name: Data_Hora, dtype: datetime64[ns]

これは私が得ているエラーです:

ts.resample('D').count()

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-42-86643e21ce18> in <module>()
----> 1 ts.resample('D').count()

/usr/local/lib/python2.7/dist-packages/pandas/core/generic.pyc in resample(self, rule, how, axis, fill_method, closed, label, convention, kind, loffset, limit, base)
    255     def resample(self, rule, how=None, axis=0, fill_method=None,
    256                  closed=None, label=None, convention='start',
--> 257                  kind=None, loffset=None, limit=None, base=0):
    258         """
    259         Convenience method for frequency conversion and resampling of regular

/usr/local/lib/python2.7/dist-packages/pandas/tseries/resample.pyc in resample(self, obj)
     98             return obj
     99         else:  # pragma: no cover
--> 100             raise TypeError('Only valid with DatetimeIndex or PeriodIndex')
    101 
    102         rs_axis = rs._get_axis(self.axis)

TypeError: Only valid with DatetimeIndex or PeriodIndex

これは、set_index を使用して datetime 列をインデックスに変換することで修正できます。ただし、それを行った後も、次のエラーが発生します。

DataError: No numeric types to aggregate

私のデータフレームには数値列がないためです。

しかし、私は行を数えたいだけです!! SQL からの単純な「select count(*) group by ...」。

4

3 に答える 3

1

値のカウントとリサンプリングを使用して、ワンライナーでこれを行うことができます。

DataFrame の名前が次のようになっていると仮定しますdf

df.index.value_counts().resample('D', how='sum')

このメソッドは、datetime がインデックスでない場合にも機能します。

df.any_datetime_series.value_counts().resample('D', how='sum')

于 2016-05-24T23:57:28.263 に答える