카테고리 없음

[혼자 공부하는 데이터 분석 with 파이썬]03-1 불필요한 데이터 삭제하기

oneaney 2023. 9. 19. 13:32

열 삭제하기

1) loc 메서드와 불리언 배열   

print(ns_df.columns[0])

columns 속성은 판다스의 index 클래스 객체이다. 리스트처럼 숫자 인덱스로 참조 가능

selected_columns = ns_df.columns != 'Unnamed:13'
ns_book = ns_df.loc[:,selected_columns]

'Unnamed :13' 열이 아닌 것은 True,  'Unnmaed :13'인 열은 False

selected_columns는 넘파이 배열  loc 메서드에 True인 열의 행만 선택

 

2) drop()메서드

판다스에서는 데이터프레임의 행,열을 삭제하는 drop() 메서드 제공

axis 매개변수를 0 => 행 삭제

axis 매개변수를 0 => 열 삭제

ns_book = ns_df.drop('Unnamed: 13',axis=1)

 여러개의 열을 삭제하려면 리스트 형식 사용

ns_book = ns_df.drop(['부가기호','Unnamed: 13'],axis=1)

inplace 매개변수 True 지정: 선택한 데이터프레임을 바로 수정

ns_book.drop('주제분류번호',axis=1,inplace=True)

 

3) dropna()메서드

NaN : 비어있는 값

기본적으로 NaN 이 하나 이상 포함된 열이나 행을 삭제

ns_book = ns_df.dropna(axis=1)

how 매개변수 = 'all' : 모든 값이 NaN인 열을 삭제

ns_book=ns_df.dropna(axis=1,how='all')

 

행 삭제하기

1) drop() 메서드 

axis=0 기본값이므로 생략 가능

인덱스 0부터 1까지 2개의행 선택

ns_book2=ns_book.drop([0,1])

 

 

2) [] 연산자와 슬라이싱

슬라이싱 이나 불리언 배열을 [] 연산자에 전달

인덱스가 0,1 인 행을 제외한 모든 행 선택

ns_book2=ns_book[2:]

 

인덱스 0,1을 선택, 2는 포함하지 않음

ns_book2=ns_book[0:2]

 

3)[] 연산자와 불리언 배열

원하는 행 = True

제외할 행 = False

selected_rows = ns_df['출판사'] == '한빛미디어'
ns_book2 = ns_book[selected_rows]

대출건수가 1000 이하인 행을 삭제

['대출건수']>1000 조건 넣기

ns_book2=ns_book[ns_book['대출건수']>1000]

 

중복된 행 찾기

1) duplicated() 메서드

처음 행을 제외한 나머지 중복된 행 =True

sum() : True 갯수 세기

sum(ns_book.duplicated())

subset 매개변수 : 일부 열을 기준으로 여러개 찾을 때

sum(ns_book.duplicated(subset=['도서명','저자','ISBN']))

keep 매개변수 = False : 중복된 행을 모두 True로 표시한 불리언 배열을 반환// 중복된 True로 바로 변수에 저장하기 위해

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

 

실습 코드

https://colab.research.google.com/drive/1SaVG6JuzRcxtdHqkiNZtPoUXdk_fFNCl?usp=sharing