pandas & duckdb

데이터 전처리, 추가, 삭제, 변환

wefree 2022. 10. 8. 21:39
import pandas as pd
import seaborn as sns

df = sns.load_dataset('titanic')

# 임의의 값을 대입하여 새로운 컬럼을 마지막에 추가
df['VIP'] = True

# 중간에 컬럼을 추가하고 싶은 경우 insert()를 활용
df.insert(5, 'RICH', df['fare'] > 100)

# 행 삭제
df.drop(1)
df.drop([1, 3, 5])
df.drop(range(1, 10))

# 열 삭제
df.drop('class', axis=1)
df.drop(['who', 'deck'], axis=1)

# 삭제된 내용을 바로 적용하려면 inplace=True를 지정
df.drop(['who', 'deck'], axis=1, inplace=True)

# 컬럼간 연산
df['family'] = df['sibsp'] + df['parch']
df['gender'] = df['who'] + '-' + df['sex']

# round()를 사용하여 소수점 자릿수를 지정
# 연산시 1개의 컬럼('fare' or 'age') 이라도 NaN 값을 포함하고 있다면 결과는 NaN
df['ROUND'] = round(df['fare'] / df['age'], 2)

# category type 으로 변경
df['who'] = df['who'].astype('category')

# 타입을 category로 변환했다면 .cat으로 접근하여 category 타입이 제공하는 attribute를 사용할 수 있습니다.
df['who'].cat.categories

# 카테고리 이름 변경: 순서에 맞게 입력
df['who'].cat.categories = ['아이', '남자', '여자']
df['who'].value_counts()
 참고
# pd.to_datetime(): datetime type으로 변환
pd.to_datetime(df['일자'])
df['일자'].dt.year

# 구간 나누기(binning) - pd.cut(), pd.qcut()
# https://wikidocs.net/136666 참고

 

참고: https://www.udemy.com/course/pandas-i/