일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 기초통계
- SQL
- 클러스터링
- 히트맵
- GA4
- Python
- Chat GPT
- 기초프로젝트
- If
- 데이터 분석
- streamlit
- 서브쿼리
- 크롤링
- pandas
- 프로젝트
- 데이터분석
- SQLD
- 머신러닝
- da
- 프롬프트 엔지니어링
- 시각화
- data analyst
- 전처리
- 최종 프로젝트
- 팀프로젝트
- lambda
- jd
- 군집화
- 태블로
- cross join
- Today
- Total
세조목
최종 프로젝트 11일~12일차(24.04.06~07) 본문
최종 프로젝트 11일, 12일차입니다.
토요일인 어제와 오늘은 크롤링 작업을 이어나갔습니다.
10일차 포스팅에서 설명했던 리뷰 텍스트 더보기 이슈 관련해서 코드를 수정한 후
크롤링에 소요되는 시간이 훨씬 늘어났는데 1페이지당 3시간 정도 소요됐습니다.
* 리뷰 텍스트 더보기 이슈 관련 내용은 아래 포스팅 참고
2024.04.05 - [데이터 분석 공부/프로젝트] - 최종 프로젝트 10일차(24.04.05)
총 8개 구당 각각 네이버 지도 6개 페이지가 있었으니
어림잡아 144시간, 6일 정도 소요될 예정이었습니다.
다행히 팀원 중 한 명의 컴퓨터 성능이 상당히 좋아서
어제 오후 중 네이버 지도 크롤링 작업은 끝낼 수 있었습니다.
아직 구글과 카카오 크롤링 작업이 진행 중이었기때문에
저는 카카오 크롤링 작업을 거들었습니다.
카카오 작업을 맡고 있던 팀원에게 듣기로는 대략 12시간 정도 소요될꺼라고 해서
어제 밤에 돌려놓고 잤습니다.
자고 일어나니 여전히 크롤링 작업은 진행중이었고,
오후 3시 정도가 되어서야 끝이 났습니다.
* 그래도 생각했던것보다 일찍 끝나서 의외였습니다.
GitHub에 csv파일을 올려둔 후
저는 네이버 파일 전처리를 시작했습니다.
다른 팀원이 작업한 네이버 크롤링 csv파일은
아직 Git에 올라와 있지 않아서 일단 종로구만 작업했습니다.
- 파일 합치기
- 불필요한 컬럼 지우기
- '구'까지만 존재하는 주소 컬럼 만들기
- 개행을 띄워쓰기로 replace
- '파리바게뜨', '뚜레쥬르' 행 삭제
이렇게 다섯가지 작업을 진행했습니다.
1. 파일 합치기
# 파일 합치기
df1 = pd.read_csv("N:/개인/DA/Python/크롤링/종로구 빵_1page_naver.csv")
df2 = pd.read_csv("N:/개인/DA/Python/크롤링/종로구 빵_2page_naver.csv")
df3 = pd.read_csv("N:/개인/DA/Python/크롤링/종로구 빵_3page_naver.csv")
df4 = pd.read_csv("N:/개인/DA/Python/크롤링/종로구 빵_4page_naver.csv")
df5 = pd.read_csv("N:/개인/DA/Python/크롤링/종로구 빵_5page_naver.csv")
df6 = pd.read_csv("N:/개인/DA/Python/크롤링/종로구 빵_6page_naver.csv")
df = pd.concat([df1, df2])
df = pd.concat([df, df3])
df = pd.concat([df,df4])
df = pd.concat([df,df5])
df = pd.concat([df,df6])
2. 불필요한 컬럼 지우기
# 불필요한 컬럼 지우기
df.drop('Unnamed: 0', axis=1, inplace=True)
df.reset_index(drop=True, inplace=True)
3. '구'까지만 존재하는 주소 컬럼 만들기
# '구' 까지만 존재하는 주소 컬럼 만들기
def slice_to_gu(address):
gu_index = address.find('구') + 1 # find 함수를 사용하면 '구'가 몇 번째 위치에 있는지 알 수 있음
if gu_index:
return address[:gu_index]
else:
return address
df['Addr'] = df['Address'].apply(lambda x: slice_to_gu(x))
df = df[['Platform', 'Number', 'Store', 'Address', 'Addr', 'Review_score', 'Review_counts', 'ID', 'Date', 'Review_text', 'Time']]
4. 개행(new line)을 띄워쓰기로 replace
# 개행을 띄워쓰기로 replace
def to_str(text):
text = str(text)
return text
def remove_newline(text):
text = text.replace("\n", "" "")
return text
df['Review_text'] = df['Review_text'].apply(lambda x : to_str(x))
df['Review_text'] = df['Review_text'].apply(lambda x : remove_newline(x))
5. '파리바게뜨', '뚜레쥬르' 행 삭제
df = df[~df['Store'].str.contains('파리바게뜨')]
df = df[~df['Store'].str.contains('뚜레쥬르')]
모든 플랫폼의 데이터셋을 합친 후 진행해야하는
Review컬럼의 None값 전처리는 진행하지 않았습니다.
내일 네이버 크롤링 작업을 도와주었던 팀원으로부터
다른 '구'의 데이터셋을 공유받으면 전처리를 마저 진행하고,
모든 플랫폼 데이터셋을 합친 후에 Review 컬럼 None값 전처리도 함께 진행할 예정입니다.
'데이터 분석 공부 > 프로젝트' 카테고리의 다른 글
최종 프로젝트 14일차(24.04.09) (0) | 2024.04.09 |
---|---|
최종 프로젝트 13일차(24.04.08) (0) | 2024.04.08 |
최종 프로젝트 10일차(24.04.05) (0) | 2024.04.05 |
최종 프로젝트 8일차(24.04.03) (0) | 2024.04.03 |
최종 프로젝트 7일차(24.04.02) (0) | 2024.04.02 |