KT AIVLE SCHOOL 복습

KT AIVLE DX #2 - 데이터 다듬기(3) 데이터프레임 탐색, 조회, 집계

전쏘스 2023. 3. 12. 02:38

 

1. 테이터프레임 탐색

  • 데이터프레임의 기본 정보를 탐색하는 것
  • 데이터의 크기, 내용, 분포, 누락된 값(결측치) 등을 확인
  • 확인된 내용을 통해 데이터 전처리 필요 여부를 결정

 

데이터 확인에 사용되는 주요 메소드 head(x) : x개 만큼의 상위 데이터 확인 (기본값 = 5) tail(x) : x개 만큼의 하위 데이터 확인 (기본값 = 5) shape : 데이터프레임 크기 index : 인덱스 정보 확인 values : 값 정보 확인 columns : 열 정보 확인 dtypes : 열 자료형 확인 info() : 열에 대한 상세한 정보 확인 → (열이름, 해당열 개수, 데이터 타입, 전체 행 개수 등) describe() : 기초통계정보 확인

 

※describe()를 이용해 사분위수를 뽑아내는 법!

# 특정열에 대한 기초통계정보 확인
df['column'].describe()

# 1사분위(25%), 2사분위(50%), 3사분위(75%)
df['column'].describe()['25%']
df['column'].describe()['50%']
df['column'].describe()['75%']

 

1) 정렬해서 보기

  • sort_values() : 특정 열을 기준으로 정렬 → ascending 옵션을 설정해 오름차순, 내림차순을 설정 → True : 오름차순(기본값) / Fasle : 내림차순
# 단일 열 정렬
df.sort_values(by = 'column', ascending = True)

# 복합 열 정렬
df.sort_values(by = ['column1', 'column2'], ascending = [False,False]

2) 기본 집계

a. 고유값 확인

  • unique() : 고유값을 확인하며, 결과값은 배열 형태가 됨
  • value_counts() : 고유값과 그 개수를 확인, 결과값은 시리즈 → dropna 옵션을 생략하거나 True로 지정하면 결측치는 제외
  • nunique() : 고유한 요소의 수를 나타내는 메소드

b. 최빈, 최대, 최소, 평균, 중앙값, 합계

  • mode(): 가장 많이 관측되는 수 / 최빈값
  • max() : 최대값
  • min() : 최소값
  • mean() : 평균
  • median() : 중앙값
  • sum() : 합계 → axis=0 (모든 행 합계) / axis=1 (모든 열 합계)

 


2. 데이터프레임 조회

a. 특정 행/열 조회

  • 특정 행 조회 : df.loc[[행1, 행2...], :]
  • 특정 열 조회 : df.loc[:, [열1, 열2...]]
  • 행, 열 다 가져오기 : df.loc[:,:]

b. 행/열 범위 조회

  • 행 범위 조회 : df.loc[행1:행2 , :]
  • 열 범위 조회 : df.loc[:, 열1:열2]

c. 조건으로 조회

  • 단일 조건 조회 : df.loc[조건 ,:]
tip.loc[tip['tip'] > 6.0, : ]

>> tip 데이터 프레임에서 tip 열 값이 6.0 초과인 행 조회
  • 여러 조건 조회 : 조건에 & 나, | 를 사용해서 조회 가능
  • isin([값1, 값2, 값3....]): 값1 또는 값2 또는 값3… 인 데이터 조회
  • between(값1, 값2) : 값1 ~ 값2까지 범위 안 데이터 조회
  • 조건을 만족하는 행의 일부 열 조회 : df.loc[조건, [열1, 열2..]]

 


3. 데이터프레임 집계

  • 합의 경우 sum()
  • 평균의 경우 mean()
  • 사용법은 동일
구분 주요 역할 집계값
연속값 대부분 집계 대상 열이 됨 → __의 평균 합, 평균, 최댓값, 최솟값
범주값 대부분 집계 기준이 됨 → __별 개수, 최빈 값

1) 열 하나 집계

df['column'].sum()

2) 집계하기

  • 만약에 어떤 범주값 별로 합을 구하고자 한다면 groupby() 를 사용
# 예시 day별 tip의 합
tip.groupby(by='day', as_index=True)['tip'].sum()

>> 결과가 시리즈가 됨

# 예시 day별 tip의 합
tip.groupby(by='day', as_index=True)[['tip']].sum()

>> 결과가 데이터프레임이 됨

# 예시 day별 tip의 합
tip.groupby(by='day', as_index=False)['tip'].sum()

>> as_index 를 False 주게 되면 정수 값이 인덱스가 됨

# 예시 여러 열에 대한 집계 후 데이터 프레임으로 저장
tip_sum = tip.groupby(by='day', as_index=False)[['total_bill', 'tip']].sum()

# 확인
tip_sum

# day별 나머지 열들 합계 조회
tip_sum = tip.groupby(by='day', as_index=False).sum()

# 확인
tip_sum
# day + smoker별 나머지 열들 합계 조회
tip_sum = tip.groupby(by=['day', 'smoker'], as_index=False).sum()

# 확인
tip_sum