# 제4회 북커톤 기본 데이터 전처리 주어진 데이터 파일은 다음과 같습니다. - 2015 독서리뷰-수정.xlsx - 2016 독서리뷰-수정.xlsx - 2017 독서리뷰-수정.xlsx - 2018 독서리뷰-수정.xlsx - 2019-2020 독서리뷰-수정.xlsx - 2021-2022.12.12 오거서 독서리뷰.xls 마지막 데이터를 제외하고 xlsx 형식입니다. **"2021-2022.12.12 오거서 독서리뷰.xls"** 파일은 .xlsx으로 변환하여 저장하였습니다. **2015~2018 데이터:** 도서명(또는 글제목), 저자명, ISBN, 글 내용 **2019~2022 데이터:** 번호, 작성일자, 프로그램명, 게시물번호, 글자수, 조회수, 추천수, 도서명(또는 글제목), 저자명, ISBN, 글 내용 각 열 중 다음의 데이터만 남겼습니다. **2015~2018 데이터:** 도서명, 글 내용 **2019~2022 데이터:** 도서명(또는 글제목), 글 내용, 조회수 추천수는 대부분의 데이터가 0~3의 값만 가지고 있어 반영하기 어려워 제외하였습니다. ## 데이터 불러오기 ```python import pandas as pd import numpy as np # 2015~2018은 형식이 같음. df1 = pd.read_excel('2015 독서리뷰-수정.xlsx', engine='openpyxl') df2 = pd.read_excel('2016 독서리뷰-수정.xlsx', engine='openpyxl') df3 = pd.read_excel('2017 독서리뷰-수정.xlsx', engine='openpyxl') df4 = pd.read_excel('2018 독서리뷰-수정.xlsx', engine='openpyxl') #df6는 xls파일로 되어 있는데 오류가 나서 xlxs파일로 저장함 df5 = pd.read_excel('2019-2020 독서리뷰-수정.xlsx', engine='openpyxl') df6 = pd.read_excel('2021-2022.12.12 오거서 독서리뷰.xlsx', engine='openpyxl') ``` ## 필요한 열만 선택 ```python df1 = df1.loc[1:,['Unnamed: 1', 'Unnamed: 4']].rename(columns={'Unnamed: 1':'도서명', 'Unnamed: 4':'글내용'}) df2 = df2.loc[1:,['Unnamed: 1', 'Unnamed: 4']].rename(columns={'Unnamed: 1':'도서명', 'Unnamed: 4':'글내용'}) df3 = df3.loc[1:,['Unnamed: 1', 'Unnamed: 4']].rename(columns={'Unnamed: 1':'도서명', 'Unnamed: 4':'글내용'}) df4 = df4.loc[1:,['Unnamed: 1', 'Unnamed: 4']].rename(columns={'Unnamed: 1':'도서명', 'Unnamed: 4':'글내용'}) df5 = df5.loc[1:,['Unnamed: 7', 'Unnamed: 10', 'Unnamed: 5']].rename(columns={'Unnamed: 7':'도서명', 'Unnamed: 10':'글내용', 'Unnamed: 5':'조회수'}) df6 = df6.loc[1:,['Unnamed: 12', 'Unnamed: 15', 'Unnamed: 10']].rename(columns={'Unnamed: 12':'도서명', 'Unnamed: 15':'글내용', 'Unnamed: 10':'조회수'}) ``` ## 결측치 제거 ```python #결측치 확인 print(df1.isna().sum()) print(df2.isna().sum()) print(df3.isna().sum()) print(df4.isna().sum()) print(df5.isna().sum()) print(df6.isna().sum()) #결측치 제거 df1.dropna(axis=0) df2.dropna(axis=0) df3.dropna(axis=0) df4.dropna(axis=0) df5.dropna(axis=0) df6.dropna(axis=0) ``` 결측치는 다음과 같았습니다. **df1** 도서명 1 글내용 25 dtype: int64 **df2** 도서명 0 글내용 9 dtype: int64 **df3** 도서명 0 글내용 1 dtype: int64 **df4** 도서명 0 글내용 0 dtype: int64 **df5** 도서명 0 글내용 0 조회수 0 dtype: int64 **df6** 도서명 0 글내용 25 조회수 0 dtype: int64 ## 데이터 관찰 결과 데이터를 관찰했을 때 고려해야할 것들을 정리해보았습니다. 확인해보시고 다른 고려해야할 점이 있다면 슬랙에 남겨주세요. 1. 이름, 학번, 프로그램명 존재 (2015~2018 파일에서) 2. 영어로 쓴 독후감 존재 -> 가끔 있더라구요 3. 블로그 주소 -> 가끔 자신의 블로그를 첨부했더라구요 > **예시)** > - 본 독후감은 필자가 운영하는 블로그에 쓴 글에 추가 내용을 덧붙인 글입니다 -블로그 주소: blog.naver.com/thseotjrkin 4. 개행 -> 개행이 아예 안된 것, 개행이 2번씩 된 것 등등 존재 5. 아주 가끔 특수문자 존재 -> 가끔 있던데 왜있는지 모르겠습니다. 6. 매우 수준 낮은 글 -> 분량 채우기식, 비표준어를 사용한 글이 생각보다 있습니다. ## 데이터 활용 전략 제가 생각한 데이터 활용 전략은 다음과 같습니다. > 1. 일정 수준 이상의 글자수를 가진 글만 뽑기 > 2. 2019~2022 데이터는 조회수 항목이 있는데 이를 기준으로 선별 > 3. 2019~2022 데이터는 글을 작성한 아이디가 존재 -> 글을 자주 썼거나 글을 자주 쓰는 아이디를 선별하여 적용 위 과정을 통해 전체 데이터의 10% 내외만 선별하여 활용하는 것이 좋을 것 같습니다. 혹은, 대회 당일 주제어가 주어지면, 주제어와 비슷한 유의어를 포함해서 관련한 글을 뽑는 것을 좋을 것 같습니다. **<내용 추가 중 ... >**