Pandas 列の合計を取得する方法
Asad Riaz
2023年1月30日
Pandas
Pandas DataFrame Column

Pandas DataFrame
の列
の合計を取得する方法、groupby
を使用して累積合計を計算する方法、および他の列の値の条件に基づいて列の DataFrame
の合計を紹介します。
Pandas DataFrame
列の合計を取得するメソッド
まず、NumPy
ライブラリを使用してランダム配列を作成し、次に sum()
関数を使用して各列の合計を取得します。
import numpy as np
import pandas as pd
df = pd.DataFrame(np.random.randint(0, 10, size=(10, 4)), columns=list("1234"))
print(df)
Total = df["1"].sum()
print("Column 1 sum:", Total)
Total = df["2"].sum()
print("Column 2 sum:", Total)
Total = df["3"].sum()
print("Column 3 sum:", Total)
Total = df["4"].sum()
print("Column 4 sum:", Total)
この変換を実行すると、以下の結果が得られます。
1 2 3 4
0 2 2 3 8
1 9 4 3 1
2 8 5 6 0
3 9 5 7 4
4 2 7 3 7
5 9 4 1 3
6 6 7 7 3
7 0 4 2 8
8 0 6 6 4
9 5 8 7 2
Column 1 sum: 50
Column 2 sum: 52
Column 3 sum: 45
Column 4 sum: 40
groupby
メソッドによる累積合計
groupby
メソッドを使用して累積合計を取得できます。次の DataFrame
に Date
、Fruit
、Sale
列があるとします:
import pandas as pd
df = pd.DataFrame(
{
"Date": ["08/09/2018", "10/09/2018", "08/09/2018", "10/09/2018"],
"Fruit": ["Apple", "Apple", "Banana", "Banana"],
"Sale": [34, 12, 22, 27],
}
)
果物ごとの販売の累積合計を計算する場合、次のようにすべての日付を計算できます。
import pandas as pd
df = pd.DataFrame(
{
"Date": ["08/09/2018", "10/09/2018", "08/09/2018", "10/09/2018"],
"Fruit": ["Apple", "Apple", "Banana", "Banana"],
"Sale": [34, 12, 22, 27],
}
)
print(df.groupby(by=["Fruit", "Date"]).sum().groupby(level=[0]).cumsum())
上記のコードを実行すると、次の出力が得られます。これは、各日付の果物の累積合計を示しています。
Fruit Date Sale
Apple 08/09/2018 34
10/09/2018 46
Banana 08/09/2018 22
10/09/2018 49
他の列の値の条件に基づいて列の合計を取得するメソッド
このメソッドは、指定された条件が True
の場合に合計を取得し、条件が False
の場合に合計を指定された値に置き換える機能を提供します。次のコードについて考えてみます。
import numpy as np
import pandas as pd
df = pd.DataFrame(np.random.randn(5, 3), columns=list("xyz"))
df["sum"] = df.loc[df["x"] > 0, ["x", "y"]].sum(axis=1)
df["sum"].fillna(0, inplace=True)
print(df)
上記のコードでは、新しい列 sum
を DataFrame
に追加します。sum
要素は、['x']
が 1 より大きい場合、最初の 2 列 ['x'、 'y']
の合計です。それ以外の場合は、sum
を 0
に置き換えます。
コードを実行すると、次の出力が得られます。
x y z sum
0 -1.067619 1.053494 0.179490 0.000000
1 -0.349935 0.531465 -1.350914 0.000000
2 -1.650904 1.534314 1.773287 0.000000
3 2.486195 0.800890 -0.132991 3.287085
4 1.581747 -0.667217 -0.182038 0.914530
チュートリアルを楽しんでいますか? <a href="https://www.youtube.com/@delftstack/?sub_confirmation=1" style="color: #a94442; font-weight: bold; text-decoration: underline;">DelftStackをチャンネル登録</a> して、高品質な動画ガイドをさらに制作するためのサポートをお願いします。 Subscribe