brunch

You can make anything
by writing

C.S.Lewis

by 유자 Jan 24. 2023

혼공학습단 9기 3주차 / 데이터분석 with 파이썬

지난 주에 분명 가볍게 가자고 했는데, 우연히 그 글이 우수글로 뽑혔다.

커피 쿠폰 감사합니다.



03. 데이터 정제하기


* 주어진 데이터를 df로 정의했다고 가정


03-1. 불필요한 데이터 삭제하기

1) 열 삭제

- loc로 슬라이싱 : df.loc[:, '시작하는 열 이름' : '끝나는 열 이름'] //연속적인 열만 선택할 수 있음

- colums로 비교연산 : df.colums != '불필요한 열 이름' //불필요한 열 선택

- drop() 메서드 : df.drop(['불필요한 열 이름', '다수 열 가능'], axis=1) //axis=1이면 열, 0이면 행

                                            ,inplace=True  //현재 선택한 데이터프레임 df에 바로 수정, 저장됨

- dropna() 메서드 : df.dropna(axis=1) // NaN이 하나 이상 포함된 행이나 열 삭제 

                                                                  //axis=1이면 열, 0이면 행


2) 행 삭제

- drop() 메서드 : df.drop[0,1]  // 인덱스 0부터 1까지 2개의 행 선택 삭제, 숫자인 경우에만 사용 가능

- [] 연산자와 슬라이싱 : df[2:]   // 인덱스 2부터 모든 행 선택, 2 미만 제외

- [] 연산자와 불리언배열 : df['검색할 행'] == '검색키워드'  // 엑셀 필터 기능, 특정 키워드가 있는 행 선택


3) 중복된 행 찾기

- duplicated() 메서드 : sum(df.duplicated())   // 중복된 행 개수 합산

                                        sum(df.duplicated(subset=['일부 열 선택']))   // 선택한 열에서 중복 확인


4) 그룹별로 모으기

- groupby() 메서드 : df.froupby(by=['그룹으로 묶을 기준 열'], dropna=False)


03-2. 잘못된 데이터 수정하기

1) 데이터프레임 정보 요약 확인

- df.info()  // 데이터프레임 요약 정보 확인

                   // 전체 행 개수, 열 개수, 열 이름, 각 열마다 값이 있는 행 개수, 열 데이터 타입


2) 누락된 값 처리하기

- df.isna().sum()  // 각 행에서 비어있는 개수

- df.notna().sum()   // 각 행에서 값이 있는 개수


3) 데이터 타입 변경(실수에서 정수)

- df.astype({'선택한 열': 'int32'})


4) NaN 입력

- import numpy as np //넘파이 패키지에 있는 np.nan 사용

- df.loc['NaN으로 바꿀 데이터 행 번호', 'NaN으로 바꿀 데이터 열 이름'] = np.nan


5) 누락된 값 바꾸기

- df.fillna('없음')  // df 데이터프레임에 있는 모든 NaN을 '없음' 문자열로 대체 후 저장

- df['열 이름'].fillna('없음')  // df 중 '열 이름' 열에서만 대체

- df.replace('원래 값', '새로운 값')   // 원래 값을 새로운 값으로 대체

- df.replace(['원래 값1',  '원래 값2'], ['새로운 값1''새로운 값2'])   // 다수 값 대체

- df.replace({'열 이름' : '원래 값'}, '새로운 값')   // 열마다 새로운 값으로 대체 


6) 정규 표현식

- 숫자 찾기 \d

- 문자 찾기 .


7) 잘못된 값 바꾸기

- df.str.contains('찾는 값').sum()   // 찾는 값이 포함된 행 개수


8) 누락된 정보 채우기

- 채울 수 있는 정보는 최대한 채우기



기본 미션

p. 182, 2번 문제

4번


* 문제 오탈자 있습니다.

2. 1번 문제의 df1 데이터프레임에서 'col1'열의 합을 계산하는 명령으로 올바르지 않은 것은 무엇인가요?


선택 미션

p. 219, 5번 문제

1번


* 2번, 4번 답안의 내용이 동일한 것 같습니다.



#혼공 #혼공학습단

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari