데이터프레임 정렬하기
- 인덱스, 컬럼값으로 정렬할 수 있음.
Index, Column 기준으로 정렬하기
axis = 0 : 행 인덱스 기준 정렬(Default 오름차순)
ascending = False : 오름차순 / Tru : 내림차순
import numpy as np
import pandas as pd
print("DataFrame: ")
df = pd.DataFrame({
'col1' : [2, 1, 9, 8, 7, 4],
'col2' : ['A', 'A', 'B', np.nan, 'D', 'C'],
'col3': [0, 1, 9, 4, 2, 3],
})
print(df, "\n")
# 인덱스 기준으로 내림차순 정렬
df.sort_index(axis = 1, ascending = False)
# col1 컬럼기준 정렬 오름차순 (Default 오름차순)
df.sort_values('col1', ascending = True)
# col2 컬럼기준 오름차순 정렬 후 col1 컬럼기준 내림차순 정렬
df.sort_values(['col2', 'col1'], ascending = [True, False])
데이터프레임 분석용 함수
집계함수 - Count, max, min, sum, mean
- count메서드 활용하여 데이터 개수 확인 가능. (Defalut : NaN값 제외)
data = {
'korean' : [50, 60, 70],
'math' : [10, np.nan, 40]
}
df = pd.DataFame(data, index = ['a', 'b', 'c']
# 열 카운트
df.count(axios = 0)
# 행 카운트
df.count(axis = 1)
# 최대값 (Default axios = 0 열기준, NaN값 제외)
df.max()
# 최소값
df.min()
# 합계
df.sum()
# 평균
df.mean()
# 합계 행기준
df.sum(axis = 1)
# 평균 행기준, NaN 값 포함시
df.mean(axis = 1, sipna = False)
# Nan값이 존재할 때 해당 열 평균값을 구하여 NaN값을 대체 할 경우
B_avg = df['math'].mean()
print(B_avg)
# NaN값 대체
df['math'] = df['math'].fillna(B_avg)
# 평균
df.mean(axis = 1, skipna = False)
그룹으로 묶기
- 간단한 집계를 넘어서서 조건부로 집계하고 싶은 경우
- groupby. SQL 과 유사함.
- aggregate. groupby를 통해서 집계를 한번에 계산하는 방법.
- filter. groupby를 통해서 그룹 속성을 기준으로 데이터 필터링.
- apply, lambda. 적용 가능.
- groupby로 묶인 데이터에서 key값으로 데이터를 가져올 수 있다.
import numpy as np
import pandas as pd
df = pd.DataFrame({
'key': ['A', 'B', 'C', 'A', 'B', 'C'],
'data1': [1, 2, 3, 1, 2, 3],
'data2': [4, 4, 6, 0, 6, 1]
})
print("DataFrame:")
print(df, "\n")
# data2 컬럼의 평균이 3보다 큰 것만 필터링.
def filter_by_mean(x):
return x['data2'].mean() > 3
# 집계함수 min, numpy의 median, pandas의 집계함수 max
# 표현방식이 아래와 같이 다양함.
df.groupby('key').aggregate(['min', np.median, max])
df.groupby('key').aggregate({'data1' : 'min', 'data2': np.sum})
df.groupby('key').mean()
df.groupby('key').filter(filter_by_mean)
df.groupby('key').apply(lamda x: x.max() - x.min())
df = pd.read_csv("./univ.csv")
# 상위 5개 데이터
df.head()
# 데이터 추출
df.groupby("시도").get_group("충남")
len(df.groupby("시도").get_group("충남")) # 94
'Python' 카테고리의 다른 글
| Python의 모듈과 패키지 (0) | 2021.09.21 |
|---|---|
| Python-자료형 활용 (0) | 2021.09.21 |
| Python의 기본내용 (0) | 2021.09.16 |
| Windows 에서 PIP 설치하기 (0) | 2021.09.15 |