Pandas 열의 합계를 얻는 방법
Asad Riaz
2023년1월30일
우리는 pandas dataframe column
의 sum
을 얻는 방법과 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
방법을 사용하여 누적 합계를 얻을 수 있습니다. 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)
위의 코드에서 우리는[ 'x']
가 1보다 크면 첫 번째 열[ 'x', 'y']
의 합인 DataFrame
에 새 열 sum
을 추가합니다. 그렇지 않으면 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