データ分析では、多くの場合、データをグループ化し、特定の値または用語の出現をカウントする必要があります。このタイプの集計は、Pandas の groupby 関数と size 関数を使用して簡単に実現できます。
問題:
次の列を持つ DataFrame df があるとします: id、グループと用語。目標は、ループを使用せずに、ID とグループの組み合わせごとに各一意の用語の出現数をカウントすることです。
解決策:
これを達成するには、次のようにします。次の手順を使用できます:
結果の 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') ], columns=['id', 'group', 'term']) result = df.groupby(['id', 'group', 'term']).size().unstack(fill_value=0) print(result)
出力:
term1 term2 term3 id group 1 1 2 1 2 2 2 1 3 1 0
パフォーマンス:
大規模なデータセットの場合、 groupby 操作と size 操作は、計算コストが高くなる可能性があります。次のコードは、1,000,000 行の DataFrame をグループ化してカウントするためのタイミング統計を提供します。
df = pd.DataFrame(dict(id=np.random.choice(100, 1000000), group=np.random.choice(20, 1000000), term=np.random.choice(10, 1000000))) %timeit df.groupby(['id', 'group', 'term']).size().unstack(fill_value=0)
以上がループを使用せずに、Pandas DataFrame 内の用語の出現を ID およびグループ別に効率的にグループ化し、カウントするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。