PYTHON LIBRARY/Pandas Library

Python Pandas 카테고리컬 데이터 다루기 : groupby() , agg(), value_counts() 함수 활용

신강희 2024. 4. 12. 00:47
728x90

 

# 새로운 데이터 불러오기
# 상위 폴더로 경로 지절할땐 '../' 을 사용

 

df = pd.read_csv('../data/fake_company.csv')

< (중요!) 카테고리컬 데이터 ( Categorical Data )  >

# 중복이 발생하는 데이터 ex) 성별, 나이 등..

# 유니크한 데이터의 개수와 데이터 확인

# 상단에 데이터에서 'Year'을 가지고 실행

 

df['Year'].unique()

array([1990, 1991, 1992], dtype=int64)

데이터의 종류는 총 3가지인것 확인

 

# 유니크한 항목이 몇개인지 숫자로 바로 확인할떄

df['Year'].nunique()

3

 

# 'Department' 컬럼을 가지고 실행

df['Department'].unique()

array(['HR', 'RD', 'Admin'], dtype=object)

 

df['Department'].nunique()

3

 

# 이전장에서 사용하였던 .describe() 함수를 문자열(컬럼)을 지정하여 사용하면 갯수 중복성 정도를 알려준다.

df['Name'].describe()

count         9
unique        3
top       Alice
freq          3
Name: Name, dtype: object

ㄴ count : 총 데이터수 , unique : 데이터 종류, top : 가장 많이 표시된 값, freq : top 데이터가 나온 빈도

 

< (중요!!) 카테고리컬 데이터의 경우, 데이터 분석시! 데이터별로 묶어서 데이터를 분석할 수 있다. >

 

## 각 년도별로, 지급한 연봉 총합을 구해라

 

# ~별로 라는 말이 나오면 .group by로 생각해라
# .groupby는 카테고리컬 데이터 즉 중복이 발생되는 데이터에서 주로 사용한다.

 

df.groupby('Year')[ 'Salary' ].sum()

Year
1990    153000
1991    162000
1992    174000
Name: Salary, dtype: int64

 

# 각 직원별로, 얼마씩 받았는지 평균연봉을 구하라

df.groupby('Name')[ 'Salary' ].mean()

Name
Alice      54000.0
Bob        50000.0
Charlie    59000.0
Name: Salary, dtype: float64

 

# 년도별로, 연봉의 총합, 평균, 표준편차를 보여주세요

print(df.groupby('Year')[ 'Salary' ].sum())
print(df.groupby('Year')[ 'Salary' ].mean())
print(df.groupby('Year')[ 'Salary' ].std())

Year
1990    153000
1991    162000
1992    174000
Name: Salary, dtype: int64
Year
1990    51000.0
1991    54000.0
1992    58000.0
Name: Salary, dtype: float64
Year
1990    3605.551275
1991    5291.502622
1992    5291.502622
Name: Salary, dtype: float64

 

< print로 개별로 묶지않고 .agg (통계함수) 를 사용하여 한번에 출력할수 있다. >

df.groupby('Year')[ 'Salary' ].agg(['sum' , 'mean' , 'std'])

< 컬럼별로 중복된 항목이 몇개씩인지 구하기 >

 

# Name 컬럼은, 각 이름별로 몇개의 데이터가 있나? (1)

df.groupby('Name')['Name'].count()

Name
Alice      3
Bob        3
Charlie    3
Name: Name, dtype: int64

 

# Name 컬럼은, 각 이름별로 몇개의 데이터가 있나? (2) => 자주 사용하는 함수 열의 value 값을 카운트

df['Name'].value_counts()

Name
Alice      3
Bob        3
Charlie    3
Name: count, dtype: int64

 

다음 게시글에서 계속

반응형