環境

  • 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