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
