반응형
#1 ns_book4 정보확인
#2 ns_book4 누락된 개수 보기
#3 '도서권수'열의 0행을 nan으로 지정하고 확인
#4 다시 1로 바꾸고 '도서권수, 대출건수'를 int형으로 바꾸기
#5 ns_book4의 '부가기호'의 NaN을 '없음'문자열로 변환
#6 replace를 이용하여 nan을 '없음'으로 변경
#7 nan을 없음, 2021을 21로 변경
#8 '부가기호'열의 nan을 '없음'으로 변경
#9 2개 열('부가기호', '발행년도')을 2개 새로운 값으로 변환(nan을 없음, 2021을 21)
#10 정규표현식을 이용하여 '발행년도'열의 2021을 21로
#11 '저자'열의 (지은이), (옮긴이) 삭제,
#12 '발행년도'의 '1988'이 포함된 모든 문자열의 행을 찾고,
#13 [2019] 또는 2019.와 같은 문자열을 숫자를 제외하고 삭제
#14 나머지 nan이거나 네 자리 숫자가 아닌 값을 -1로 변경
#15 4000 이상의 연도는 2333을 뺌.
#16 나머지 숫자 모두 -1로 변경
import pandas as pd
import numpy as np
#1 ns_book4 정보확인
ns_book4 = pd.read_csv('ns_books4.csv', low_memory = False)
#2 ns_book4 누락된 개수 보기
ns_book4.isna().sum()
#3 '도서권수'열의 0행을 nan으로 지정하고 확인
ns_book4.loc[0, '도서권수'] = None
ns_book4['도서권수'].isna().sum()
#4 다시 1로 바꾸고 '도서권수, 대출건수'를 int형으로 바꾸기
ns_book4.loc[0, '도서권수'] = 1
ns_book4 = ns_book4.astype({'도서권수':'int32', '대출건수': 'int32'})
#5 ns_book4의 '부가기호'의 NaN을 '없음'문자열로 변환
ns_book4['부가기호'].fillna('없음').isna().sum()
#6 replace를 이용하여 nan을 '없음'으로 변경
ns_book4.replace(np.nan, '없음').isna().sum()
#7 nan을 없음, 2021을 21로 변경
ns_book4.replace({np.nan: '없음', '2021' : '21'}).head()
#8 '부가기호'열의 nan을 '없음'으로 변경
ns_book4.replace({'부가기호': np.nan}, '없음').head(2)
#9 2개 열('부가기호', '발행년도')을 2개 새로운 값으로 변환(nan을 없음, 2021을 21)
ns_book4.replace({'부가기호': {np.nan : '없음'},
'발행년도': {'2021' : '21'}}).head(2)
#10 정규표현식을 이용하여 '발행년도'열의 2021을 21로
ns_book4.replace({'발행년도': {r'\d\d(\d\d)' : r'\1'}}, regex = True)[100:102]
# 또는 ns_book4.replace({'발행년도': {r'\d{2}(\d{2})' : r'\1'}}, regex = True)[100:102]
#11 '저자'열의 (지은이), (옮긴이) 삭제,
ns_book4.replace({'저자': {r'(.*)\s\(지은이\)(.*)\s\(옮긴이\)':r'\1\2'},
'발행년도': {r'\d{2}(\d{2})': r'\1'}}, regex = True)[100:102]
#12 '발행년도'의 '1988'이 포함된 모든 문자열의 행을 찾고,
ns_book4['발행년도'].str.contains('1988').sum()
#13 [2019] 또는 2019.와 같은 문자열을 숫자를 제외하고 삭제
ns_book5 = ns_book4.replace({'발행년도':'.*(\d{4}).*'}, r'\1', regex = True)
#14 나머지 nan이거나 네 자리 숫자가 아닌 값을 -1로 변경
unkown_year = ns_book5['발행년도'].str.contains('\d', na=True)
ns_book5.loc[unkown_year, '발행년도'] = '-1'
ns_book5 = ns_book5.astype({'발행년도': 'int32'})
#15 4000 이상의 연도는 2333을 뺌.
dangun_year = ns_book5['발행년도'] > 4000
ns_book5.loc[dangun_year, '발행년도'] = ns_book5.loc[dangun_year, '발행년도'] - 2333
dangun_year = ns_book5['발행년도'] > 4000
print(dangun_year.sum())
#16 나머지 숫자 모두 -1로 변경
old_books = (ns_book5['발행년도'] >0) & (ns_book5['발행년도'] < 1900)
ns_book5.loc[old_book, '발행년도'] = -1
출처: 혼자 공부하는 데이터 분석
반응형
'코딩 > Python' 카테고리의 다른 글
[코딩] Neighbors 도미와 빙어 전처리 후 구분(혼자 공부하는 머신러닝 딥러닝) (0) | 2023.04.30 |
---|---|
[파이썬] 혼자 공부하는 데이터 분석(06 데이터표현, 07 검증,예측) (0) | 2023.04.30 |
웹스크래핑(교보문고 ISBN으로 쪽수 가져오기) (0) | 2023.04.23 |
머신러닝 알고리즘 익히기(Logistic Regression, Random Forest, Gradient Boosting, Light GBM), (0) | 2023.04.18 |
파이썬, openpyxl(6) 수식작성, 병합, 이미지삽입 (0) | 2023.03.31 |