Value_count 種類ごとの出現回数

種類ごとに何回出現しているかを取得します。

具体例で確認しましょう。

前問と同じく、惣菜店の販売履歴を表した以下のdfを使います。

DateItemNum
02022/04/02弁当A2
12022/04/02中華B3
22022/04/03中華B1
32022/04/03弁当A4
42022/04/03サラダ2

ある列の種類ごとの出現回数は、下記のように取得します。結果はSeriesになります。

df.列名.value_counts()

たとえば、列Itemの種類ごとの出現回数は、以下のようになります。

df.Item.value_counts()

実行結果

弁当A    2
中華B    2
サラダ    1
Name: Item, dtype: int64

弁当A、中華B、サラダが、それぞれ、2件、2件、1件ということがわかります。

また、「列の要素の組み合わせ」について出現回数を取得するには、下記のようにDataFrameのvalue_counts()を使います。こちらも結果はSeriesになります。

df.value_counts()

実行結果

Date        Item  Num
2022/04/02  中華B   3      1
            弁当A   2      1
2022/04/03  サラダ   2      1
            中華B   1      1
            弁当A   4      1
dtype: int64

実行結果を確認すると、たとえば「2022/04/02に中華Bを3個注文した」というデータは1件だけなので、1行目の集計結果は1になっています。

演習

惣菜店の販売履歴のDataFrameを作成します。

import pandas as pd

df = pd.DataFrame({
    "Date": ["2022/04/02", "2022/04/02", "2022/04/03", "2022/04/03", "2022/04/03"],
    "Item": ["弁当A", "中華B", "中華B", "弁当A", "サラダ"],
    "Num": [2, 3, 1, 4, 2],
})
df
DateItemNum
02022/04/02弁当A2
12022/04/02中華B3
22022/04/03中華B1
32022/04/03弁当A4
42022/04/03サラダ2

種類ごとの出現回数は、列に対してvalue_counts()で取得できます。 結果は、出現回数の多い順になります。今回のデータの場合、全5行のうち2022/04/03が3行、2022/04/02が2行あることがわかります。In [2]:

df.Date.value_counts()
2022/04/03    3
2022/04/02    2
Name: Date, dtype: int64

続いて、列Itemの種類ごとの出現回数を確認してみましょう。 これにより、商品ごとの販売回数を確認できます。

df.Item.value_counts()
弁当A    2
中華B    2
サラダ    1
Name: Item, dtype: int64

DataFrameについても確認してみましょう。 実行すると、「列の要素の組み合わせ」ごとの出現回数を取得できます。

df.value_counts()
Date        Item  Num
2022/04/02  中華B   3      1
            弁当A   2      1
2022/04/03  サラダ   2      1
            中華B   1      1
            弁当A   4      1
dtype: int64

上記の結果は列がたくさんあるように見えますが、Seriesです。to_frame()を使って1列のDataFrameにしてわかりやすくしてみましょう。見方については解説で説明します。

df.value_counts().to_frame()
0
DateItemNum
2022/04/02中華B31
弁当A21
2022/04/03サラダ21
中華B11
弁当A41

SeriesやDataFrameに対して、種類ごとの出現回数を確認するには下記のようにします。

  • df.列名.value_counts()
  • df.value_counts()

df.value_counts()の結果について、詳しく確認しましょう。下図は見やすいように、表形式にしたものです。

https://images.pyq.jp/repo/prod/pandas_check_first_v2/pandas_check_1.jpg

df.value_counts()では、「列の要素の組み合わせ」ごとに出現回数を数えます。今回のデータでは、各行の「列の要素の組み合わせ」は下記になります。

  • ("2022/04/02", "中華B", 3)
  • ("2022/04/02", "弁当A", 2)
  • ("2022/04/03", "サラダ", 2)
  • ("2022/04/03", "中華B", 1)
  • ("2022/04/03", "弁当A", 4)

この「列の要素の組み合わせ」に対して出現回数を計算します。
たとえば、("2022/04/02", "中華B", 3)は1回です。
また、("2022/04/02", "弁当A", 2)も1回です。pandasでは、前行と同じ項目のとき表示時に省略されることがあります。ここでは("2022/04/02", "弁当A", 2)弁当A 2とだけ表示されています。

コメント

タイトルとURLをコピーしました