3-1. 불필요한 데이터 삭제하기¶
- 열 삭제하기¶
In [369]:
import pandas as pd
ns_df = pd.read_csv('ns_202104.csv', low_memory = False)
ns_df.head()
Out[369]:
번호 | 도서명 | 저자 | 출판사 | 발행년도 | ISBN | 세트 ISBN | 부가기호 | 권 | 주제분류번호 | 도서권수 | 대출건수 | 등록일자 | Unnamed: 13 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1 | 인공지능과 흙 | 김동훈 지음 | 민음사 | 2021 | 9788937444319 | NaN | NaN | NaN | NaN | 1 | 0 | 2021-03-19 | NaN |
1 | 2 | 가짜 행복 권하는 사회 | 김태형 지음 | 갈매나무 | 2021 | 9791190123969 | NaN | NaN | NaN | NaN | 1 | 0 | 2021-03-19 | NaN |
2 | 3 | 나도 한 문장 잘 쓰면 바랄 게 없겠네 | 김선영 지음 | 블랙피쉬 | 2021 | 9788968332982 | NaN | NaN | NaN | NaN | 1 | 0 | 2021-03-19 | NaN |
3 | 4 | 예루살렘 해변 | 이도 게펜 지음, 임재희 옮김 | 문학세계사 | 2021 | 9788970759906 | NaN | NaN | NaN | NaN | 1 | 0 | 2021-03-19 | NaN |
4 | 5 | 김성곤의 중국한시기행 : 장강·황하 편 | 김성곤 지음 | 김영사 | 2021 | 9788934990833 | NaN | NaN | NaN | NaN | 1 | 0 | 2021-03-19 | NaN |
In [370]:
ns_book = ns_df.loc[:, '번호':'등록일자']
ns_book.head()
Out[370]:
번호 | 도서명 | 저자 | 출판사 | 발행년도 | ISBN | 세트 ISBN | 부가기호 | 권 | 주제분류번호 | 도서권수 | 대출건수 | 등록일자 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1 | 인공지능과 흙 | 김동훈 지음 | 민음사 | 2021 | 9788937444319 | NaN | NaN | NaN | NaN | 1 | 0 | 2021-03-19 |
1 | 2 | 가짜 행복 권하는 사회 | 김태형 지음 | 갈매나무 | 2021 | 9791190123969 | NaN | NaN | NaN | NaN | 1 | 0 | 2021-03-19 |
2 | 3 | 나도 한 문장 잘 쓰면 바랄 게 없겠네 | 김선영 지음 | 블랙피쉬 | 2021 | 9788968332982 | NaN | NaN | NaN | NaN | 1 | 0 | 2021-03-19 |
3 | 4 | 예루살렘 해변 | 이도 게펜 지음, 임재희 옮김 | 문학세계사 | 2021 | 9788970759906 | NaN | NaN | NaN | NaN | 1 | 0 | 2021-03-19 |
4 | 5 | 김성곤의 중국한시기행 : 장강·황하 편 | 김성곤 지음 | 김영사 | 2021 | 9788934990833 | NaN | NaN | NaN | NaN | 1 | 0 | 2021-03-19 |
In [373]:
print(ns_df.columns)
Index(['번호', '도서명', '저자', '출판사', '발행년도', 'ISBN', '세트 ISBN', '부가기호', '권', '주제분류번호', '도서권수', '대출건수', '등록일자', 'Unnamed: 13'], dtype='object')
In [375]:
print(ns_df.columns[3])
출판사
In [377]:
ns_df.columns != 'Unnamed: 13'
Out[377]:
array([ True, True, True, True, True, True, True, True, True, True, True, True, True, False])
In [379]:
print(type(['혼공', '분석', '파이썬']))
print(type(pd.array(['혼공', '분석', '파이썬'])))
<class 'list'> <class 'pandas.core.arrays.string_.StringArray'>
In [381]:
selected_columns = ns_df.columns != 'Unnamed: 13'
ns_book = ns_df.loc[:, selected_columns]
ns_book.head()
Out[381]:
번호 | 도서명 | 저자 | 출판사 | 발행년도 | ISBN | 세트 ISBN | 부가기호 | 권 | 주제분류번호 | 도서권수 | 대출건수 | 등록일자 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1 | 인공지능과 흙 | 김동훈 지음 | 민음사 | 2021 | 9788937444319 | NaN | NaN | NaN | NaN | 1 | 0 | 2021-03-19 |
1 | 2 | 가짜 행복 권하는 사회 | 김태형 지음 | 갈매나무 | 2021 | 9791190123969 | NaN | NaN | NaN | NaN | 1 | 0 | 2021-03-19 |
2 | 3 | 나도 한 문장 잘 쓰면 바랄 게 없겠네 | 김선영 지음 | 블랙피쉬 | 2021 | 9788968332982 | NaN | NaN | NaN | NaN | 1 | 0 | 2021-03-19 |
3 | 4 | 예루살렘 해변 | 이도 게펜 지음, 임재희 옮김 | 문학세계사 | 2021 | 9788970759906 | NaN | NaN | NaN | NaN | 1 | 0 | 2021-03-19 |
4 | 5 | 김성곤의 중국한시기행 : 장강·황하 편 | 김성곤 지음 | 김영사 | 2021 | 9788934990833 | NaN | NaN | NaN | NaN | 1 | 0 | 2021-03-19 |
In [383]:
ns_book = ns_df.drop('Unnamed: 13', axis=1)
ns_book.head()
Out[383]:
번호 | 도서명 | 저자 | 출판사 | 발행년도 | ISBN | 세트 ISBN | 부가기호 | 권 | 주제분류번호 | 도서권수 | 대출건수 | 등록일자 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1 | 인공지능과 흙 | 김동훈 지음 | 민음사 | 2021 | 9788937444319 | NaN | NaN | NaN | NaN | 1 | 0 | 2021-03-19 |
1 | 2 | 가짜 행복 권하는 사회 | 김태형 지음 | 갈매나무 | 2021 | 9791190123969 | NaN | NaN | NaN | NaN | 1 | 0 | 2021-03-19 |
2 | 3 | 나도 한 문장 잘 쓰면 바랄 게 없겠네 | 김선영 지음 | 블랙피쉬 | 2021 | 9788968332982 | NaN | NaN | NaN | NaN | 1 | 0 | 2021-03-19 |
3 | 4 | 예루살렘 해변 | 이도 게펜 지음, 임재희 옮김 | 문학세계사 | 2021 | 9788970759906 | NaN | NaN | NaN | NaN | 1 | 0 | 2021-03-19 |
4 | 5 | 김성곤의 중국한시기행 : 장강·황하 편 | 김성곤 지음 | 김영사 | 2021 | 9788934990833 | NaN | NaN | NaN | NaN | 1 | 0 | 2021-03-19 |
In [385]:
ns_book = ns_df.drop(['부가기호', 'Unnamed: 13'], axis=1)
ns_book.head()
Out[385]:
번호 | 도서명 | 저자 | 출판사 | 발행년도 | ISBN | 세트 ISBN | 권 | 주제분류번호 | 도서권수 | 대출건수 | 등록일자 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1 | 인공지능과 흙 | 김동훈 지음 | 민음사 | 2021 | 9788937444319 | NaN | NaN | NaN | 1 | 0 | 2021-03-19 |
1 | 2 | 가짜 행복 권하는 사회 | 김태형 지음 | 갈매나무 | 2021 | 9791190123969 | NaN | NaN | NaN | 1 | 0 | 2021-03-19 |
2 | 3 | 나도 한 문장 잘 쓰면 바랄 게 없겠네 | 김선영 지음 | 블랙피쉬 | 2021 | 9788968332982 | NaN | NaN | NaN | 1 | 0 | 2021-03-19 |
3 | 4 | 예루살렘 해변 | 이도 게펜 지음, 임재희 옮김 | 문학세계사 | 2021 | 9788970759906 | NaN | NaN | NaN | 1 | 0 | 2021-03-19 |
4 | 5 | 김성곤의 중국한시기행 : 장강·황하 편 | 김성곤 지음 | 김영사 | 2021 | 9788934990833 | NaN | NaN | NaN | 1 | 0 | 2021-03-19 |
In [387]:
ns_book.drop('주제분류번호', axis=1, inplace=True)
ns_book.head()
Out[387]:
번호 | 도서명 | 저자 | 출판사 | 발행년도 | ISBN | 세트 ISBN | 권 | 도서권수 | 대출건수 | 등록일자 | |
---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1 | 인공지능과 흙 | 김동훈 지음 | 민음사 | 2021 | 9788937444319 | NaN | NaN | 1 | 0 | 2021-03-19 |
1 | 2 | 가짜 행복 권하는 사회 | 김태형 지음 | 갈매나무 | 2021 | 9791190123969 | NaN | NaN | 1 | 0 | 2021-03-19 |
2 | 3 | 나도 한 문장 잘 쓰면 바랄 게 없겠네 | 김선영 지음 | 블랙피쉬 | 2021 | 9788968332982 | NaN | NaN | 1 | 0 | 2021-03-19 |
3 | 4 | 예루살렘 해변 | 이도 게펜 지음, 임재희 옮김 | 문학세계사 | 2021 | 9788970759906 | NaN | NaN | 1 | 0 | 2021-03-19 |
4 | 5 | 김성곤의 중국한시기행 : 장강·황하 편 | 김성곤 지음 | 김영사 | 2021 | 9788934990833 | NaN | NaN | 1 | 0 | 2021-03-19 |
In [389]:
ns_book = ns_df.dropna(axis=1)
ns_book.head()
Out[389]:
번호 | ISBN | 도서권수 | 대출건수 | 등록일자 | |
---|---|---|---|---|---|
0 | 1 | 9788937444319 | 1 | 0 | 2021-03-19 |
1 | 2 | 9791190123969 | 1 | 0 | 2021-03-19 |
2 | 3 | 9788968332982 | 1 | 0 | 2021-03-19 |
3 | 4 | 9788970759906 | 1 | 0 | 2021-03-19 |
4 | 5 | 9788934990833 | 1 | 0 | 2021-03-19 |
In [391]:
ns_book = ns_df.dropna(axis=1, how='all')
ns_book.head()
Out[391]:
번호 | 도서명 | 저자 | 출판사 | 발행년도 | ISBN | 세트 ISBN | 부가기호 | 권 | 주제분류번호 | 도서권수 | 대출건수 | 등록일자 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1 | 인공지능과 흙 | 김동훈 지음 | 민음사 | 2021 | 9788937444319 | NaN | NaN | NaN | NaN | 1 | 0 | 2021-03-19 |
1 | 2 | 가짜 행복 권하는 사회 | 김태형 지음 | 갈매나무 | 2021 | 9791190123969 | NaN | NaN | NaN | NaN | 1 | 0 | 2021-03-19 |
2 | 3 | 나도 한 문장 잘 쓰면 바랄 게 없겠네 | 김선영 지음 | 블랙피쉬 | 2021 | 9788968332982 | NaN | NaN | NaN | NaN | 1 | 0 | 2021-03-19 |
3 | 4 | 예루살렘 해변 | 이도 게펜 지음, 임재희 옮김 | 문학세계사 | 2021 | 9788970759906 | NaN | NaN | NaN | NaN | 1 | 0 | 2021-03-19 |
4 | 5 | 김성곤의 중국한시기행 : 장강·황하 편 | 김성곤 지음 | 김영사 | 2021 | 9788934990833 | NaN | NaN | NaN | NaN | 1 | 0 | 2021-03-19 |
- 행 삭제하기¶
In [394]:
ns_book2 = ns_book.drop([0,1])
ns_book2.head()
Out[394]:
번호 | 도서명 | 저자 | 출판사 | 발행년도 | ISBN | 세트 ISBN | 부가기호 | 권 | 주제분류번호 | 도서권수 | 대출건수 | 등록일자 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
2 | 3 | 나도 한 문장 잘 쓰면 바랄 게 없겠네 | 김선영 지음 | 블랙피쉬 | 2021 | 9788968332982 | NaN | NaN | NaN | NaN | 1 | 0 | 2021-03-19 |
3 | 4 | 예루살렘 해변 | 이도 게펜 지음, 임재희 옮김 | 문학세계사 | 2021 | 9788970759906 | NaN | NaN | NaN | NaN | 1 | 0 | 2021-03-19 |
4 | 5 | 김성곤의 중국한시기행 : 장강·황하 편 | 김성곤 지음 | 김영사 | 2021 | 9788934990833 | NaN | NaN | NaN | NaN | 1 | 0 | 2021-03-19 |
5 | 6 | 처음 읽는 음식의 세계사 | 미야자키 마사카츠 지음, 한세희 옮김 | 탐나는책 | 2021 | 9791189550370 | NaN | NaN | NaN | NaN | 1 | 0 | 2021-03-19 |
6 | 7 | 아르센 벵거 자서전 My Life in Red and White | 아르센 벵거 지음, 이성모 옮김 | 한즈미디어(한스미디어) | 2021 | 9791160075793 | NaN | NaN | NaN | NaN | 1 | 0 | 2021-03-19 |
In [396]:
ns_book2 = ns_book[2:]
ns_book2.head()
Out[396]:
번호 | 도서명 | 저자 | 출판사 | 발행년도 | ISBN | 세트 ISBN | 부가기호 | 권 | 주제분류번호 | 도서권수 | 대출건수 | 등록일자 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
2 | 3 | 나도 한 문장 잘 쓰면 바랄 게 없겠네 | 김선영 지음 | 블랙피쉬 | 2021 | 9788968332982 | NaN | NaN | NaN | NaN | 1 | 0 | 2021-03-19 |
3 | 4 | 예루살렘 해변 | 이도 게펜 지음, 임재희 옮김 | 문학세계사 | 2021 | 9788970759906 | NaN | NaN | NaN | NaN | 1 | 0 | 2021-03-19 |
4 | 5 | 김성곤의 중국한시기행 : 장강·황하 편 | 김성곤 지음 | 김영사 | 2021 | 9788934990833 | NaN | NaN | NaN | NaN | 1 | 0 | 2021-03-19 |
5 | 6 | 처음 읽는 음식의 세계사 | 미야자키 마사카츠 지음, 한세희 옮김 | 탐나는책 | 2021 | 9791189550370 | NaN | NaN | NaN | NaN | 1 | 0 | 2021-03-19 |
6 | 7 | 아르센 벵거 자서전 My Life in Red and White | 아르센 벵거 지음, 이성모 옮김 | 한즈미디어(한스미디어) | 2021 | 9791160075793 | NaN | NaN | NaN | NaN | 1 | 0 | 2021-03-19 |
In [398]:
ns_book2 = ns_book[0:2]
ns_book2.head()
Out[398]:
번호 | 도서명 | 저자 | 출판사 | 발행년도 | ISBN | 세트 ISBN | 부가기호 | 권 | 주제분류번호 | 도서권수 | 대출건수 | 등록일자 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1 | 인공지능과 흙 | 김동훈 지음 | 민음사 | 2021 | 9788937444319 | NaN | NaN | NaN | NaN | 1 | 0 | 2021-03-19 |
1 | 2 | 가짜 행복 권하는 사회 | 김태형 지음 | 갈매나무 | 2021 | 9791190123969 | NaN | NaN | NaN | NaN | 1 | 0 | 2021-03-19 |
In [400]:
selected_rows = ns_df['출판사'] == '한빛미디어'
ns_book2 = ns_book[selected_rows]
ns_book2.head()
Out[400]:
번호 | 도서명 | 저자 | 출판사 | 발행년도 | ISBN | 세트 ISBN | 부가기호 | 권 | 주제분류번호 | 도서권수 | 대출건수 | 등록일자 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
60 | 61 | (맛있는 디자인)프리미어 프로 CC: 쉽게 배워 제대로 써먹는 유튜브 영상 편집 | 정지원,심수진,윤성우,김덕영 지음 | 한빛미디어 | 2021 | 9791162244029 | NaN | 1 | 2021 | 005.567 | 1 | 1 | 2021-03-15 |
70 | 71 | 처음 배우는 애저 (Azure Portal로 배우는 애저 도입부터 활용까지) | 김도균 | 한빛미디어 | 2020 | 9791162243695 | NaN | NaN | NaN | 005.74 | 1 | 1 | 2021-03-15 |
88 | 89 | 맛있는 디자인 프리미어 프로 CC 2021 - 쉽게 배워 제대로 써먹는 유튜브 영상 편집 | 정지원, 심수진, 윤성우, 김덕영 (지은이) | 한빛미디어 | 2021 | 9791162244029 | NaN | NaN | NaN | NaN | 0 | 0 | 2021-03-15 |
156 | 157 | 실전 보고서 작성 기술 with 파워포인트, 워드, 한글 | 홍장표 지음 | 한빛미디어 | 2020 | 9791162243763 | NaN | NaN | NaN | NaN | 1 | 0 | 2021-03-12 |
198 | 199 | 처음 배우는 리액트 네이티브 | 김범준 지음 | 한빛미디어 | 2021 | 9791162243879 | NaN | NaN | NaN | NaN | 1 | 0 | 2021-03-12 |
In [402]:
ns_book2 = ns_book.loc[selected_rows]
ns_book2.head()
Out[402]:
번호 | 도서명 | 저자 | 출판사 | 발행년도 | ISBN | 세트 ISBN | 부가기호 | 권 | 주제분류번호 | 도서권수 | 대출건수 | 등록일자 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
60 | 61 | (맛있는 디자인)프리미어 프로 CC: 쉽게 배워 제대로 써먹는 유튜브 영상 편집 | 정지원,심수진,윤성우,김덕영 지음 | 한빛미디어 | 2021 | 9791162244029 | NaN | 1 | 2021 | 005.567 | 1 | 1 | 2021-03-15 |
70 | 71 | 처음 배우는 애저 (Azure Portal로 배우는 애저 도입부터 활용까지) | 김도균 | 한빛미디어 | 2020 | 9791162243695 | NaN | NaN | NaN | 005.74 | 1 | 1 | 2021-03-15 |
88 | 89 | 맛있는 디자인 프리미어 프로 CC 2021 - 쉽게 배워 제대로 써먹는 유튜브 영상 편집 | 정지원, 심수진, 윤성우, 김덕영 (지은이) | 한빛미디어 | 2021 | 9791162244029 | NaN | NaN | NaN | NaN | 0 | 0 | 2021-03-15 |
156 | 157 | 실전 보고서 작성 기술 with 파워포인트, 워드, 한글 | 홍장표 지음 | 한빛미디어 | 2020 | 9791162243763 | NaN | NaN | NaN | NaN | 1 | 0 | 2021-03-12 |
198 | 199 | 처음 배우는 리액트 네이티브 | 김범준 지음 | 한빛미디어 | 2021 | 9791162243879 | NaN | NaN | NaN | NaN | 1 | 0 | 2021-03-12 |
In [404]:
ns_book2 = ns_book[ns_book['대출건수'] > 1000]
ns_book2.head()
Out[404]:
번호 | 도서명 | 저자 | 출판사 | 발행년도 | ISBN | 세트 ISBN | 부가기호 | 권 | 주제분류번호 | 도서권수 | 대출건수 | 등록일자 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
94781 | 94782 | 사피엔스 :유인원에서 사이보그까지, 인간 역사의 대담하고 위대한 질문 | 유발 하라리 지음 ;조현욱 옮김 | 김영사 | 2016 | 9788934972464 | NaN | NaN | NaN | 909 | 30 | 1468 | 2016-04-22 |
346944 | 346945 | 해커스 토익:Listening | David Cho 지음 | 해커스어학연구소 | 2005 | 9788990700148 | NaN | 1 | NaN | 740.77 | 29 | 1065 | 2005-02-01 |
- 중복된 행 찾기¶
In [407]:
sum(ns_book.duplicated())
Out[407]:
0
In [409]:
sum(ns_book.duplicated(subset=['도서명','저자','ISBN']))
Out[409]:
22096
In [411]:
dup_rows = ns_book.duplicated(subset=['도서명','저자','ISBN'], keep=False)
ns_book3 = ns_book[dup_rows]
ns_book3.head()
Out[411]:
번호 | 도서명 | 저자 | 출판사 | 발행년도 | ISBN | 세트 ISBN | 부가기호 | 권 | 주제분류번호 | 도서권수 | 대출건수 | 등록일자 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
109 | 110 | 파친코 | 이민진 지음 ;이미정 옮김 | 문학사상 | 2018 | 9788970129815 | 9788970129808 | 0 | 1 | 843.6 | 1 | 0 | 2021-03-12 |
110 | 111 | 파친코 | 이민진 지음 ;이미정 옮김 | 문학사상 | 2018 | 9788970129822 | 9788970129808 | 0 | 2 | 843.6 | 1 | 0 | 2021-03-12 |
111 | 112 | 보건교사 안은영 :정세랑 장편소설 | 지은이: 정세랑 | 민음사 | 2021 | 9788937479953 | NaN | 0 | NaN | 813.7 | 1 | 0 | 2021-03-12 |
112 | 113 | 보건교사 안은영 :정세랑 장편소설 | 지은이: 정세랑 | 민음사 | 2021 | 9788937479953 | NaN | 0 | NaN | 813.7 | 1 | 1 | 2021-03-12 |
113 | 114 | 스토너 | 존 윌리엄스 지음 ;김승욱 옮김 | RHK(알에이치코리아) | 2021 | 9788925538297 | NaN | 0 | NaN | 843.5 | 1 | 0 | 2021-03-12 |
- 그룹별로 모으기¶
In [414]:
count_df = ns_book[['도서명','저자','ISBN','권','대출건수']]
In [416]:
group_df = count_df.groupby(by=['도서명','저자','ISBN','권'], dropna=False)
loan_count = group_df.sum()
loan_count.head()
Out[416]:
대출건수 | ||||
---|---|---|---|---|
도서명 | 저자 | ISBN | 권 | |
(꼭 필요한 것부터 쉽게 배우는) 자신만만 블로그 차근차근 배우기 | 김상현 지음 | 9788955025637 | NaN | 38 |
(맨처음 배우는) 세상의 직업 | 엘레오노라 바르소티 글 ·그림 ;김태은 옮김 | 9788992924146 | NaN | 10 |
(영잘원 리스닝과 패턴 영어의 절묘한 만남으로 태어난 ) 리스닝 ABC : 입문편 | JD Kim 지음 | 9788993466089 | NaN | 4 |
(즉석에서 바로바로 활용하는) 일상생활 베트남어 첫걸음 | FL4U컨텐츠 지음 | 9788971728000 | NaN | 3 |
,에게 | 이기린(이진희) | 9791196137014 | NaN | 0 |
In [418]:
loan_count = count_df.groupby(by=['도서명','저자','ISBN','권'], dropna=False).sum()
loan_count.head()
Out[418]:
대출건수 | ||||
---|---|---|---|---|
도서명 | 저자 | ISBN | 권 | |
(꼭 필요한 것부터 쉽게 배우는) 자신만만 블로그 차근차근 배우기 | 김상현 지음 | 9788955025637 | NaN | 38 |
(맨처음 배우는) 세상의 직업 | 엘레오노라 바르소티 글 ·그림 ;김태은 옮김 | 9788992924146 | NaN | 10 |
(영잘원 리스닝과 패턴 영어의 절묘한 만남으로 태어난 ) 리스닝 ABC : 입문편 | JD Kim 지음 | 9788993466089 | NaN | 4 |
(즉석에서 바로바로 활용하는) 일상생활 베트남어 첫걸음 | FL4U컨텐츠 지음 | 9788971728000 | NaN | 3 |
,에게 | 이기린(이진희) | 9791196137014 | NaN | 0 |
- 원본 데이터 업데이트하기¶
In [477]:
dup_rows = ns_book.duplicated(subset=['도서명','저자','ISBN','권'])
unique_rows = ~dup_rows
ns_book3 = ns_book[unique_rows].copy()
In [478]:
sum(ns_book3.duplicated(subset=['도서명','저자','ISBN','권']))
Out[478]:
0
In [481]:
ns_book3.set_index(['도서명','저자','ISBN','권'], inplace=True)
ns_book3.head()
Out[481]:
번호 | 출판사 | 발행년도 | 세트 ISBN | 부가기호 | 주제분류번호 | 도서권수 | 대출건수 | 등록일자 | ||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
도서명 | 저자 | ISBN | 권 | |||||||||
인공지능과 흙 | 김동훈 지음 | 9788937444319 | NaN | 1 | 민음사 | 2021 | NaN | NaN | NaN | 1 | 0 | 2021-03-19 |
가짜 행복 권하는 사회 | 김태형 지음 | 9791190123969 | NaN | 2 | 갈매나무 | 2021 | NaN | NaN | NaN | 1 | 0 | 2021-03-19 |
나도 한 문장 잘 쓰면 바랄 게 없겠네 | 김선영 지음 | 9788968332982 | NaN | 3 | 블랙피쉬 | 2021 | NaN | NaN | NaN | 1 | 0 | 2021-03-19 |
예루살렘 해변 | 이도 게펜 지음, 임재희 옮김 | 9788970759906 | NaN | 4 | 문학세계사 | 2021 | NaN | NaN | NaN | 1 | 0 | 2021-03-19 |
김성곤의 중국한시기행 : 장강·황하 편 | 김성곤 지음 | 9788934990833 | NaN | 5 | 김영사 | 2021 | NaN | NaN | NaN | 1 | 0 | 2021-03-19 |
In [483]:
ns_book3.update(loan_count)
ns_book3.head()
/var/folders/3w/0y55k0y53pg1dvg3p_cqn81m0000gn/T/ipykernel_76598/3051281402.py:1: PerformanceWarning: indexing past lexsort depth may impact performance. ns_book3.update(loan_count)
Out[483]:
번호 | 출판사 | 발행년도 | 세트 ISBN | 부가기호 | 주제분류번호 | 도서권수 | 대출건수 | 등록일자 | ||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
도서명 | 저자 | ISBN | 권 | |||||||||
인공지능과 흙 | 김동훈 지음 | 9788937444319 | NaN | 1 | 민음사 | 2021 | NaN | NaN | NaN | 1 | 0 | 2021-03-19 |
가짜 행복 권하는 사회 | 김태형 지음 | 9791190123969 | NaN | 2 | 갈매나무 | 2021 | NaN | NaN | NaN | 1 | 0 | 2021-03-19 |
나도 한 문장 잘 쓰면 바랄 게 없겠네 | 김선영 지음 | 9788968332982 | NaN | 3 | 블랙피쉬 | 2021 | NaN | NaN | NaN | 1 | 0 | 2021-03-19 |
예루살렘 해변 | 이도 게펜 지음, 임재희 옮김 | 9788970759906 | NaN | 4 | 문학세계사 | 2021 | NaN | NaN | NaN | 1 | 0 | 2021-03-19 |
김성곤의 중국한시기행 : 장강·황하 편 | 김성곤 지음 | 9788934990833 | NaN | 5 | 김영사 | 2021 | NaN | NaN | NaN | 1 | 0 | 2021-03-19 |
In [485]:
ns_book4 = ns_book3.reset_index()
ns_book4.head()
Out[485]:
도서명 | 저자 | ISBN | 권 | 번호 | 출판사 | 발행년도 | 세트 ISBN | 부가기호 | 주제분류번호 | 도서권수 | 대출건수 | 등록일자 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 인공지능과 흙 | 김동훈 지음 | 9788937444319 | NaN | 1 | 민음사 | 2021 | NaN | NaN | NaN | 1 | 0 | 2021-03-19 |
1 | 가짜 행복 권하는 사회 | 김태형 지음 | 9791190123969 | NaN | 2 | 갈매나무 | 2021 | NaN | NaN | NaN | 1 | 0 | 2021-03-19 |
2 | 나도 한 문장 잘 쓰면 바랄 게 없겠네 | 김선영 지음 | 9788968332982 | NaN | 3 | 블랙피쉬 | 2021 | NaN | NaN | NaN | 1 | 0 | 2021-03-19 |
3 | 예루살렘 해변 | 이도 게펜 지음, 임재희 옮김 | 9788970759906 | NaN | 4 | 문학세계사 | 2021 | NaN | NaN | NaN | 1 | 0 | 2021-03-19 |
4 | 김성곤의 중국한시기행 : 장강·황하 편 | 김성곤 지음 | 9788934990833 | NaN | 5 | 김영사 | 2021 | NaN | NaN | NaN | 1 | 0 | 2021-03-19 |
In [487]:
sum(ns_book['대출건수']>100)
Out[487]:
2311
In [489]:
sum(ns_book4['대출건수']>100)
Out[489]:
2550
In [491]:
ns_book4 = ns_book4[ns_book.columns]
ns_book4.head()
Out[491]:
번호 | 도서명 | 저자 | 출판사 | 발행년도 | ISBN | 세트 ISBN | 부가기호 | 권 | 주제분류번호 | 도서권수 | 대출건수 | 등록일자 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1 | 인공지능과 흙 | 김동훈 지음 | 민음사 | 2021 | 9788937444319 | NaN | NaN | NaN | NaN | 1 | 0 | 2021-03-19 |
1 | 2 | 가짜 행복 권하는 사회 | 김태형 지음 | 갈매나무 | 2021 | 9791190123969 | NaN | NaN | NaN | NaN | 1 | 0 | 2021-03-19 |
2 | 3 | 나도 한 문장 잘 쓰면 바랄 게 없겠네 | 김선영 지음 | 블랙피쉬 | 2021 | 9788968332982 | NaN | NaN | NaN | NaN | 1 | 0 | 2021-03-19 |
3 | 4 | 예루살렘 해변 | 이도 게펜 지음, 임재희 옮김 | 문학세계사 | 2021 | 9788970759906 | NaN | NaN | NaN | NaN | 1 | 0 | 2021-03-19 |
4 | 5 | 김성곤의 중국한시기행 : 장강·황하 편 | 김성곤 지음 | 김영사 | 2021 | 9788934990833 | NaN | NaN | NaN | NaN | 1 | 0 | 2021-03-19 |
In [493]:
ns_book4.to_csv('ns_book4.csv', index=False)
In [496]:
def data_cleaning(filename):
ns_df = pd.read_csv(filename, low_memory=False)
ns_book = ns_df.dropna(axis=1, how='all')
count_df = ns_book[['도서명','저자','ISBN','권','대출건수']]
loan_count = count_df.groupby(by=['도서명','저자','ISBN','권'], dropna=False).sum()
dup_rows = ns_book.duplicated(subset=['도서명','저자','ISBN','권'])
unique_rows = ~dup_rows
ns_book3 = ns_book[unique_rows].copy()
ns_book3.set_index(['도서명','저자','ISBN','권'], inplace=True)
ns_book3.update(loan_count)
ns_book4 = ns_book3.reset_index()
ns_book4 = ns_book4[ns_book.columns]
return ns_book4
In [502]:
new_ns_book4 = data_cleaning('ns_202104.csv')
ns_book4.equals(new_ns_book4)
/var/folders/3w/0y55k0y53pg1dvg3p_cqn81m0000gn/T/ipykernel_76598/2412675187.py:10: PerformanceWarning: indexing past lexsort depth may impact performance. ns_book3.update(loan_count)
Out[502]:
True
3-2. 잘못된 데이터 수정하기¶
- 데이터프레임 정보 요약 확인하기¶
In [504]:
import pandas as pd
ns_book4 = pd.read_csv('ns_book4.csv', low_memory = False)
ns_book4.head()
Out[504]:
번호 | 도서명 | 저자 | 출판사 | 발행년도 | ISBN | 세트 ISBN | 부가기호 | 권 | 주제분류번호 | 도서권수 | 대출건수 | 등록일자 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1 | 인공지능과 흙 | 김동훈 지음 | 민음사 | 2021 | 9788937444319 | NaN | NaN | NaN | NaN | 1 | 0 | 2021-03-19 |
1 | 2 | 가짜 행복 권하는 사회 | 김태형 지음 | 갈매나무 | 2021 | 9791190123969 | NaN | NaN | NaN | NaN | 1 | 0 | 2021-03-19 |
2 | 3 | 나도 한 문장 잘 쓰면 바랄 게 없겠네 | 김선영 지음 | 블랙피쉬 | 2021 | 9788968332982 | NaN | NaN | NaN | NaN | 1 | 0 | 2021-03-19 |
3 | 4 | 예루살렘 해변 | 이도 게펜 지음, 임재희 옮김 | 문학세계사 | 2021 | 9788970759906 | NaN | NaN | NaN | NaN | 1 | 0 | 2021-03-19 |
4 | 5 | 김성곤의 중국한시기행 : 장강·황하 편 | 김성곤 지음 | 김영사 | 2021 | 9788934990833 | NaN | NaN | NaN | NaN | 1 | 0 | 2021-03-19 |
In [506]:
ns_book4.info()
<class 'pandas.core.frame.DataFrame'> RangeIndex: 384591 entries, 0 to 384590 Data columns (total 13 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 번호 384591 non-null int64 1 도서명 384188 non-null object 2 저자 384393 non-null object 3 출판사 379950 non-null object 4 발행년도 384577 non-null object 5 ISBN 384591 non-null object 6 세트 ISBN 56576 non-null object 7 부가기호 310386 non-null object 8 권 63378 non-null object 9 주제분류번호 364727 non-null object 10 도서권수 384591 non-null int64 11 대출건수 384591 non-null int64 12 등록일자 384591 non-null object dtypes: int64(3), object(10) memory usage: 38.1+ MB
In [508]:
ns_book4.info(memory_usage='deep')
<class 'pandas.core.frame.DataFrame'> RangeIndex: 384591 entries, 0 to 384590 Data columns (total 13 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 번호 384591 non-null int64 1 도서명 384188 non-null object 2 저자 384393 non-null object 3 출판사 379950 non-null object 4 발행년도 384577 non-null object 5 ISBN 384591 non-null object 6 세트 ISBN 56576 non-null object 7 부가기호 310386 non-null object 8 권 63378 non-null object 9 주제분류번호 364727 non-null object 10 도서권수 384591 non-null int64 11 대출건수 384591 non-null int64 12 등록일자 384591 non-null object dtypes: int64(3), object(10) memory usage: 234.0 MB
- 누락된 값 처리하기¶
In [516]:
ns_book4.isna().sum()
Out[516]:
번호 0 도서명 403 저자 198 출판사 4641 발행년도 14 ISBN 0 세트 ISBN 328015 부가기호 74205 권 321213 주제분류번호 19864 도서권수 0 대출건수 0 등록일자 0 dtype: int64
In [518]:
ns_book4.notna().sum()
Out[518]:
번호 384591 도서명 384188 저자 384393 출판사 379950 발행년도 384577 ISBN 384591 세트 ISBN 56576 부가기호 310386 권 63378 주제분류번호 364727 도서권수 384591 대출건수 384591 등록일자 384591 dtype: int64
In [522]:
ns_book4.loc[0,'도서권수'] = None
ns_book4['도서권수'].isna().sum()
Out[522]:
1
In [526]:
ns_book4.head(2)
Out[526]:
번호 | 도서명 | 저자 | 출판사 | 발행년도 | ISBN | 세트 ISBN | 부가기호 | 권 | 주제분류번호 | 도서권수 | 대출건수 | 등록일자 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1 | 인공지능과 흙 | 김동훈 지음 | 민음사 | 2021 | 9788937444319 | NaN | NaN | NaN | NaN | NaN | 0 | 2021-03-19 |
1 | 2 | 가짜 행복 권하는 사회 | 김태형 지음 | 갈매나무 | 2021 | 9791190123969 | NaN | NaN | NaN | NaN | 1.0 | 0 | 2021-03-19 |
In [528]:
ns_book4.loc[0,'도서권수'] = 1
ns_book4 = ns_book4.astype({'도서권수': 'int32', '대출건수': 'int32'})
ns_book4.head(2)
Out[528]:
번호 | 도서명 | 저자 | 출판사 | 발행년도 | ISBN | 세트 ISBN | 부가기호 | 권 | 주제분류번호 | 도서권수 | 대출건수 | 등록일자 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1 | 인공지능과 흙 | 김동훈 지음 | 민음사 | 2021 | 9788937444319 | NaN | NaN | NaN | NaN | 1 | 0 | 2021-03-19 |
1 | 2 | 가짜 행복 권하는 사회 | 김태형 지음 | 갈매나무 | 2021 | 9791190123969 | NaN | NaN | NaN | NaN | 1 | 0 | 2021-03-19 |
In [530]:
ns_book4.loc[0, '부가기호'] = None
ns_book4.head(2)
Out[530]:
번호 | 도서명 | 저자 | 출판사 | 발행년도 | ISBN | 세트 ISBN | 부가기호 | 권 | 주제분류번호 | 도서권수 | 대출건수 | 등록일자 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1 | 인공지능과 흙 | 김동훈 지음 | 민음사 | 2021 | 9788937444319 | NaN | None | NaN | NaN | 1 | 0 | 2021-03-19 |
1 | 2 | 가짜 행복 권하는 사회 | 김태형 지음 | 갈매나무 | 2021 | 9791190123969 | NaN | NaN | NaN | NaN | 1 | 0 | 2021-03-19 |
In [532]:
import numpy as np
ns_book4.loc[0, '부가기호'] = np.nan
ns_book4.head(2)
Out[532]:
번호 | 도서명 | 저자 | 출판사 | 발행년도 | ISBN | 세트 ISBN | 부가기호 | 권 | 주제분류번호 | 도서권수 | 대출건수 | 등록일자 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1 | 인공지능과 흙 | 김동훈 지음 | 민음사 | 2021 | 9788937444319 | NaN | NaN | NaN | NaN | 1 | 0 | 2021-03-19 |
1 | 2 | 가짜 행복 권하는 사회 | 김태형 지음 | 갈매나무 | 2021 | 9791190123969 | NaN | NaN | NaN | NaN | 1 | 0 | 2021-03-19 |
In [534]:
set_isbn_na_rows = ns_book4['세트 ISBN'].isna()
ns_book4.loc[set_isbn_na_rows, '세트 ISBN'] = ''
ns_book4['세트 ISBN'].isna().sum()
Out[534]:
0
In [542]:
ns_book4.fillna('없음').isna().sum()
Out[542]:
번호 0 도서명 0 저자 0 출판사 0 발행년도 0 ISBN 0 세트 ISBN 0 부가기호 0 권 0 주제분류번호 0 도서권수 0 대출건수 0 등록일자 0 dtype: int64
In [544]:
ns_book4['부가기호'].fillna('없음').isna().sum()
Out[544]:
0
In [546]:
ns_book4.fillna({'부가기호': '없음'}).isna().sum()
Out[546]:
번호 0 도서명 403 저자 198 출판사 4641 발행년도 14 ISBN 0 세트 ISBN 0 부가기호 0 권 321213 주제분류번호 19864 도서권수 0 대출건수 0 등록일자 0 dtype: int64
In [550]:
ns_book4.replace(np.nan, '없음').isna().sum()
Out[550]:
번호 0 도서명 0 저자 0 출판사 0 발행년도 0 ISBN 0 세트 ISBN 0 부가기호 0 권 0 주제분류번호 0 도서권수 0 대출건수 0 등록일자 0 dtype: int64
In [552]:
ns_book4.replace([np.nan, '2021'], ['없음', '21']).head(2)
Out[552]:
번호 | 도서명 | 저자 | 출판사 | 발행년도 | ISBN | 세트 ISBN | 부가기호 | 권 | 주제분류번호 | 도서권수 | 대출건수 | 등록일자 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1 | 인공지능과 흙 | 김동훈 지음 | 민음사 | 21 | 9788937444319 | 없음 | 없음 | 없음 | 1 | 0 | 2021-03-19 | |
1 | 2 | 가짜 행복 권하는 사회 | 김태형 지음 | 갈매나무 | 21 | 9791190123969 | 없음 | 없음 | 없음 | 1 | 0 | 2021-03-19 |
In [554]:
ns_book4.replace({np.nan: '없음', '2021': '21'}).head(2)
Out[554]:
번호 | 도서명 | 저자 | 출판사 | 발행년도 | ISBN | 세트 ISBN | 부가기호 | 권 | 주제분류번호 | 도서권수 | 대출건수 | 등록일자 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1 | 인공지능과 흙 | 김동훈 지음 | 민음사 | 21 | 9788937444319 | 없음 | 없음 | 없음 | 1 | 0 | 2021-03-19 | |
1 | 2 | 가짜 행복 권하는 사회 | 김태형 지음 | 갈매나무 | 21 | 9791190123969 | 없음 | 없음 | 없음 | 1 | 0 | 2021-03-19 |
In [556]:
ns_book4.replace({'부가기호': np.nan}, '없음').head(2)
Out[556]:
번호 | 도서명 | 저자 | 출판사 | 발행년도 | ISBN | 세트 ISBN | 부가기호 | 권 | 주제분류번호 | 도서권수 | 대출건수 | 등록일자 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1 | 인공지능과 흙 | 김동훈 지음 | 민음사 | 2021 | 9788937444319 | 없음 | NaN | NaN | 1 | 0 | 2021-03-19 | |
1 | 2 | 가짜 행복 권하는 사회 | 김태형 지음 | 갈매나무 | 2021 | 9791190123969 | 없음 | NaN | NaN | 1 | 0 | 2021-03-19 |
In [558]:
ns_book4.replace({'부가기호': {np.nan: '없음'}, '발행년도': {'2021': '21'}}).head(2)
Out[558]:
번호 | 도서명 | 저자 | 출판사 | 발행년도 | ISBN | 세트 ISBN | 부가기호 | 권 | 주제분류번호 | 도서권수 | 대출건수 | 등록일자 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1 | 인공지능과 흙 | 김동훈 지음 | 민음사 | 21 | 9788937444319 | 없음 | NaN | NaN | 1 | 0 | 2021-03-19 | |
1 | 2 | 가짜 행복 권하는 사회 | 김태형 지음 | 갈매나무 | 21 | 9791190123969 | 없음 | NaN | NaN | 1 | 0 | 2021-03-19 |
- 정규 표현식¶
In [562]:
ns_book4.replace({'발행년도': {'2021': '21'}})[100:102]
Out[562]:
번호 | 도서명 | 저자 | 출판사 | 발행년도 | ISBN | 세트 ISBN | 부가기호 | 권 | 주제분류번호 | 도서권수 | 대출건수 | 등록일자 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
100 | 101 | No라고 말할 줄 아는 남편과 아내 - 개정판 | 헨리 클라우드, 존 타운센드 (지은이), 김진웅 (옮긴이) | 좋은씨앗 | 2018 | 9788958743019 | NaN | NaN | 234.9 | 1 | 1 | 2021-03-15 | |
101 | 102 | D2C 레볼루션 - 스타트업부터 글로벌 기업까지, 마켓 체인저의 필수 전략 | 로런스 인그래시아 (지은이), 안기순 (옮긴이) | 부키 | 21 | 9788960518483 | NaN | NaN | 325.1 | 1 | 0 | 2021-03-15 |
In [575]:
ns_book4.replace({'발행년도': {r'\d\d(\d\d)': r'\1'}}, regex=True)[100:102]
Out[575]:
번호 | 도서명 | 저자 | 출판사 | 발행년도 | ISBN | 세트 ISBN | 부가기호 | 권 | 주제분류번호 | 도서권수 | 대출건수 | 등록일자 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
100 | 101 | No라고 말할 줄 아는 남편과 아내 - 개정판 | 헨리 클라우드, 존 타운센드 (지은이), 김진웅 (옮긴이) | 좋은씨앗 | 18 | 9788958743019 | NaN | NaN | 234.9 | 1 | 1 | 2021-03-15 | |
101 | 102 | D2C 레볼루션 - 스타트업부터 글로벌 기업까지, 마켓 체인저의 필수 전략 | 로런스 인그래시아 (지은이), 안기순 (옮긴이) | 부키 | 21 | 9788960518483 | NaN | NaN | 325.1 | 1 | 0 | 2021-03-15 |
In [577]:
ns_book4.replace({'발행년도': {r'\d{2}(\d{2})': r'\1'}}, regex=True)[100:102]
Out[577]:
번호 | 도서명 | 저자 | 출판사 | 발행년도 | ISBN | 세트 ISBN | 부가기호 | 권 | 주제분류번호 | 도서권수 | 대출건수 | 등록일자 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
100 | 101 | No라고 말할 줄 아는 남편과 아내 - 개정판 | 헨리 클라우드, 존 타운센드 (지은이), 김진웅 (옮긴이) | 좋은씨앗 | 18 | 9788958743019 | NaN | NaN | 234.9 | 1 | 1 | 2021-03-15 | |
101 | 102 | D2C 레볼루션 - 스타트업부터 글로벌 기업까지, 마켓 체인저의 필수 전략 | 로런스 인그래시아 (지은이), 안기순 (옮긴이) | 부키 | 21 | 9788960518483 | NaN | NaN | 325.1 | 1 | 0 | 2021-03-15 |
In [585]:
ns_book4.replace({'저자': {r'(.*)\s\(지은이\)(.*)\s\(옮긴이\)': r'\1\2'}, '발행년도': {r'\d{2}(\d{2})': r'\1'}}, regex=True)[100:102]
Out[585]:
번호 | 도서명 | 저자 | 출판사 | 발행년도 | ISBN | 세트 ISBN | 부가기호 | 권 | 주제분류번호 | 도서권수 | 대출건수 | 등록일자 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
100 | 101 | No라고 말할 줄 아는 남편과 아내 - 개정판 | 헨리 클라우드, 존 타운센드, 김진웅 | 좋은씨앗 | 18 | 9788958743019 | NaN | NaN | 234.9 | 1 | 1 | 2021-03-15 | |
101 | 102 | D2C 레볼루션 - 스타트업부터 글로벌 기업까지, 마켓 체인저의 필수 전략 | 로런스 인그래시아, 안기순 | 부키 | 21 | 9788960518483 | NaN | NaN | 325.1 | 1 | 0 | 2021-03-15 |
In [591]:
ns_book4['발행년도'].str.contains('1988').sum()
Out[591]:
407
In [603]:
invalid_number = ns_book4['발행년도'].str.contains(r'\D', na=True)
print(invalid_number.sum())
ns_book4[invalid_number].head()
1777
Out[603]:
번호 | 도서명 | 저자 | 출판사 | 발행년도 | ISBN | 세트 ISBN | 부가기호 | 권 | 주제분류번호 | 도서권수 | 대출건수 | 등록일자 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
19138 | 19565 | 단국강토 | 홍태수 저 | 매일경제신문사 | 1988. | 9788974420031 | NaN | NaN | 511.1 | 1 | 1 | 2019-12-19 | |
19227 | 19736 | 삼성의 역사 | 송부웅 撰 | 삼양 | 단기4334[2001] | 9788985464369 | 0 | NaN | 911.02 | 1 | 1 | 2019-12-06 | |
26097 | 26812 | 배고픈 애벌레 | 에릭 칼 글·그림 ;이희재 옮김 | 더큰컴퍼니 | [2019] | 9788959514083 | NaN | NaN | 843 | 1 | 0 | 2019-08-12 | |
29817 | 30586 | (The) Sopranos sessions | Matt Zoller Seitz,eAlanSepinwall,eAlanSepinwall,eLaura Lip... | Harry N Abrams Inc | 2019. | 9781419734946 | NaN | NaN | 326.76 | 1 | 0 | 2019-06-13 | |
29940 | 30709 | 다음엔 너야 | 에른스트 얀들 글;노르만 융에 그림;박상순 옮김 | 비룡소 | 2018. | 9788949110646 | 9788949110004 | 7 | NaN | 853 | 1 | 9 | 2019-06-04 |
In [605]:
ns_book5 = ns_book4.replace({'발행년도': r'.*(\d{4}).*'}, r'\1', regex=True)
ns_book5[invalid_number].head()
Out[605]:
번호 | 도서명 | 저자 | 출판사 | 발행년도 | ISBN | 세트 ISBN | 부가기호 | 권 | 주제분류번호 | 도서권수 | 대출건수 | 등록일자 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
19138 | 19565 | 단국강토 | 홍태수 저 | 매일경제신문사 | 1988 | 9788974420031 | NaN | NaN | 511.1 | 1 | 1 | 2019-12-19 | |
19227 | 19736 | 삼성의 역사 | 송부웅 撰 | 삼양 | 2001 | 9788985464369 | 0 | NaN | 911.02 | 1 | 1 | 2019-12-06 | |
26097 | 26812 | 배고픈 애벌레 | 에릭 칼 글·그림 ;이희재 옮김 | 더큰컴퍼니 | 2019 | 9788959514083 | NaN | NaN | 843 | 1 | 0 | 2019-08-12 | |
29817 | 30586 | (The) Sopranos sessions | Matt Zoller Seitz,eAlanSepinwall,eAlanSepinwall,eLaura Lip... | Harry N Abrams Inc | 2019 | 9781419734946 | NaN | NaN | 326.76 | 1 | 0 | 2019-06-13 | |
29940 | 30709 | 다음엔 너야 | 에른스트 얀들 글;노르만 융에 그림;박상순 옮김 | 비룡소 | 2018 | 9788949110646 | 9788949110004 | 7 | NaN | 853 | 1 | 9 | 2019-06-04 |
In [609]:
unknown_year = ns_book5['발행년도'].str.contains(r'\D', na=True)
print(unknown_year.sum())
ns_book5[unknown_year].head()
67
Out[609]:
번호 | 도서명 | 저자 | 출판사 | 발행년도 | ISBN | 세트 ISBN | 부가기호 | 권 | 주제분류번호 | 도서권수 | 대출건수 | 등록일자 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
30838 | 31616 | 본격 한중일 세계사 5 | 굽시니스트 지음 | 위즈덤하우스 | NaN | 9791190065092 | NaN | NaN | NaN | 0 | 0 | 2019-05-28 | |
39130 | 40141 | 정책금융의 현황과 발전과제 | 정책금융연구회 | 한국산업은행 | NaN | 9788992784108 | NaN | NaN | 327.1 | 1 | 0 | 2019-01-22 | |
39256 | 40268 | 서울지역 유적 발굴조사 총서 3 | 서울역사박물관 | 서울역사박물관 | NaN | 9791186324714 | 9791186324431 | NaN | NaN | NaN | 0 | 0 | 2019-01-22 |
76836 | 81202 | 흰머리 큰줄기 | 한호진 지음 | 秀文出版社 | [발행년불명] | 9788973010769 | 0 | NaN | 699.1 | 1 | 1 | 2016-11-10 | |
150543 | 160436 | (속) 경제학사 | 박장환 지음 | NaN | [20--] | 9788994339207 | 1 | NaN | 320.9 | 1 | 2 | 2012-11-19 |
In [615]:
ns_book5.loc[unknown_year, '발행년도'] = '-1'
ns_book5 = ns_book5.astype({'발행년도': 'int32'})
/var/folders/3w/0y55k0y53pg1dvg3p_cqn81m0000gn/T/ipykernel_76598/2662877226.py:1: FutureWarning: Setting an item of incompatible dtype is deprecated and will raise an error in a future version of pandas. Value '-1' has dtype incompatible with int32, please explicitly cast to a compatible dtype first. ns_book5.loc[unknown_year, '발행년도'] = '-1'
In [619]:
ns_book5['발행년도'].gt(4000).sum()
Out[619]:
131
In [621]:
dangun_yy_rows = ns_book5['발행년도'].gt(4000)
ns_book5.loc[dangun_yy_rows, '발행년도'] = ns_book5.loc[dangun_yy_rows, '발행년도'] - 2333
dangun_year = ns_book5['발행년도'].gt(4000)
print(dangun_year.sum())
ns_book5[dangun_year].head(2)
13
Out[621]:
번호 | 도서명 | 저자 | 출판사 | 발행년도 | ISBN | 세트 ISBN | 부가기호 | 권 | 주제분류번호 | 도서권수 | 대출건수 | 등록일자 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
222858 | 234268 | Modern art | [computer file] | GROLIER | 7611 | 9780717233243 | NaN | NaN | 609.205 | 1 | 1 | 2009-05-07 | |
270269 | 282852 | 현대 영어학=Linguistic theory in modern english | 이재영 | 열림기획 | 7634 | 9788986705072 | 1 | NaN | 740.1 | 1 | 6 | 2007-04-14 |
In [623]:
ns_book5.loc[dangun_year, '발행년도'] = -1
In [625]:
old_books = ns_book5['발행년도'].gt(0) & ns_book5['발행년도'].lt(1900)
ns_book5[old_books]
Out[625]:
번호 | 도서명 | 저자 | 출판사 | 발행년도 | ISBN | 세트 ISBN | 부가기호 | 권 | 주제분류번호 | 도서권수 | 대출건수 | 등록일자 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
61149 | 64093 | 고흐 씨, 시 읽어 줄까요 :내 마음을 알아주는 시와 그림의 만남 | 이운진 지음 | 사계절 | 176 | 9788958284277 | 0 | NaN | 811.7 | 1 | 6 | 2017-10-27 | |
70566 | 74347 | 정신 병리학의 문제들 | 지은이: 지그문트 프로이트 ;옮긴이: 황보석 | 열린책들 | 151 | 9788932905181 | 9788932905082 | 9 | 10 | 185.5 | 1 | 4 | 2017-04-26 |
79550 | 84164 | (최근 7년간) 중요 민법판례 :[2009년 1월~2016년 6월 중요 판례] | 이광섭 편저 | 법학사 | 163 | 9788962898651 | 9 | NaN | 365 | 1 | 14 | 2016-09-27 | |
147950 | 157759 | (한·중·일) 밥상 문화 :대표음식으로 본 3국 문화비교 | 김경은 지음 | 이가서 | 132 | 9788958643012 | 0 | NaN | 381.75 | 1 | 30 | 2013-02-19 | |
194576 | 205407 | 책으로 뒤덮인 집의 비밀 | N.E. 보드 지음 ;피터 퍼거슨 그림 ;김지현 옮김 | 개암나무 | 1015 | 9788992844413 | 7 | NaN | 843 | 1 | 15 | 2010-08-18 | |
287252 | 300283 | (밝혀질)우리歷史 | 吳在城 著 | 黎民族史硏究會 | 1607 | 9788986892130 | 0 | NaN | 911 | 1 | 5 | 2006-07-06 |
In [627]:
ns_book5.loc[old_books, '발행년도'] = -1
ns_book5['발행년도'].eq(-1).sum()
Out[627]:
86
- 누락된 정보 채우기¶
In [631]:
na_rows = ns_book5['도서명'].isna() | ns_book5['저자'].isna() | ns_book5['출판사'].isna() | ns_book5['발행년도'].eq(-1)
print(na_rows.sum())
ns_book5[na_rows].head(2)
5268
Out[631]:
번호 | 도서명 | 저자 | 출판사 | 발행년도 | ISBN | 세트 ISBN | 부가기호 | 권 | 주제분류번호 | 도서권수 | 대출건수 | 등록일자 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
78 | 79 | 아산 정주영 레거시 | 김화진 | NaN | 2021 | 9788952129529 | NaN | NaN | 325 | 1 | 1 | 2021-03-15 | |
265 | 278 | 골목의 시간을 그리다 | 정명섭.김효찬 지음 | NaN | 2021 | 9791191266054 | NaN | NaN | NaN | 1 | 0 | 2021-03-12 |
In [643]:
import requests
from bs4 import BeautifulSoup
In [645]:
def get_book_title(isbn):
url = 'http://www.yes24.com/Product/Search?domain=BOOK&query={}'
r = requests.get(url.format(isbn))
soup = BeautifulSoup(r.text, 'html.parser')
title = soup.find('a', attrs={'class':'gd_name'}).get_text()
return title
In [647]:
get_book_title(9791191266054)
Out[647]:
'골목의 시간을 그리다'
In [673]:
import re
def get_book_info(row):
title = row['도서명']
author = row['저자']
pub = row['출판사']
year = row['발행년도']
url = 'http://www.yes24.com/Product/Search?domain=BOOK&query={}'
r = requests.get(url.format(row['ISBN']))
soup = BeautifulSoup(r.text, 'html.parser')
try:
if pd.isna(title):
title = soup.find('a', attrs={'class':'gd_name'}).get_text()
except AttributeError:
pass
try:
if pd.isna(author):
authors = soup.find('span', attrs={'class':'info_auth'}.find_all('a'))
author_list = [auth.get_text() for auth in authors]
author = ','.join(author_list)
except AttributeError:
pass
try:
if pd.isna(pub):
pub = soup.find('span', attrs={'class':'info_pub'}).find('a').get_text()
except AttributeError:
pass
try:
if year == -1:
year_str = soup.find('span', attrs={'class':'info_date'}).get_text()
year = re.findall(r'\d{4}', year_str)[0]
except AttributeError:
pass
return title, author, pub, year
In [659]:
updated_sample = ns_book5[na_rows].head(2).apply(get_book_info, axis=1, result_type = 'expand')
updated_sample
Out[659]:
0 | 1 | 2 | 3 | |
---|---|---|---|---|
78 | 아산 정주영 레거시 | 김화진 | 서울대학교출판문화원 | 2021 |
265 | 골목의 시간을 그리다 | 정명섭.김효찬 지음 | 초록비책공방 | 2021 |
In [661]:
ns_book5_update = pd.read_csv('ns_book5_update.csv', index_col=0)
ns_book5_update.head()
Out[661]:
도서명 | 저자 | 출판사 | 발행년도 | |
---|---|---|---|---|
78 | 아산 정주영 레거시 | 김화진 | 서울대학교출판문화원 | 2021 |
265 | 골목의 시간을 그리다 | 정명섭.김효찬 지음 | 초록비책공방 | 2021 |
354 | 한국인의 맛 | 정명섭 지음 | 추수밭 | 2021 |
539 | 한성부, 달 밝은 밤에 | 김이삭 지음 | 고즈넉이엔티 | 2021 |
607 | 100일 완성 마그마 러시아어 중고급 단어장 | 러포자 구제 연구소 외 지음 | 문예림 | 2021 |
In [665]:
ns_book5.update(ns_book5_update)
na_rows = ns_book5['도서명'].isna() | ns_book5['저자'].isna() | ns_book5['출판사'].isna() | ns_book5['발행년도'].eq(-1)
print(na_rows.sum())
4615
In [667]:
ns_book5 = ns_book5.astype({'발행년도': 'int32'})
ns_book6 = ns_book5.dropna(subset=['도서명','저자','출판사'])
ns_book6 = ns_book6[ns_book6['발행년도'] != -1]
ns_book6.head()
Out[667]:
번호 | 도서명 | 저자 | 출판사 | 발행년도 | ISBN | 세트 ISBN | 부가기호 | 권 | 주제분류번호 | 도서권수 | 대출건수 | 등록일자 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1 | 인공지능과 흙 | 김동훈 지음 | 민음사 | 2021 | 9788937444319 | NaN | NaN | NaN | 1 | 0 | 2021-03-19 | |
1 | 2 | 가짜 행복 권하는 사회 | 김태형 지음 | 갈매나무 | 2021 | 9791190123969 | NaN | NaN | NaN | 1 | 0 | 2021-03-19 | |
2 | 3 | 나도 한 문장 잘 쓰면 바랄 게 없겠네 | 김선영 지음 | 블랙피쉬 | 2021 | 9788968332982 | NaN | NaN | NaN | 1 | 0 | 2021-03-19 | |
3 | 4 | 예루살렘 해변 | 이도 게펜 지음, 임재희 옮김 | 문학세계사 | 2021 | 9788970759906 | NaN | NaN | NaN | 1 | 0 | 2021-03-19 | |
4 | 5 | 김성곤의 중국한시기행 : 장강·황하 편 | 김성곤 지음 | 김영사 | 2021 | 9788934990833 | NaN | NaN | NaN | 1 | 0 | 2021-03-19 |
In [677]:
ns_book6.to_csv('ns_book6.csv', index=False)
- 기본숙제¶
In [706]:
df = pd.DataFrame([[1,'a'],[2],[3,'c',100.0]])
df.columns = ['col1','col2','col3']
df
Out[706]:
col1 | col2 | col3 | |
---|---|---|---|
0 | 1 | a | NaN |
1 | 2 | None | NaN |
2 | 3 | c | 100.0 |
In [718]:
# 1번 => 정답
df['col1'].sum()
Out[718]:
6
In [720]:
# 2번
df[['col1']].sum()
Out[720]:
col1 6 dtype: int64
In [722]:
# 3번
df.loc[:, df.columns == 'col1'].sum()
Out[722]:
col1 6 dtype: int64
In [724]:
# 4번 => 정답
df.loc[:,[False,False,True]].sum()
Out[724]:
col3 100.0 dtype: float64
- 추가숙제¶
In [700]:
df = pd.DataFrame([['bat','abc'],['foo','bar'],['bait','xyz']])
df.columns = ['A','B']
df
Out[700]:
A | B | |
---|---|---|
0 | bat | abc |
1 | foo | bar |
2 | bait | xyz |
In [702]:
df.replace(r'ba.*', 'new', regex=True) # 정답: 1번
Out[702]:
A | B | |
---|---|---|
0 | new | abc |
1 | foo | new |
2 | new | xyz |
'[혼공] 데이터분석' 카테고리의 다른 글
[혼공파] 6주차_혼공분석 (0) | 2025.03.05 |
---|---|
[혼공파] 5주차_혼공분석 (1) | 2025.03.05 |
[혼공파] 4주차_혼공분석 (0) | 2025.02.09 |
[혼공파] 2주차_혼공분석 (2) | 2025.01.19 |