-
[혼자 공부하는 데이터 분석 with 파이썬]03-1 불필요한 데이터 삭제하기카테고리 없음 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