Daily reflection - 2

박경국·2022년 5월 13일
0

공부 과정을 기록하는 페이지입니다. 다음 원칙을 지켰는지 확인합니다.
1. 레퍼런스에서 어떤 부분을 더 발전시켰는지
2. DA에서 사용하는 언어와 개념을 나의 언어로 설명할 수 있는지

레퍼런스를 더 발전시킨 내용

  • 코드를 객체화하여 재사용 및 유지보수를 할 수 있도록 바꿈
def make_visit_table(df):
    elec_daily_summary_table=df.groupby(by=[df['event_time'].dt.normalize()]).agg(
    Number_of_daily_visits=('user_session', lambda x: x.nunique()),
    Number_of_daily_visitors=('user_id', lambda x: x.nunique()))

    return elec_daily_summary_table
  • groupby로 분석이 필요한 카테고리를 집계한 뒤, Pivot을 사용하여 value의 값들을 열로 전환시킴
df_elec_action = df_elec.groupby(['categori_code_level_2', 'event_type'])
				.size()
				.to_frame()
				.reset_index()
                
df_elec_action = pd.pivot_table(df_elec_action,
								index = ['categori_code_level_2'], 
                                columns = ['event_type'], 
                                values = 0)
                                	.reset_index()
  • loc 기능을 활용하여 조건에 해당하지 않는 row를 필터링함(결측치, 이상치 제거).

새롭게 배우거나 활용한 개념

parquet

데이터의 용량이 클 때 사용할 수 있는 방법에 대해 알아봤다. 데이터가 csv의 형태로 저장되어 있을 경우 spark를 활용하여 parquet 형태로 바꾸면 데이터를 처리하는 속도가 빨라진다. csv는 데이터를 행 단위로 처리하는 반면에 parquet는 데이터를 열 단위로 처리한다. 데이터를 조회하거나 필터를 할때 행보다는 열을 중심으로 데이터를 처리하는 경우가 많기 때문에 parquet 형식의 데이터가 csv보다 처리가 빠르다.

bigquery

parquet이 익숙하지 않다면 bigquery에 데이터를 적재하여 활용하는 방법도 고려할만 하다. parquet와 마찬가지로 열 형식의 처리를 지원하여 개별 열을 스캔하는데 효율적이다. 코랩을 분석 툴로 사용하는 경우 api를 활용하여 쉽게 연동할 수도 있다. mysql 서버에 락이 걸려 코랩과 연결하는데 고생한 경험이 있다면(혹은 고생하고 있다면) bigquery를 사용해보자!

공부가 더 필요한 부분

  • groupby : 인자를 입력했을 때 어떤 결과가 나올지 예상되도록 공부할 것
  • sql : 기본적인 함수를 학습한 뒤에 문제 풀이를 시작할 것
  • 시각화 : 공부를 시작해야하는데, 프로젝트와 sql 공부만으로도 벅차서 시간을 내지 못하고 있다. 억지로 시간을 내기보다 프로젝트 안에서 시각화를 구현하는 방식으로 공부를 할 것

0개의 댓글