데이터/데이터 분석

파이썬 판다스 (groupby / pivot_table)

Jerry_K 2024. 3. 18. 15:24

groupby

from sklearn.datasets import load_iris
import pandas as pd 
import numpy as np
iris = load_iris()
df = pd.DataFrame(iris.data,columns=iris.feature_names)
df["target"] =  iris.target

 

iris  데이터를 groupby 연습할 데이터로 써보자.

 

 

df.groupby(by="petal width (cm)").count().head()

 

사용 가능한 집계 함수는  count / size / sum / mean / std / var / min / max 의 값들이 있다.

 

 

df.groupby(["target","petal width (cm)"]).mean().head()

복수개의 컬럼을 기준으로 하면, 다중 인덱싱도 가능하다. 

 

 

df.groupby(["target","petal width (cm)"]).mean().head()

aggregate를 활용하면 데이터프레임의 값을 다양하게 집계 할 수 있다. 

 

 


pivot_table

피벗 테이블로 행 데이터를 열 데이터로 회전할 수 있다.

피벗 테이블은 기본적으로 index, columns, values를 지정하여 구성할 수 있다.

주로 특정 컬럼들을 따로 비교하고 싶을때 사용한다.

 

data = np.array([
    ['2024-03-01', 'Apple', 10, 2],
    ['2024-03-01', 'Orange', 15, 1.5],
    ['2024-03-02', 'Apple', 8, 2.2],
    ['2024-03-02', 'Orange', 12, 1.6],
    ['2024-03-03', 'Apple', 12, 2.1],
    ['2024-03-03', 'Orange', 18, 1.7]
])
data = pd.DataFrame(data,columns=["day","product","sale_mnt","price"])

 

피벗 테이블 연습하기 좋은 새로운 데이터 프레임을 만들었다.

 

 

data.pivot_table(index="day",columns="product",values="price")

 

날마다 제품별 가격이 궁금했기 때문에 위와 같은 코드를 작성하였다.

일반적으로 aggfunc의 기본값은 평균값이다.

 

 

data.pivot_table(index="day",columns="product",values="price",aggfunc=np.sum)

 

 평균값이 아닌 다른 집계함수를 쓰고 싶으면 aggfunc의 하이퍼 파라미터를 수정해주면 된다.