[혼공분석] 3주차_Ch.03_데이터 정제하기

JIN A·2024년 1월 21일
0

✅혼자 공부하는 데이터 분석 with 파이썬
진도 : Chapter 03

실습파일 : Library.ipynb


(완료) 기본 미션 : p. 182의 확인 문제 2번 풀고 인증하기

() 선택 미션 : p. 219의 확인 문제 5번 풀고 인증하기


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

데이터 정제 (data cleaning) : 결측값 & 이상치 처리

데이터 랭글링 (data wrangling), 데이터 먼징(data munging) : 데이터 정제, 구조화 및 조작

원소별 비교 (element-wise comparison) : 판다스 배열 성격의 객체가 어떤 값과 비교할 때 자동으로 배열에 있는 '모든 원소마다' 하나씩 비교해주는 것.


[열 삭제하기]

  • 비교연산자 이용하기
    df != index
    결과는 불리언 배열 (T/F)로 반환된다. (넘파이 배열)
selected_columns = df.columns != 'Unnamed: 13'
ns_book = df.loc[:, selected_columns]
ns_book.head()
  • drop() 메서드 : 행/열 삭제
    drop(삭제열이름, axis=1)
ns_book = df.drop(['부가기호', 'Unnamed: 13'], axis=1)
ns_book.head()
 
# inplace 메서드는 바로 덮어쓰기 가능
 df.drop(['부가기호', 'Unnamed: 13'], axis=1, inplace=True)
 ns_book.head()
  • dropna() 메서드 : NaN이 포함된 행/열 삭제
# inplace 메서드는 바로 덮어쓰기 가능

#하나라도 NaN 값 있으면 삭제
ns_book = df.dropna(axis=1)

#모든 값이 NaN인 경우만 삭제
ns_book = df.dropna(axis=1, how='all')

[행 삭제하기]

  • drop()
    행을 나타내는 'axis=0'이 기본 값이므로, 생략 가능하다.
    ex) df.drop([0,1])

  • []연산자와 슬라이싱
    ex) df = df[2:] 이 경우는 2행부터 마지막 행까지 선택
    ex) df = df[0:2] 이 경우는 0,1행만 선택

  • []연산자와 불리언 배열 - 특정 조건 줄 때 ☆☆☆
    ex) ns_book2 = df[df['출판사'] == '한빛미디어']


중복 행 찾기 : duplicated() / 중복 행 삭제 : drop_duplicates()
중복된 행 - 처음 행은 False, 나머지 행은 True(중복)
중복되지 않은 행들 - False

#sum 함수는 True=1로 인식한다. 
sum(df.duplicated()) : 중복 개수 알 수 있다.

#subset 매개변수는 기준 열을 지정한다.
sum(df.duplicated(subset=['도서명','저자','ISBN']))

#keep 매개변수는 중복값 불리언배열을 조정한다.
>keep='first' : 기본값. 중복행 집합 처음만 'False', 이후 'True' 
>keep='False' : 모든 중복행 집합을 'True'로 표시

dup_rows = df.duplicated(subset=['도서명','저자','ISBN'], keep=False)
ns_book3 = df[dup_rows]

그룹화 : groupby()
groupby(by=행을 합칠 '기준 열', dropna=NaN행 삭제여부)

원본데이터 업데이트

일괄처리 함수 만들기


✅Chapter 03-2 잘못된 데이터 수정하기
NaN
정규 표현식

profile
CHEER UP :)

0개의 댓글