ホームページ >バックエンド開発 >Python チュートリアル >Pandas を使用してグループごとに一意の値をカウントするにはどうすればよいですか?

Pandas を使用してグループごとに一意の値をカウントするにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-10-18 15:49:031055ブラウズ

How to Count Unique Values per Groups with Pandas?

Pandas を使用したグループごとの一意の値のカウント

表形式のデータを操作する場合、多くの場合、特定のデータ内での一意の値の出現をカウントすることが必要になります。グループ。 Pandas ライブラリを使用して Python でこれを実現するには、groupby() メソッドと nunique() メソッドを利用できます。

問題の説明:

問題を説明するには、次のように考えます。次のデータセット:

ID domain
123 vk.com
123 vk.com
123 twitter.com
456 vk.com'
456 facebook.com
456 vk.com
456 google.com
789 twitter.com
789 vk.com

当面のタスクは、各ドメイン内の一意の ID 値をカウントすることです。

解決策:

カウントするにはグループごとに一意の値を指定するには、次のコードを使用できます。

<code class="python">df = df.groupby('domain')['ID'].nunique()</code>

groupby() メソッドはドメイン列ごとにデータをグループ化し、nunique() メソッドは各グループ内での一意の ID の出現をカウントします。出力は、ドメイン名をインデックスとして、対応する一意のカウントを値として持つシリーズです。

domain
vk.com        3
twitter.com   2
facebook.com  1
google.com    1

補足:

  • ドメイン列の場合値に一重引用符 (') が含まれている場合は、str.strip("'") メソッドを使用してグループ化する前にそれらを削除できます。
  • 出力に列名を保持するには、pd で agg() メソッドを使用します。 .Series.nunique 関数。

文字列操作の例:

<code class="python">df['clean_domain'] = df.domain.str.strip("'")
df = df.groupby('clean_domain')['ID'].nunique()</code>

agg() の例:

<code class="python">df = df.groupby(by='domain', as_index=False).agg({'ID': pd.Series.nunique})</code>

以上がPandas を使用してグループごとに一意の値をカウントするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。