今回は pandas で特定の値がいくつ数える方法について。
結論から先に書いてしまうと value_counts()
という専用のメソッドがあるよ、という話。
使った環境は次の通り。
$ python -V Python 3.6.4 $ pip list --format=columns | grep -i pandas pandas 0.22.0
まずは pandas をインストールして Python の REPL を起動しておく。
$ pip install pandas $ python
続いて、サンプル用のデータフレームを作っておく。 何かのグレードが英字一文字で格納されたデータのようだ。
>>> import pandas as pd >>> data = [ ... "A", ... "B", ... "B", ... "C", ... ] >>> columns = ['grade'] >>> df = pd.DataFrame(data, columns=columns)
上記について特定の値がいくつあるか数えるとき、これまでは groupby()
してから size()
していた。
>>> df.groupby('grade').size() grade A 1 B 2 C 1 dtype: int64
もちろん、上記も間違いではないんだけど pandas の Series
オブジェクトには value_counts()
という専用のメソッドがある。
>>> df['grade'].value_counts() B 2 A 1 C 1 Name: grade, dtype: int64
得られる結果はどちらも変わらない。
返り値は Series
オブジェクトになる。
>>> s = df['grade'].value_counts() >>> type(s) <class 'pandas.core.series.Series'>
ちなみに、上記で得られた Series
を DataFrame
に変換するには reset_index()
メソッドを使うと便利っぽい。
>>> s.reset_index() index grade 0 B 2 1 A 1 2 C 1 >>> type(s.reset_index()) <class 'pandas.core.frame.DataFrame'>
カラム名については name
オプションで指定した方が良いかも。
>>> s.reset_index(name='count') index count 0 B 2 1 A 1 2 C 1
いじょう。
めでたしめでたし。
Pythonによるデータ分析入門 ―NumPy、pandasを使ったデータ処理
- 作者: Wes McKinney,小林儀匡,鈴木宏尚,瀬戸山雅人,滝口開資,野上大介
- 出版社/メーカー: オライリージャパン
- 発売日: 2013/12/26
- メディア: 大型本
- この商品を含むブログ (19件) を見る
スマートPythonプログラミング: Pythonのより良い書き方を学ぶ
- 作者: もみじあめ
- 発売日: 2016/03/12
- メディア: Kindle版
- この商品を含むブログ (1件) を見る