Pandas を使用してグループ内の固有の値を数える
カテゴリにグループ化された複数の変数を含むデータセットを操作する場合、多くの場合、数値を決定することが必要になります。各グループに関連付けられた一意の値。データ操作に広く使用されている Python ライブラリである Pandas は、グループ内の一意の値を数える方法をいくつか提供しています。
一般的なニーズの 1 つは、各ドメイン内の一意の識別子の数を数えることです。 ID とドメインの列を含むデータ フレームを指定して、各ドメインの一意の ID の数を表示する結果を取得しようとします。
具体的には、次のデータを考慮します。
ID domain 0 123 vk.com 1 123 vk.com 2 123 twitter.com 3 456 vk.com 4 456 facebook.com 5 456 vk.com 6 456 google.com 7 789 twitter.com 8 789 vk.com
次の出力を達成することを目指します:
domain count vk.com 3 twitter.com 2 facebook.com 1 google.com 1
これを達成するには、Pandas の groupby オペレーション内で nunique() 関数を使用できます。データ フレームをドメイン列でグループ化し、続いて nunique() 関数を ID 列に適用することで、各ドメインの一意の値の数を取得します。結果として得られるデータ フレームには、目的の結果が含まれます:
df = df.groupby(['domain', 'ID']).nunique() print(df)
ただし、特定のシナリオでは、データのドメイン名内に一重引用符などの文字が含まれる場合があります。このような場合に対処するには、str.strip("'") 関数を利用して、グループ化してカウントする前に一重引用符を削除します。これは次のように実装できます:
df = df.ID.groupby([df.domain.str.strip("'")]).nunique() print(df)
または、groupby 操作内で str.strip("'") 関数をチェーンすることでコードを簡素化できます:
df.groupby(df.domain.str.strip("'"))['ID'].nunique()
結果のデータ フレームのドメイン列を取得するには、as_index=False パラメーターを指定して agg() 関数を使用できます。
df = df.groupby(by='domain', as_index=False).agg({'ID': pd.Series.nunique}) print(df)
このメソッドは、ドメイン列とカウント列の両方を含むデータ フレームを返します。各ドメインに関連付けられた一意の ID の数を表します。
以上がPandas を使用してグループ内の固有の値を数える方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。