1. 열 변경
1) 열 이름 변경
rename()
메소드를 사용해 변경 전 후의 열 이름을 딕셔너리 형태로 나열하는 방법 → inplace=True 를 주어야 실제 반영
df.rename(columns={'A': 'B',
'C': 'D',
inplace=True)
- 모든 열 이름을 변경할 때는 columns 속성을 변경 → 변경이 필요 없는 열은 기존 이름을 부여해야 함!
# 기존 열 이름 : ['A', 'B', 'C']
# 변경하고자 하는 이름 : ['A', 'D', 'E']
df.columns = ['A', 'D', 'E']
2) 열 추가
- 새로운 열을 추가하여 기존 데이터에서 계산된 결괏값을 저장하는 경우
df['new'] = df['A'] + df['B']
insert()
메소드를 사용해 원하는 위치에 열 추가 가능
df.insert(원하는 위치, 지정하고자하는 열 이름, 계산 식)
3) 열 삭제
- 무언가를 삭제할 때는 항상 조심!!! 해야함
drop()
메소드를 사용해 열 삭제 → axis = 0 : 행 삭제 → axis = 1 : 열 삭제 → inplace = True : 옵션을 지정해야 실제 반영 → 여러 열 삭제할 시에는 리스트 형식으로 전달
# 열 하나 삭제: final_amt
tip.drop('final_amt', axis=1, inplace=True)
# 열 두 개 삭제: div_tb, day
tip.drop(['div_tb', 'holiday'], axis=1, inplace=True)
# 행삭제 1,2,3
row_x = [1,2,3]
tip.drop(row_x, axis=0, inplace=True)
2. 범주값 변경
map()
: 매핑되지 못한 나머지 값은 결측치가 됨
replace()
: 매핑되지 못한 값은 원래 값으로 남음
# 코드 사용법
df['x'] = df['x'].map({'A':1, 'B':2})
3. 범주값 만들기
- 연속값을 구간을 나누어 범주값으로 표현하는 과정을 이산화라고 함
cut()
,qcut()
을 사용해 쉽게 수행 가능
# 코드 사용법
bin = [-np.inf, 구간1, 구간2,..., np.inf]
label = [구간이름1, 구간이름2, 구간이름3, 구간이름4..]
df['column'] = pd.cut(df['column'], bins=bin, labels=label)
>> qcut()의 경우 bins를 따로 주지 않고, 구간 개수를 지정하면 됨
4. 결측치 처리
1) 결측치 찾기
- info() 메소드로 확인
isnull()
,notnull()
메소드 사용
df.isna().sum()
열의 결측치 개수를 확인 가능
2) 결측치 제거
dropna()
메소드로 결측치가 있는 열이나 행 제거 가능 → axis=0 : 행 제거 → axis=1 : 열 제거
subset='열이름'
옵션을 지정해 해당 열에 결측치가 있는 행 제거 가능
# 결측치가 하나라도 있는 행 제거
df.dropna(axis=0, inplace=True)
# 특정열의 결측치인 행 제거
df.dropna(subset='column', axis=0, inplace=True)
# 결측치가 있는 열 제거
df.dropna(axis=1, inplace=True)
3) 결측치 채우기
fillna()
메소드를 사용해 채우기 가능
a. 평균값으로 채우기
# Ozone 평균 구하기
mean_Ozone = air_test['Ozone'].mean()
# 결측치를 평균값으로 채우기
air_test['Ozone'].fillna(mean_Ozone, inplace=True)
b. 특정 값으로 채우기
# Solar.R 열의 누락된 값을 0으로 채우기
air_test['Solar.R'].fillna(0, inplace=True)
c. 직전 행 값, 또는 다음 행 값으로 채우기
# Ozone 열의 누락된 값을 바로 앞의 값으로 채우기
air_test['Ozone'].fillna(method='ffill', inplace=True)
# Solar.R 열의 누락된 값을 바로 뒤의 값으로 채우기
air_test['Solar.R'].fillna(method='bfill', inplace=True)
d. 선형보간법으로 채우기
# 선형보간법으로 채우기
air_test['Ozone'].interpolate(method='linear', inplace=True)
5. 가변수 만들기
- 가변수는 일정하게 정해진 범위의 값을 갖는 데이터를 독립된 열로 변환하는 것
- 범주형 문자열 데이터는 머신러닝 알고르지므에 사용하려면 숫자로 변환해야함
- 가변수를 만드는 과정을 One-Hot-Encoding 이라고 부름
get_dummies()
함수를 이용해 쉽게 만들 수 있음
# 가변수화: sex
# 이것은 머신러닝 마지막 전처리 과정으로 사용해주는 것이 좋다.
# 왜냐 미리 가변수화를 해주면 우리가 시각화했을때 데이터 확인이 어렵!
# 의미 파악이 어려워져서 우리가 탐색 완료한 뒤에 하는것!!!
tip = pd.get_dummies(tip, columns=['sex'], drop_first=True)
6. 데이터프레임 합치기
1) concat
concat()
함수를 이용해 인덱스 값을 기준으로 두 데이터프레임을 가로, 세로로 합칠 수 있음
a. 가로로 합치기

# 모든 행 합치기
pop = pd.concat([pop01,pop02], join='outer', axis=1)
b. 세로로 합치기

pop = pd.concat([pop01,pop02], join='outer', axis=0)
2) Merge
- 두 데이터프레임을 지정한 키 값을 기준으로 병합
- 2개의 데이터만!! 합칠 수 있다. (가로로)
- on으로 옵션을 지정하여 같은 이름의 열을 가진 열을 기준으로 조인
pop = pd.merge(pop01, pop02, on='year', how='inner')