[파이썬으로 시작하는 데이터 사이언스] 2주차
얼마 전에 시작한거 같은 코칭 스터디가 벌써 2주차가 되었다.
pandas를 통해 데이터를 원하는 형태로 변환하는데 익숙해지고 있다.
인공지능 학습을 위해서 데이터의 전처리가 중요하다는 것이 크게 느껴지고 있는데
여러모로 도움이 될 거 같은 느낌이다.
import pandas as pd
df = pd.read_csv("https://raw.githubusercontent.com/corazzon/boostcourse-ds-510/master/data/medical_201909.csv.zip", low_memory=False)
df.shape
전국의 병원에 대한 정보가 담긴 데이터를 불러와 보자


다음과 같이 39개의 열로 이루어져있는 데이터이다.
첫번째로 서울시에 각 '시군구명' 별로 약국이 얼마나 있는지 알아볼 것이다
phar= df[df['상권업종소분류명'] == '약국']
phar.groupby('시도명').size().sort_values(ascending= False)
데이터프레임명[데이터프레임명['컬럼명'] == '원하는 값' ] ] 으로 특정 열에 내가 원하는 value를 가지고 있는
데이터프레임을 만들 수 있다.
먼저 상권업종소분류명 열에 약국의 값을 가지고 있는 데이터프레임을 만들어 준 뒤 phar 변수에 저장한다
그 후 groupby를 통해 '시도명'으로 묶어 준 후 size(O 메소드를 통해 갯수를 세어준다
내림차순으로 정렬할 것이므로 sort_values(ascending = False)로 해준다. sort_values의 기본값은 ascending = True이다

두번째로 위와 비슷하게 서울시의 동물병원을 시군구 별로 정렬해준다.
animal_hos =df[ df['상권업종소분류명'] == '동물병원']
animal_hos_district =animal_hos.groupby('시도명').size().sort_values(ascending= False)
animal_hos_district

이번에는 시각화도 진행해준다.
import matplotlib.pyplot as plt
import seaborn as sns
%config InlineBackend.figure_format = 'retina'
!sudo apt-get install -y fonts-nanum #코랩인 경우만 설치해주자
!sudo fc-cache -fv
!rm ~/.cache/matplotlib -rf
plt.rc('font', family='NanumBarunGothic')
plt.rc('axes', unicode_minus=False)
#코랩인 경우 위와 동일하게 해준다
#한글 폰트 설치와 설정을 위한 코드! 나눔바른고딕을 폰트로 설정해준다 아래껀 -기호가 깨지는 거 방지
#안해주면 글씨가 깨진다 + 이거 해주고 런타임
sns.countplot(data=animal_hos, y="시도명")
#코랩 안쓰면 위에처럼 폰트 설치 안해줘도 됨 (코랩은 리눅스 기반 + 기본 한글폰트가 없는듯)
#plt.rc('font', family='Malgun Gothic') #윈도우 환경인 경우
#plt.rc('font', family='Apple Gothic') #Mac OS

seaborn으로 그래프 그리면 예쁘게 나온다
이번에는 folium이라는 모듈을 사용해 볼 것
folium은 지도를 그려주는 모듈인데 위도와 경도 정보가 필요하다
-> 위의 데이터프레임의 열을 보면 위도와 경도가 존재!
import folium
old_hos = df[df['상권업종소분류명']=='노인/치매병원']
old_hos['위도'].mean()
old_hos['경도'].mean()
old_hos_map = folium.Map(location = [old_hos['위도'].mean(), old_hos['경도'].mean()],
zoom_start=10)
for num in old_hos.index:
name = old_hos.loc[num, '상호명']
address = old_hos.loc[num, '도로명주소']
popup = f'{name} - {address}'
location = [old_hos.loc[num, '위도'], old_hos.loc[num, '경도']]
folium.Marker(
location = location,
popup = popup, icon = folium.Icon(color = 'green', icon='fa-hospital-o', prefix='fa')
).add_to(old_hos_map)
old_hos_map

icon은 https://fontawesome.com/v4/icons/에서 원하는 다른 아이콘을 검색 후 변경가능하다

예를들어 address book 아이콘이 필요한 경우 'fa-hospital-o'를 'fa-address-book'으로 변경하면 된다.