データ分析用ライブラリpandasの1次元のデータ構造Seriesと2次元のデータ構造Dataframeについて、要素の出現回数を算出するにはvalue_countを用いる。
ライブラリpandasを使うにはインポートが必要。通常次のようにpdと略されてインポートされる。
import pandas as pd
1. value_countによるSeriesの並べ替え
Series.value_count()の書式は以下の通り。
Series.value_counts(normalize=False, sort=True, ascending=False, bins=None, dropna=True)
引数 | 意味 |
---|---|
normalize | 頻度を正規化(合計1に)するか。デフォルトはFalse |
sort | 頻度順に並べるか。デフォルトはTrue |
ascending | 昇順に並べるか。デフォルトはFalse |
bins | 区画幅の指定。デフォルトはFalse |
dropna | NaNを含めない。デフォルトはTrue |
引数を指定しない場合。各要素が頻度の多い順に並べられ出現回数がカウントされる。ser.value_counts()はSeries型。
import pandas as pd ser = pd.Series([7, 5, 8, 2, 4, 7, 8, 8, 2, 2, 3, 8]) print(ser.value_counts())
実行結果
8 4 2 3 7 2 5 1 4 1 3 1 dtype: int64
normalize=Trueの場合。頻度が正規化される。
import pandas as pd ser = pd.Series([7, 5, 8, 2, 4, 7, 8, 8, 2, 2, 3, 8]) print(ser.value_counts(normalize=True))
実行結果
8 0.333333 2 0.250000 7 0.166667 5 0.083333 4 0.083333 3 0.083333 dtype: float64
sort=Falseの場合。出現回数順にソートされない。
import pandas as pd ser = pd.Series([7, 5, 8, 2, 4, 7, 8, 8, 2, 2, 3, 8]) print(ser.value_counts(sort=False))
実行結果
7 2 5 1 8 4 2 3 4 1 3 1 dtype: int64
ascending=Trueの場合。頻度の昇順(少ない順)に並べられる。
import pandas as pd ser = pd.Series([7, 5, 8, 2, 4, 7, 8, 8, 2, 2, 3, 8]) print(ser.value_counts(ascending=True))
実行結果
5 1 4 1 3 1 7 2 2 3 8 4 dtype: int64
binsを指定する場合。要素が数字の場合に指定した区間数にグループ化され、グループ毎の出現回数が求まる。
bins=3を指定する例。3区間に分けられる。
import pandas as pd ser = pd.Series([7, 5, 8, 2, 4, 7, 8, 8, 2, 2, 3, 8]) print(ser.value_counts(bins=3))
実行結果
(6.0, 8.0] 6 (1.993, 4.0] 5 (4.0, 6.0] 1 dtype: int64
2. value_countによるDataframeの並べ替え
Dataframeで要素の出現回数を求める場合もvalue_countsを用いる。
Dataframe.value_count()の書式は以下の通り。
Dataframe.value_counts(subset=None, normalize=False, sort=True, ascending=False, dropna=True)
引数 | 意味 |
---|---|
subset | カウントするColumnsの指定。デフォルトはNone |
normalize | 頻度を正規化(合計1に)するか。デフォルトはFalse |
sort | 頻度順に並べるか。デフォルトはTrue |
ascending | 昇順に並べるか。デフォルトはFalse |
dropna | NaNを含めない。デフォルトはTrue |
引数を指定しない場合。2つのColumnsの組み合わせの出現回数が求められる。
df = pd.DataFrame( data = [['赤', '野菜'], ['緑', '野菜'], ['赤', '果物'], ['黄', '果物'], ['緑', '野菜']], columns = ['色', '種類'], index = ['トマト', 'きゅうり', 'イチゴ', 'バナナ', 'キャベツ'] ) print(df.value_counts())
実行結果
色 種類 緑 野菜 2 赤 果物 1 野菜 1 黄 果物 1 dtype: int64
Columnsを指定する場合。指定した列の要素の出現回数が求まる。
df = pd.DataFrame( data = [['赤', '野菜'], ['緑', '野菜'], ['赤', '果物'], ['黄', '果物'], ['緑', '野菜']], columns = ['色', '種類'], index = ['トマト', 'きゅうり', 'イチゴ', 'バナナ', 'キャベツ'] ) print(df.value_counts(subset='種類'))
実行結果
種類 野菜 3 果物 2 dtype: int64
3. リファレンス
pandas > pandas.Series.value_counts
pandas > pandas.DataFrame.value_counts
使用したバージョン:Python 3.8.12/pandas 1.4.0
0 件のコメント:
コメントを投稿