Pandasは、データ操作と分析のための強力なPythonライブラリであり、列値の合計を計算することは頻繁に行われるタスクです。この記事では、基本的な合計、グループ化による累積和、条件付き合計などを網羅し、Pandas DataFrameでデータを効率的に合計する様々な方法を探ります。
目次:
1. Pandas DataFrame列の基本的な合計
Pandas DataFrame列を合計する最も簡単な方法は、.sum()
メソッドを使用することです。これは、指定された列のすべての値の合計を直接計算します。数値以外の値は無視されます。
import pandas as pd
data = {'A': [1, 2, 3, 4, 5],
'B': [6, 7, 8, 9, 10],
'C': [11, 12, 13, 14, 15]}
df = pd.DataFrame(data)
# 列'A'の合計
sum_A = df['A'].sum()
print(f"列Aの合計: {sum_A}") # 出力: 列Aの合計: 15
# 列'B'の合計
sum_B = df['B'].sum()
print(f"列Bの合計: {sum_B}") # 出力: 列Bの合計: 40
# すべての数値列の合計
sum_all = df.sum()
print(f"すべての数値列の合計:n{sum_all}")
2. groupby()
を使用した累積和
グループ内の累積和を計算するには、groupby()
メソッドと.cumsum()
を組み合わせる必要があります。これにより、さまざまなカテゴリにわたる効率的な集計が可能になります。
import pandas as pd
data = {'Group': ['X', 'X', 'Y', 'Y', 'Y'],
'Value': [10, 20, 30, 40, 50]}
df = pd.DataFrame(data)
# 'Group'でグループ化し、'Value'の累積和を計算する
cumulative_sum = df.groupby('Group')['Value'].cumsum()
df['Cumulative Sum'] = cumulative_sum
print(df)
これにより、「累積和」列を持つDataFrameが出力され、各グループの累積和が表示されます。
3. 他の列の値に基づく条件付き合計
条件付き合計を使用すると、他の列に適用される条件に基づいて値を合計できます。ブールインデックスと.sum()
メソッドでこれを実現します。
import pandas as pd
data = {'Category': ['A', 'B', 'A', 'B', 'A'],
'Sales': [100, 150, 200, 250, 300]}
df = pd.DataFrame(data)
# 'Category'が'A'の場合の'Sales'の合計
sum_A = df[df['Category'] == 'A']['Sales'].sum()
print(f"Category AのSales合計: {sum_A}") # 出力: Category AのSales合計: 600
# 'Sales'が200より大きい場合の'Sales'の合計
sum_greater_200 = df[df['Sales'] > 200]['Sales'].sum()
print(f"200より大きいSalesの合計: {sum_greater_200}") # 出力: 200より大きいSalesの合計: 550
これは、強力な条件付き集計のために合計の前にDataFrameをフィルタリングする方法を示しています。これらの手法を、具体的なデータと要件に合わせて調整してください。Pandasは、効率的なデータ分析のための多くのツールを提供しています。