2024. 4. 7. 14:15ㆍ프로젝트/빵맛집 추천서비스 웹배포
01 문제 해결 과정
# 오늘 아침 확인하니 크롤링 완료
- 어제(중구,동대문구,강남구,성북구,마포구) 오늘(은평구), 서대문구(기존)해서 크롤링 완료.
# 오늘 데이터 전처리 내용 모음
- '정보없음'이 가게명으로 수집된 info체크
- value_counts(), lambda 이용한 중복 데이터(시리즈) 체크
- map/filter 메서드를 이용한 중복 데이터프레임 체크
- groupby 메서드를 이용한 가게별 중복 리뷰text 체크
- drop_duplicates를 이용한 중복된 row 체크 후 제거
- contains를 이용한 '음식'점에 대한 리뷰 체크 후 제거
- 음식점이라면 실제 리뷰를 확인해보고 빵집인지 더블체크
- 프랜차이즈 대형 빵집, 커피전문점은 수집 목적에 부합하지 않아서 제거
- 리뷰 table은 가게명을 drop하고 merge할 예정이다. (완료)
- 중복된 가게명을 체크하고 주소가 같은지, 다른지 확인
- 주소가 같으면 drop, 다르면 네이버를 기준으로 상세지점 추가 후 정정
- but 네이버에도 없으면 'ex) 누아네 신수동점' 으로 정정
- 이사를 했거나 하나의 가게가 둘 이상으로 분리되어 있으면 통합
- 수집한 구이름에 맞는지 주소를 체크하고 다르면 제거
- loc[행, 열]을 이용해서 '서울특별시'까지만 적혀있는 경우 주소지 추가
- 리뷰수, 평점이 없는 경우 merge에서 자동으로 탈락될 예정
- 'Number'컬럼을 기준으로 inner(기본) merge 완료
- pd.factorize()를 이용해서 가게별 고유 번호 부여
- pd.DataFrame 컬럼명을 팀원들과 미리 정해준 순서로 재배열, 리네이밍
- 모든 8개 구에 대한 통합 데이터 셋 제작 pd.concat
- 리뷰수에 대한 괄호, 콤마 제거, text에 대한 띄어쓰기, 개행 제거
- 수치형 자료형은 int, float으로 자료형을 변환
- 마지막으로 개행 문자가 남아있지 않는지 '\r\n'모두 확인하고 저장
# 최종 데이터 행 (수집 순서대로)
- 은평구 877
- 서대문구 2815>2538 마포구 다량 삭제 (마포구도 중복)
- 마포구 4071
- 성북구 2207
- 종로구 4942
- 중구 3527
- 동대문구 666
- 강남구 4262
# 고정 columns
Platform-Number-Store-Address-Addr-Review_score-Review_counts-ID-Date-Review_text-Time
02 한계점
회고노트 19주차 : 크롤링 & 자동화
01 웹크롤링 실습 1. 기억에 남는 건 크롤링과 수준별 학습이다. 그 중에서도 크롤링에 많은 시간을 쏟았다. 2. 최종 프로젝트이니 다른 팀과는 다른 데이터를 만져보고 싶었다. 3. 이제껏 정재된
specialda.tistory.com
1. 회고노트에 쓰인 바와 같이 와이파이 이슈
2. 가게 이름에 공백 제거하기를 깜박했다.
03 유용한 코드 인사이트
# 중복된 행을 제거하는 방법
1. 중복된 행 기본 제거 메서드
cleaned_df = df.drop_duplicates()
2. 'Name' 열을 기준으로 중복된 행 제거
cleaned_df = df.drop_duplicates(subset='Name')
3. 중복된 행을 모두 제거하되, 첫 번째로 등장하는 행 유지
subset_df = df.drop_duplicates(subset=['Name', 'Age'], keep='first')
4. 중복된 행을 마지막으로 유지
last_df = df.drop_duplicates(keep='last')
[IF] 특정 컬럼을 중복 체크에서 제외하고 중복을 계산하고 싶다면 subset 파라미터에 해당 컬럼을 지정하면 된다. 이렇게 하면 지정된 컬럼을 기준으로 중복을 검사하며, 나머지 컬럼들은 중복 여부에 영향을 미치지 않는다.
# 가게명 기준으로 고유 번호 부여
merged_df['Store_ID'] = pd.factorize(df['Store'])[0] + 1
# 프랜차이즈 제거
- 파리바게뜨, 파리바게트, 뚜레쥬르, 스타벅스, 메가커피, 커핀그루나루, 던킨, 빽다방, 할리스
# 컬럼 이름 변경
df = df.rename(columns={'old_name1': 'new_name1', 'old_name2': 'new_name2'})
'프로젝트 > 빵맛집 추천서비스 웹배포' 카테고리의 다른 글
04.09 google api 활용한 feature engineering, gpt prompt engineering (0) | 2024.04.09 |
---|---|
04.08 20만건 데이터 수집완료, 팀원과 전처리 하는 중 (1) | 2024.04.08 |
04.06 종로구에서 크롤링 하다가 멈췄다. (feat.map,filter) (0) | 2024.04.06 |
04.05 크롤링 '자세히' 클릭 코드 추가 및 기타 진행 사항 (0) | 2024.04.05 |
04.04 크롤링 문제 해결 과정 (0) | 2024.04.04 |