pandas の Seriesクラスの`groupby`メソッドの使い方
環境
- Python3.6.5
- pandas 0.23.0
背景
普段はDataFrameのgroupby
メソッドを使っています。
最近、Seriesにもgroupby
メソッドがあることを知り、使ってみようと思います。
https://pandas.pydata.org/pandas-docs/version/0.23/generated/pandas.Series.groupby.html
質問
pandasのSeriesクラスのgroupby
メソッドは、どのように使えばよろしいでしょうか?
以下のコードを実行すると、「by or levelが必要」というエラーが出ます。
s = pd.Series(["a","a","b"])
s.groupby()
#TypeError: You have to supply one of 'by' and 'level'
マニュアルでby
の説明を見ましたが、よく分かりませんでした。
by
にはどういった情報を渡せばよいでしょうか?
by : mapping, function, label, or list of labels
Used to determine the groups for the groupby. If by is a function,
it’s called on each value of the object’s index. If a dict or Series
is passed, the Series or dict VALUES will be used to determine the
groups (the Series’ values are first aligned; see .align() method). If
an ndarray is passed, the values are used as-is determine the groups.
A label or list of labels may be passed to group by the columns in
self. Notice that a tuple is interpreted a (single) key.
やってみたこと
https://stackoverflow.com/questions/33483670/how-to-group-a-series-by-values-in-pandas
上記サイトを見て、以下のようなコードでgroupbyすることはできました。
しかし、groupby
メソッドに自分自身のSeriesを渡して、なぜgroupbyできるかが分かりませんでした。
s = pd.Series(["a","a","b"])
print(s.groupby(s).count())
a 2
b 1
dtype: int64