Pandas を使用してグループ内の固有の値を数える方法

Patricia Arquette
リリース: 2024-10-18 15:52:03
オリジナル
225 人が閲覧しました

How to Count Unique Values in Groups with Pandas?

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 サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート