2024.08 2주차

..·2024년 8월 9일

finder

목록 보기
10/23

학습 내용

지난주에는 pandas를 이용해서 기본적으로 데이터를 분석하는 과정에 대해 학습했는데, 이번에는 조건을 적용한 통계를 얻거나 이를 그래프, 지도 등 시각 자료에 활용하는 것까지 학습했다.

pandas: 조건을 적용하여 데이터를 분석하기

데이터 분석 과제를 하면서 원하는 조건에 따른 데이터를 얻고, 이렇게 얻은 데이터를 활용한 또 다른 결과를 도출하는 과정이 필요했다.
예를 들어 전국의 편의점 데이터(이름, 주소, 브랜드 등)가 존재한다면, 서울시에 존재하는 모든 편의점을 자치구 별로 구분한 데이터와 서울시에 존재하는 CU 편의점을 자치구 별로 구분한 데이터를 구하는 과정이 필요했다.

전국 편의점 데이터는 다음과 같은 구성을 가질 수 있다.
여기서 서울특별시에 존재하는 모든 편의점 데이터를 구 단위로 그룹화하여 통계를 구하면 다음과 같다.

# df 라는 데이터 프레임으로 전체 데이터를 불러온다.

seoul_convenience = df[df['시도명'] == '서울특별시'].copy()
seoul_convenience = seoul_convenience.groupby('시군구명')
seoul_convenience = seoul_convenience['시군구명'].value_counts()

먼저 시도명 컬럼이 서울특별시인 값을 전체 데이터 프레임에서 복사(copy) 한다.
그리고 서울특별시의 모든 편의점 데이터를 시군구명이라는 컬럼으로 그룹화한다.
마지막으로 시군구명으로 그룹화한 컬럼의 각 총합을 구한다.

다음으로는 서울특별시에 존재하는 CU 지점의 수를 구 단위로 구해보았다.

# df 라는 데이터 프레임으로 전체 데이터를 불러온다.

seoul_cu = df[(df['시도명'] == '서울특별시') & (df['브랜드'] == 'CU')].copy()
seoul_cu = seoul_cu.groupby('시군구명')
seoul_cu = seoul_cu['시군구명'].value_counts()

& 연산자를 통해 서울특별시의 CU의 값만 복사하고, 구 단위로 그룹화한다.
서울의 모든 편의점 수와 CU 편의점의 수를 구했지만 한 번에 확인하기 위해서는 두 개의 결과를 병합하는 과정이 필요하다.

result = pd.concat([seoul_convenience, seoul_cu], axis = 1)
result.columns = ['total', 'cu']

concat을 이용하여 각각 하나의 컬럼으로 구성된 series 데이터를 2개 이상의 컬럼을 가지며 표 형식으로 나타낼 수 있는 dataframe 형태로 병합했다.
axis = 1은 각각 컬럼을 수평으로 병합한다.

seoul_convenienceseoul_cu는 모두 value_counts()를 이용한 결과 데이터들이라 컬럼명이 count로 동일하게 나타나는 문제가 있었기 때문에 컬럼명을 각각 total, cu로 변경했다.


# ratio 값을 이용하여 크기가 (7, 7)인 pie 차트를 그린다.
result['ratio'].plot.pie(figsize=(7, 7))

위의 그림은 편의점 데이터를 활용한 것이 아닌, 또 다른 예시를 활용한 데이터를 분석한 통계를 바탕으로 출력한 차트이다. 데이터는 다르지만 동일한 과정을 통해 데이터를 분석했고, 이를 시각화까지 하는 것에 대해 학습할 수 있었다.


데이터 프레임(Dataframe)과 시리즈(Series)의 차이

이러한 과정을 통해, 데이터 프레임여러 개의 컬럼을 가지는 표 형태의 자료구조이고 시리즈1개의 컬럼을 가지는 자료구조라는 차이를 알 수 있었다.
또한 시리즈의 형태일 때에는 데이터 프레임을 다루는 코드가 적용되지 않을 때가 있었는데, concat을 통해 series + series는 데이터 프레임의 형태를 갖출 수 있다는 것도 알 수 있었다.



이커머스 ERD 작성 해보기

ERD Cloud를 이용한 ERD 작성하기

이커머스 도메인에 대한 지식이 없지만 하나씩 구상해 보고 찾아보면서 ERD를 작성하고 있다.
화질이 좋지 않은 사진을 사용한 이유는, 진행 상황(=시작했다)만 알리는 수준의 기록을 하기 위해서다.

사실 이전에 직접 테이블을 설계할 일이 있어도 ERD를 작성하면서 업무를 진행하지 않았는데, 이번에는 당장 업무에 도입할 내용이 아니니까 학습 목적으로 천천히 그려보기로 했다.
툴을 처음 사용해 봐서 어떤 내용을 어떻게 작성하는지 익숙해지는 것에도 시간이 조금 걸렸다.

일단 회원 - 상품을 메인으로 두고 여기서 발생할 수 있는 주문이라는 이벤트를 구체화하여 작성할 계획이다. 작성할수록 이런 것도 필요하지 않을까? 하는 생각에 점점 작은 것까지 집착하게 되는데 어디까지 수용하고 감안하며 작성하는가에 따라 진행 속도가 달라지고 있다.



마무리

오랜 취준 기간으로 인해 자존감이 떨어지는 건 둘째치고 이게 내 길이 맞나 싶은 생각이 계속 드는 나날이다.
예전에는 도전적인 지원을 많이 했었지만, 요즘은 내가 쌓은 경력과 부합하는 자리에 이력서를 넣어도 서류 탈락이라는 결과를 마주하게 되어서 많이 심란하다.
데이터를 다루고, 서비스를 만들어가는 일이 재밌고 앞으로도 계속하고 싶은데 기회를 잡기 어렵다.

그러다 문득, 세상은 넓은데 나는 당장 어떠한 결과를 얻기 위해서만 어딘가를 바라보고 있지 않은가? 하는 생각이 들었다.
개발은 당분간 나라는 사람의 인생의 큰 비중을 차지하고, 잘하고 싶고, 계속해보고 싶은 일이지만 내 전부가 아닐 수 있다는 생각이 들었다.

그래서 이 시간을 납득할 수 있도록 내가 해보고 싶었던 일들을 함께 해보기로 했다. 데이터 분석도, 개발 공부도 하고 싶은 일이었지만 사실 어떠한 성취를 목적에 두고 하는 일이었다.
그냥 나라는 한 사람이 이 넓은 세상을 바라보는 또 다른 눈을 가지는 경험을 해보고 싶어서 전부터 막연하게 생각했던 일에 도전해 봤다. 결과는 모르지만... 이 또한 즐거운 경험이 될 것이라 생각한다.

힘내자!

0개의 댓글