본문 바로가기
유데미 스타터스 데이터 분석

유데미 스타터스 취업 부트캠프 4기 - 데이터분석/시각화(태블로) 1주차 학습 일지

2023. 2. 12.

2022.02.06 ~ 2022.02.10

1주차에는 파이썬과 익숙해지는 시간을 가졌다. 특히 데이터를 불러오고 기본적인 탐색과 시각화를 하는 사고의 흐름을 익힐 수 있었다. 기존에 정규화된 데이터만 다뤄 봤기 때문에 공공데이터와 같이 방대한 로우데이터를 다루는 것이 항상 부담스러웠는데 패턴화와 반복으로 조금은 익숙해진 것 같다.

그래서 이번 학습 일지에서는 실습 데이터 외에 직접 공공데이터를 내려받아 복습해보기로 했다. 여러 가지 집계를 적용해보기 좋은 상품이나 가격 정보가 있는 데이터를 찾아보았다.


사용 데이터

서울시 가격안정 모범업소 상품목록 현황
가격이 저렴하고 서비스가 좋은 가격안정모범업소(착한가게)들의 상품목록 정보에 대한 OpenAPI 서비스입니다. 지방물가안정을 위해 해당 업소를 발굴·이용토록 하여 지방물가 안정에 기여하고자 합니다.

출처: 서울 열린데이터 광장

라이브러리 임포트

import pandas as pd
import matplotlib.pyplot as plt
import re

%matplotlib inline

import matplotlib as mpl
import matplotlib.font_manager as fm

mpl.rcParams['axes.unicode_minus'] = False

데이터 준비

df = pd.read_csv('c:/pythondata/서울시 가격안정 모범업소 상품목록 현황.csv', encoding='cp949')

결측치 확인

df.isnull().sum()

✅ 업소 전화번호와 상품명, 상품가격 정보에서 결측치가 확인되었다. 특히 상품가격은 집계의 메인이 될 듯한데 null 값 삭제가 필요해보인다. 상품명과 상품가격이 모두 null인 데이터의 수가 같아서 아마 동일한 데이터이지 않을까 추측된다.

데이터 타입 확인

df.dtypes

✅ 상품가격 데이터 타입이 float이므로 집계나 데이터 표현 시 유의해야 할 것 같다.

데이터 미리보기

df

 

✅ 로우데이터를 미리보기 해보니 업소 주소가 전체 도로명 주소로 들어가 있고, '서울특별시 서울'이나 '서울특별시'처럼 불규칙한 것을 확인할 수 있다. 지역구별 집계를 위해 주소 부분을 전처리할 필요가 있을 것 같다.

주소 전처리

업소 주소에서 'OO구' 만 추출하기 위해 문자열 함수와 정규표현식을 찾아보다가 주소 관련해서 여러가지 추출 방법을 정리해 놓은 글을 찾았다.

df['지역구'] = df['업소 주소'].str.extract(r'(\w+구)')
df['지역구']

.str.extract()
: 정규식으로 찾은 값 추출

출처: [Python] Pandas Dataframe 내 정규표현식 반영 문자열 추출

❗ 사실 findall()와 정규식을 함께 써서 값을 반환했을 때 리스트 형태로 반환되어서 다른 방법을 찾은 것이었다. 어쨌든 지역구 데이터 추출은 extract를 사용하여 성공!

df['지역구'] = df['업소 주소'].str.findall('\w+구')
df['지역구']

데이터 탐색

업소 목록

df_store = df[['업소아이디','분류코드명', '업소명', '지역구']]
df_store

일단 상품명은 업소에 따라 당연히 명칭이 다르므로 파마, 미용료(파마)와 같이 다르게 표현된다. 따라서 '파마'나 '커트'와 같은 키워드로 조건을 부여하면 좋을 것 같다.

파마 데이터 추출

❗ 상품명에 '파마'가 들어간 데이터를 추출하려는데 null 값 때문에 에러가 난 듯하다.

 df_ferm = df[df['상품명'].str.contains('파마')]

그래서 결측치를 제거해주고 다시 시도하니 정상적으로 출력되었다.

df = df.dropna()

 

우리 동네 파마 가격 알아보기

지역구 이름을 입력 받아 상품명에 '파마'가 포함된 상품 정보를 추출한다.

gu = input('구이름: ')

df_ferm_gu = df_ferm[df_ferm['지역구']==gu][['업소아이디','분류코드명','지역구', '업소명','상품명', '상품가격(일반)(원)']].drop_duplicates()
df_ferm_gu

우리 동네 파마 가격 시각화

x = df_ferm_gu['업소명']
y = df_ferm_gu['상품가격(일반)(원)']
plt.scatter(x,y)

plt.title(gu + ' 파마 가격')
plt.grid(True)
plt.xticks(rotation=45)
plt.show()

✅ 송파구의 경우 파마 가격이 20,000원에서 25,000원에 주로 분포되어 있었다. 다만 기존 데이터 셋 자체가 가격안정모범업소의 상품정보였기 때문에 업소 및 가격 정보가 많지 않은 지역구도 있었다.

일단 이번 주는 여기까지.. 2주차에는 좀 더 다양한 집계 케이스들을 학습하면서 위 데이터로 추가 탐색과 시각화를 진행해보려 한다.


>> 유데미 바로가기
>>
STARTERS 취업 부트캠프 공식 블로그 보러가기

본 후기는 유데미-웅진씽크빅 취업 부트캠프 4기 데이터 분석 과정 학습 일지 리뷰로 작성되었습니다.

 

#유데미 #유데미코리아 #유데미부트캠프 #취업부트캠프 #부트캠프후기 #스타터스부트캠프 #데이터시각화 #데이터분석 #태블로

댓글