from google.colab import drive
drive.mount('/content/drive')
- loc: 레이블 기반 데이터 선택 방법
- iloc: 정수 기반 데이터 선택 방법
df.loc[[0,10,100,1000],['col1','col2']]
df.iloc[[0,10,100,1000],[0,1]]
## 예제 ##
# loc: 값이 2인 행부터 5인 행까지와 col1인 열부터 col3인 데이터 > 네이밍
# iloc: 2번째부터 4번재 행까지와 0번째 열과 2번째 열인 데이터 > 인덱싱
df.loc[2:5, 'col1':'col3']
df.iloc[2:5,[0,2]]
- describe: 기술통계
- value_counts: 각 요소가 나타나는 횟수
- apply: 사용자 정의 함수
- sort_values: 값에 따라 오름차순 정렬, ascending = False 설정 시 내림차순 정렬
# column별로 오름차순, 내림차순 정렬 설정 가능
df.sort_values(['col1', 'col2'], ascending = [True, False])
- mean, std: 평균, 표준편차로 axis = 0은 행 단위, axis = 1은 열 단위로 집계
df.mean(axis = 0) # 열별 합
df.mean(axis = 1) # 행별 합
- rank(method = 'average'): 동순위는 평균값으로 대체
- rank(method = 'max'): 동순위는 최대값으로 대체
- rank(method = 'min'): 동순위는 최솟값으로 대체
- rank(method = 'first'): 동순위는 먼저 값부터 순위 부여
- rank(method = 'dense'): 동순위는 최솟값 부여하며 동순위 있더라도 다음 순위는 1만 증가
## 예제 ##
# 2번째가 동순위인 경우
df['col'].rank(method = 'average') # 1 2.5 2.5 4
df['col'].rank(method = 'min') # 1 2 2 4
df['col'].rank(method = 'max') # 1 3 3 4
df['col'].rank(method = 'first') # 1 2 3 4
df['col'].rank(method = 'dense') # 1 2 2 3
- count: 중복을 허용해서 집계
- nunique: 중복을 허용하지 않고 집계
- idxmax: 최댓값이 있는 인덱스 값
# col1을 기준으로 col2 최대값이 있는 행 반환
df.loc[df.groupby('col1')['col2'].idxmax()]
- agg: aggregation의 약어로 다중 집계 가능
# col1 기준으로 col2 값의 mean, median, std 집계
df.groupby('col1')['col2'].agg(['mean', 'median', 'std'])
# col1, col2 기준으로 col3의 mean, std 값과 col4의 sum 값
df.groupby(['col1', 'col2']).agg({
'col3': ['mean', 'std'],
'col4': ['sum']
})
# 병합 후 인덱스 초기화
pd.concat([df1, df2, df3], ignore_index = True)
# 행 기준으로 병합
pd.concat([df1, df2, df3], axis = 1)
- merge: 두 개의 데이터프레임을 키 값 기준으로 병합
df1.merge(df2, left_on = 'col1', right_on = 'col2')
# df라는 데이터프레임을 col1, col2, col3 열을 제외한 모든 열을 행으로 재구조화
# id_vars: 기준이 되는 칼럼
# var_name: 가져오는 변수에 대한 칼럼명
# value_name: 값에 대한 칼럼명
pd.melt(df, id_vars = ['col1', 'col2', 'col3'],
var_name = 'new1', value_name = 'new2')
- dropna: NaN 있는 행 삭제
- drop_duplicates: 중복된 행 삭제
- str.split: 시리즈 안에 있는 문자열에 접근
# df라는 데이터
df['col1'].str.split('_')
- pivot_table: 행을 열로 재구조화하여 집계값 반환
# index: 행 인덱스
# columns: 열 인덱스
# values: 데이터 값
# aggfunc: 집계 함수
pd.pivot_table(data, index = 'col2', columns = 'col2', values = 'col3', aggfunc = 'mean')
# 열마다 다른 집계 함수를 적용하는 경우 딕셔너리 활용
pd.pivot_table(data, index = 'col1', columns = 'col2',
values = {'col3': 'max', 'col4': 'min'})
- corsstab: 행을 열로 재구조화해서 빈도수 반환
# index: 행 인덱스
# columns: 열 인덱스
# margins = True: 총합 계산
# normalize = True: 비율 계산
pd.crosstab(index = df['col1'], columns = df['col2'],
margins = True, normalize = True)
- np.nan: 누락값으로 비교 연산 불가
- dropna: 누락값 있는 행 또는 열 삭제
df.dropna(axis = 0) # 행 기준
df.dropna(axis = 1) # 열 기준
df.dropna(subset = 'col1') # 특정 열 기준
df.fillna(method = 'ffill') # front fill
df.fillna(method = 'bfill') # back fill
df.fillna(df.mean()) # 누락값 각 열의 평균으로 채우기
df.fillna({'col1': 1, 'col2': 2}) # 각 열을 원하는 값으로 채우기
df.replace(np.nan, 0) # 누락값을 0으로 대체
df.replace({'col1': np.nan}, 0) # col1이 누락값이면 0으로 대체
- isnull: 누락값인지 확인
- notnull: 누락값이 아닌지 확인
# 누락값 개수 확인
df.isnull().sum()
# 시간의 흐름에 맞게 선형보간
# 인덱스가 시간 데이터일 때 가능
df.interpolate(method = 'time')
- pd.to_datetime: 시간 데이터로 변환
# format: 시간 포맷 지정
# errors: 에러 처리 방식으로 'coerce'는 처리할 수 없는 데이터는 NaT로 변환
pd.to_datetime(df.date, format = '%Y%m%d', errors = 'coerce')
- df.set_index: 원하는 칼럼을 인덱스로 설정
- df.sort_index: 인덱스 정렬