Pandas 문법 정복하기 !

aongee log·2024년 10월 28일

KT AIVLE

목록 보기
2/11
post-thumbnail

에이블 스쿨을 수강한지 두 달째,
벌써 3번의 미니프로젝트를 마치고 4차 미니프로젝트를 시작한 가운데

미니프로젝트에서 절대로 빠질 수 없는 과정이 있는데
바로 데이터 분석 및 전처리 과정이다.

에이블 스쿨 2주차에 배웠던 데이터 분석 수업을 되뇌이며,
미니프로젝트 등 실전에 자주 쓰이는 Pandas 문법을 정리해보았다.

데이터 불러오기 & 기본 정보 확인

# 데이터 불러오기
df = pd.read_csv(path + '1.2 seoul_moving_month_202408.csv', sep=',', encoding='UTF-8')

# 데이터프레임 크기(행, 열) 확인
df.shape

# head() 메서드로 상위 데이터 확인
df.head()

# tail() 메서드로 하위 데이터 확인
df.tail()

# info() 메서드로 열 이름, 데이터 개수, 데이터 형식 등 확인
df.info()

# describe() 메서드로 기술통계정보 확인
df.describe()

열 확인/추가/제거/변경

# '번호' 열 확인
df['번호']

# 기존열을 변경하여 새로운 열 추가
# 참고: df['새열'] = df['기존열'].str[m:n] 형태로 슬라이싱
df['새열'] = df['기존열'].str[:2]

# '번호, 주소' 열 제거
df.drop(['번호', '주소'], axis=1, inplace=True)

# '번호' 열 데이터 형식 변경
df['번호'] = df['번호'].astype(int)

# '인구' 열 * 값을 '1.5'로 변경 (str 형태의 1.5)
# 참고: replace() 메서드 사용
df['인구'] = df['인구'].replace('*', '1.5')

진짜 많이 쓰는 문법

# 열 이름 변경: '번호 ' --> '전화번호', '주소 ' --> '집주소'
# 참고: rename() 메서드 사용
df.rename(columns={'번호' : '전화번호', '주소' : '집주소'}, inplace = True)

# fd, df 데이터프레임 조인
# 참고: '번호' 열이 조인 기준, how='inner' 지정
tmp = pd.merge(fd, df, on='번호', how='inner')

# 자치구별 '버스정류장' 개수 집계
# 참고: groupby() 메서드 사용, as_index=False 지정, nunique() 집계
df_as = df.groupby('자치구', as_index=False)['버스정류장'].nunique()
# 여러 열 집계하고 싶으면,
df_as = df.groupby('자치구', as_index=False)[['버스정류장','주소']].nunique()

# 서울지역 데이터 추출
# 참고: df = df.loc[(조건1) & (조건)] 형태 구문 사용
df = df.loc[(df['번호'] < 20000) & (df['주소'] < 20000)]

기타

# 첫 번째 행 제거
# 참고: df.drop(인덱스) 형태 구문 사용 
dff= df.drop(0)

# 인덱스 초기화
df = df.reset_index(drop=True)

# 76번 검색
df.loc[df['번호'] == 76]

# '인구' 값별 갯수 확인
# 참고: value_counts() 메서드 사용
df['인구'].value_counts()

# '초딩','중딩','고딩' 행만 갖게
# df = df[['열1', '열2', '열3']] 형태의 구문 사용
dff = df[['초딩','중딩','고딩']]

0개의 댓글