ホームページ > バックエンド開発 > Python チュートリアル > パンダはどのようにしてグループ化されたデータフレーム内の用語を効率的にカウントできるのでしょうか?

パンダはどのようにしてグループ化されたデータフレーム内の用語を効率的にカウントできるのでしょうか?

Mary-Kate Olsen
リリース: 2024-11-28 02:36:09
オリジナル
829 人が閲覧しました

How Can Pandas Efficiently Count Terms within Grouped DataFrames?

グループ化された DataFrame での用語のカウント: Pandas ソリューション

この記事では、グループ内の用語をカウントし、その結果を DataFrame に要約するという課題について説明します。 。 Pandas を使用すると、非効率的なループに頼ることなく、このタスクをエレガントに解決できます。次の DataFrame について考えてみましょう:

df = pd.DataFrame([
    (1, 1, 'term1'),
    (1, 2, 'term2'),
    (1, 1, 'term1'),
    (1, 1, 'term2'),
    (2, 2, 'term3'),
    (2, 3, 'term1'),
    (2, 2, 'term1')
])
ログイン後にコピー

目的は、「id」と「group」でグループ化し、各「term」の出現数をカウントすることです。これを実現するために、Pandas は簡潔なソリューションを提供します。

df.groupby(['id', 'group', 'term']).size().unstack(fill_value=0)
ログイン後にコピー
ログイン後にコピー

この操作は、DataFrame を 'id'、'group'、および 'term' 列でグループ化し、それぞれの一意の組み合わせの出現をカウントし、マルチインデックス列と、カウントを含む「size」という名前の単一値列を含む要約データフレーム。 「unstack」関数は、以下に示すように、DataFrame をワイド形式に再形成し、一意の用語ごとに 1 つの列を含めます。

id  group term   size
1   1     term1  3
    1     term2  2
    2     term3  1
2   2     term1  3
ログイン後にコピー

タイミング分析

大きい場合データセットを使用するには、このソリューションのパフォーマンス特性を理解することが重要です。これを評価するには、次のコードを使用して生成された 100 万行の DataFrame を検討します:

df = pd.DataFrame(dict(id=np.random.choice(100, 1000000),
                       group=np.random.choice(20, 1000000),
                       term=np.random.choice(10, 1000000)))
ログイン後にコピー

グループ化およびカウント操作をプロファイリングすると、大規模なデータセットでも効率的に処理できることがわかります:

df.groupby(['id', 'group', 'term']).size().unstack(fill_value=0)
ログイン後にコピー
ログイン後にコピー

このパフォーマンスは、Pandas の基礎となるグループ化および集約メカニズムの最適化された性質に起因しており、Pandas は大規模な処理を効率的に行うための優れたツールとなっています。データセット。

以上がパンダはどのようにしてグループ化されたデータフレーム内の用語を効率的にカウントできるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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