Pandas でユニークな値をカウントする
    
    Suraj Joshi
    2023年1月30日
    
    Pandas
    
このチュートリアルでは、Series.value_count() メソッドと DataFrame.nunique() メソッドを使って、DataFrame 内の全ての一意な値のカウントを取得する方法を説明します。
import pandas as pd
patients_df = pd.DataFrame(
    {
        "Name": ["Jennifer", "Travis", "Bob", "Emma", "Luna", "Anish"],
        "Date": [
            "2020-12-01",
            "2020-12-01",
            "2020-12-02",
            "2020-12-02",
            "2020-12-02",
            "2020-12-03",
        ],
        "Age": [17, 18, 17, 16, 18, 16],
    }
)
print(patients_df)
出力:
       Name        Date  Age
0  Jennifer  2020-12-01   17
1    Travis  2020-12-01   18
2       Bob  2020-12-02   17
3      Emma  2020-12-02   16
4      Luna  2020-12-02   18
5     Anish  2020-12-03   16 
患者の名前、予約日、年齢を含む DataFrame patients_df を用いて、DataFrame 内のすべての一意な値のカウントを取得する方法を説明します。
Series.value_counts() を用いて DataFrame 内の一意な値を数える
import pandas as pd
patients_df = pd.DataFrame(
    {
        "Name": ["Jennifer", "Travis", "Bob", "Emma", "Luna", "Anish"],
        "Date": [
            "2020-12-01",
            "2020-12-01",
            "2020-12-02",
            "2020-12-02",
            "2020-12-02",
            "2020-12-03",
        ],
        "Age": [17, 18, 17, 16, 18, 16],
    }
)
print("The DataFrame is:")
print(patients_df, "\n")
print("No of appointments for each date:")
print(patients_df["Date"].value_counts())
出力:
The DataFrame is:
       Name        Date  Age
0  Jennifer  2020-12-01   17
1    Travis  2020-12-01   18
2       Bob  2020-12-02   17
3      Emma  2020-12-02   16
4      Luna  2020-12-02   18
5     Anish  2020-12-03   16 
No of appointments for each date:
2020-12-02    3
2020-12-01    2
2020-12-03    1
Name: Date, dtype: int64
DataFrame 内の Date カラムの一意な値のカウントを表示します。
DataFrame.nunique() を用いて DataFrame 内の一意な値を数える
    
import pandas as pd
patients_df = pd.DataFrame(
    {
        "Name": ["Jennifer", "Travis", "Bob", "Emma", "Luna", "Anish"],
        "Date": [
            "2020-12-01",
            "2020-12-01",
            "2020-12-02",
            "2020-12-02",
            "2020-12-02",
            "2020-12-03",
        ],
        "Age": [17, 18, 17, 16, 18, 16],
    }
)
print(patients_df, "\n")
print(patients_df.groupby("Date").Name.nunique())
出力:
       Name        Date  Age
0  Jennifer  2020-12-01   17
1    Travis  2020-12-01   18
2       Bob  2020-12-02   17
3      Emma  2020-12-02   16
4      Luna  2020-12-02   18
5     Anish  2020-12-03   16 
Date
2020-12-01    2
2020-12-02    3
2020-12-03    1
Name: Name, dtype: int64
つまり、同じ値の Date を持つ行を同じグループに配置し、特定のグループ内の各名前の出現をカウントして、DataFrame 内の一意の Date カラムの値のカウント数を知ります。
        チュートリアルを楽しんでいますか? <a href="https://www.youtube.com/@delftstack/?sub_confirmation=1" style="color: #a94442; font-weight: bold; text-decoration: underline;">DelftStackをチャンネル登録</a> して、高品質な動画ガイドをさらに制作するためのサポートをお願いします。 Subscribe
    
著者: Suraj Joshi
    Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn