본 포스팅은 2021 NIPA AI 온라인 무료 교육의 AI 실무 기본 과정을 기반으로 작성하였습니다.
1. 데이터 정렬하기
데이터 정렬은 index 값 기준, column 값 기준으로 정렬할 수 있습니다.
1.1. index 값 기준으로 정렬하기
index 값 기준으로의 정렬은 행 index 기준과 열 index 기준으로도 가능합니다. 아래 예시를 살펴보겠습니다. 간단한 데이터 프레임 df를 생성한 후에 idex 기준으로 정렬하는 예를 실행해 보겠습니다.
import numpy as np
import pandas as pd
data = {
____'col1' : [1, 2, 9, 7, 8, 4],
____'col2' : ['A', 'A', 'B', 'D', np.NaN, 'C'],
____'col3' : [1, 0, 9, 2, 4, 3]
}
df = pd.DataFrame(data, index = [1, 0, 2, 4, 3, 5])
print(df)
df = df.sort_index(axis = 0) # axis = 0 행 인덱스 기준 정렬 (Default 오름차순)
print(df)
df = df.sort_index(axis = 1, ascending = False) # axis = 1 열 인덱스 기준 정렬 (내림차순)
print(df)
1.2. column 값 기준으로 정렬하기
# col1 컬럼의 값 기준으로 오름차순 정렬하기
df = df.sort_values('col1', ascending = True)
print(df)
# col1 컬럼의 값 기준으로 내림차순 정렬하기
df = df.sort_values('col1', ascending = False)
print(df)
# col2 컬럼 값 기준으로 오름차준 정렬 & col1 컬럼 값 기준으로 내림차순 정렬하기
df = df.sort_values(['col2','col1'], ascending = [True, False])
print(df)
2. 데이터프레임 분석용 함수
2.1. 집계함수 Count
count 매서드를 활용하여 데이터 개수 확인이 가능합니다. Default 는 NaN 제외입니다. 간단한 데이터 프레임을 만들고, 예제를 살펴 보겠습니다.
import numpy as np
import pandas as pd
data = {
____'korea' : [50, 60, 70],
____'math' : [10, np.NaN, 40]
}
df = pd.DataFrame(data, index = ['a', 'b', 'c'])
print(df.count(axis = 0)) # 열 기준으로 데이터 개수 확인
print(df.count(axis = 1)) # 행 기준으로 데이터 개수 확인
2.2. 최대, 최소값 함수
min, max 매서드를 활용하여 최소값 및 최대값 확인이 가능합니다. count와 마찬가지로 Default는 NaN 제외입니다.
print(df.min())
print(df.max())
2.3. 합계 및 평균 함수
sum 및 mean 매서드를 활용하여 합계와 평균 값을 산출할 수 있습니다. 역시 Default는 NaN 제외입니다.
print(df.sum())
print(df.mean())
axis 및 skipna 인수를 활용해서 합계 및 평균을 산출할 수 있습니다.
print(df.sum(axis = 1)) # 행 기준의 합 계산
print(df.sum(axis = 1, skipna = False)) # 행 기준의 합 계산 (단, NaN 값 존재 시 결과는 NaN)
NaN 값이 존재하는 컬럼의 평균값을 구한 후 NaN을 평균값으로 대체할 수 있습니다.
B_avg = df['math'].mean()
print(B_avg)
# 25.0
df['math'] = df['math'].fillna(B_avg)
df.mean(axis = 1, skipna = False)
3. 그룹으로 묶기
간단한 집계를 넘어 조건부로 집계할 수도 있습니다. 이 역시 간단한 데이터 프레임을 생성한 후에 예를 들어 보겠습니다.
import pandas as pd
df = pd.DataFrame({
____'data1' : range(6),
____'data2' : [4, 4, 6, 0, 6, 1],
____'key' : ['A', 'B', 'C', 'A', 'B', 'C']
})
print(df.groupby('key').sum()) # df라는 데이터 프레임에 대해서 'key' 별로 합계 계산 후 출력
두 개 이상의 칼럼 값에 대해서도 그룹별 summary된 값을 계산할 수 있다.
# 위의 예시에서 사용한 데이터 프레임 계속 사용
print(df.groupby(['key', 'data1']).sum())
aggregate 함수를 이용해서 요약통계량을 한번에 계산할 수도 있습니다.
print(df.groupby('key').aggregate(['min', np.median, max]))
원하는 컬럼에 대해서 원하는 요약통계량만을 계산할 수도 있습니다.
df.groupby('key').aggregate({'data1' : min, 'data2' : np.sum})
또한 그룹 속성을 기준으로 데이터 필터링을 수행할 수도 있습니다.
def filter_by_mean(x) :
____return x['data1'].mean() > 3
print(df)
# df 데이터프레임 출력
print(df.groupby('key').mean())
# key 기준으로 각각의 컬럼에 대해 평균값 산출
print(df.groupby('key').filter(filter_by_mean))
# key 기준으로 data1 칼럼의 평균값이 3보다 큰 데이터만 출력
groupby를 통해서 묶인 데이터에 함수를 적용할 수도 있습니다.
df.groupby('key').apply(lambda x : x.max() - x.min())
'Python > Python 기초' 카테고리의 다른 글
파이썬(Python) 설치하기 (0) | 2021.08.07 |
---|---|
[파이썬완전기초]데이터시각화 Metplotlib (0) | 2021.07.31 |
[파이썬완전기초]데이터다루기Pandas기본 (0) | 2021.07.29 |
[파이썬완전기초]Numpy (0) | 2021.07.28 |
[파이썬완전기초]모듈과 패키지 (0) | 2021.07.27 |
댓글