이번 주.. 집중력이 쉽지 않다. 그래도 이런 날도 있는 거지, 이런 날은 앉아서 버티는 것만으로도 만점, 이러면서 버텨본다(어제 푼 SQLD 모의고사 점수를 생각하면 발등을 불로 지지고 있는 상황인데도 자취를 찾을 수 없는 의욕). 그래도 노트북 앞에 앉아있으면 뭐라도 하고 그렇게 꾸준하게 시간을 쌓는 때도 있는 법이니까.
이런 와중에 오늘의 기쁜 소식 하나는 지난 실전 프로젝트의 결과물이 우수 프로젝트 선정에서 2위를 했다는 기쁜 소식👏👏 최종 프로젝트도 잘해야지!
오늘 한 일은,
- [프로덕트 데이터 분석] 2회차 수강하기
- [spark를 이용한 빅데이터 분석] 1주차 수강하기
- SQLD 시험 준비하기
- 어제 푼 모의고사 오답 확인하기
- 모의고사 1회분 풀기
Spark 공부: [spark를 이용한 빅데이터 분석] 1주차 수강하기
1주차 수업 말미에 진행되는 실습을 공유해주신 ipynb 파일 속 코드들을 정리해보려고 한다. 캐글에서 이 앱 리뷰 csv 파일들을 받았다곤 하셨는데 링크를 따로 남겨두진 않아서 우선 코드를 뜯어보면서 정리해본다.
from glob import glob
glob("../app_review_data/*.csv")
- app_review_data 폴더 속 모든 csv 파일 불러오기
- glob: 파일 시스템에서 패턴 매칭을 사용해 파일 목록을 찾는 파이썬 내장 라이브러리
- glob(): 지정된 패턴과 일치하는 모든 파일 경로의 리스트를 반환하는 glob 라이브러리의 함수
from tqdm import tqdm
import pandas as pd
# 함수 extract_csvs() 정의하기
def extract_csvs():
res = []
for path in tqdm(glob("../app_review_data/*.csv")):
app_name = path.split("/")[-1].replace(".csv", "")
df_temp = pd.read_csv(path)
df_temp = df_temp.assign(app_name=app_name)
res.append(df_temp)
df = pd.concat(res)
return df
# 함수 실행하여 모든 csv파일들을 모아서 df로 저장하기
df = extract_csvs()
- csv 파일을 하나의 데이터프레임으로 통합하는 함수 extract_csvs() 정의하기
- 파일 경로에서 파일명을 가져와 확장자를 제외하여 app_name으로 가져와 컬럼을 추가한다
- 각 csv 파일을 하나의 리스트에 append()
- 그리고 리스트의 모든 df_temp들을 concat()으로 합쳐서 df를 만들어 반환한다
# df 확인하기
df.head() # 데이터 미리 보기
df.review_rating.value_counts() # 각 review_rating이 몇 번 나왔는지 세기
df.review_rating.sort_values() # review_rating을 오름차순 정렬하여 보기
df.info() # 데이터 요약 정보 확인하기
df.isna().mean() # 각 컬럼별 결측치 비율 확인하기(1에 가까울수록 결측치 많음)
- df 상태 확인하기: 값이 어떻게 담겨 있는지, 무슨 컬럼들이 있는지, 결측치는 어떤지 등
# 분석에 사용할 컬럼들만 target_columns로 지정
target_columns = [
"review_id", "app_name",
"author_name", "pseudo_author_id", "author_app_version",
"review_rating", "review_likes",
"review_datetime_utc", "review_timestamp"
]
# target_columns만 담은 df를 기존의 것에서 대체
df_target = df[target_columns]
df = df_target
del df_target
- 분석에 사용할 컬럼만 선택하고, 원하는 순서대로 배치하여 df 새로 만들기
- target_columns 지정:
이렇게 컬럼명을 명시적으로 적는 편이 코드의 재사용성과 유지 보수 측면에서 더 좋은 방식이다. 현업에서는 이후에 데이터셋의 상태(컬럼의 순서가 바뀔 수도 있고, 코드를 만들 당시에 없었던 컬럼들이 추가될 수도 있고)가 바뀔 수도 있기 때문이다.
- target_columns 지정:
df.isna().sum()
'[내배캠] 데이터분석 6기 > 본캠프 기록' 카테고리의 다른 글
[본캠프 68일차] 데이터 수집 (0) | 2025.05.26 |
---|---|
[본캠프 67일차] QCC ⑥, 네트워킹 데이, (0) | 2025.05.23 |
[본캠프 66일차] 실전 프로젝트 발표 (0) | 2025.05.22 |
[본캠프 57일차] 태블로 공부, 실전 프로젝트 준비 (0) | 2025.05.09 |
[본캠프 56일차] 태블로 공부 (0) | 2025.05.08 |