[모두의데이터] 2주차 팀과제

H Kim·2024년 8월 8일
0

개인프로젝트

목록 보기
5/7
post-thumbnail

📌 Q1. 전국 시도별 약국수를 구해주세요!

상권업종소분류명이 약국인 것을 찾아 빈도수를 구해주세요. 이 때, value_counts, groupby, pivot_table 등 다양한 집계 방법을 통해 구해볼 수 있습니다. 각자 구하기 편한 방법을 통해 빈도수를 구합니다.
다음의 결과가 나오도록 구합니다.

# 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 // (91335, 39)

# ANSWER
df.loc[df['상권업종소분류명'] == '약국', '시도명'].value_counts()

📌 Q2. 여러분은 반려동물과 관련된 사업을 하는 스타트업에 취업을 하여 상권분석을 해달라는 요청을 받았습니다. 병원이나 약국은 인구나 유동인구가 많은 지역에 주로 위치하고 있습니다. 그렇다면 동물병원도 병원이나 약국이 많은 곳에 더 많이 있을까요?

빈도수를 구하고 시각화 하여 동물병원이 어느 지역에 많은지 분석해 주세요!
다음의 결과가 나오도록 구합니다.

# ANSWER
df.loc[df['상권업종소분류명'] == '동물병원', '시도명'].value_counts()

📌Q3. 강남지역에는 다른 지역에 비해 피부과나 성형외과가 많아 보입니다. 실제로 해당 지역에 피부과나 성형외과가 다른 지역에 비해 전체 병원 수 중에서 어느 정도의 비율을 차지하고 있는지 알아보겠습니다.

서울에 소재한 병원 중 상권업종소분류명에 "피부" 나 "성형"이 들어간 분류명을 찾아 구해주세요!
피부과 성형외과 수 / 전체병원 수 로 비율을 구해주세요!
비율이 높은 순서대로 정렬되게 구해주세요!
수업에서 사용한 같은 CSV 파일을 사용하며 다음의 결과가 나오도록 구합니다.
소숫점 두 번째짜리까지 출력하는 방법은 pandas round 로 검색해서 사용법을 알아보세요!

# 서울에 있는 전체 병원 정보
df_seoul = df[(df['시도명'] == '서울특별시') & (df['상권업종중분류명'] == '병원')].copy()
# 서울에 있는 전체 병원 정보를 시군구명으로 카운트
df_seoul_region_count = df_seoul['시군구명'].value_counts()
# 서울에 있는 전체 병원 정보 중 상권업종소분류명에 '성형/피부'가 들어간 병원들의 정보
df_seoul_skin = df_seoul[df_seoul['상권업종소분류명'].str.contains('성형|피부')]
# 서울에 있는'성형/피부'를 포함한 병원의 카운트
df_seoul_skin_count = df_seoul_skin['시군구명'].value_counts()

# 03번
ratio = df_seoul_skin_count / df_seoul_region_count
ratio.round(2).sort_values(ascending=False)

📌Q4. 평균 기대수명이 점점 길어지면서 실버 의료 산업도 주목받고 있습니다. 여러분은 실버 의료 산업과 관련된 스타트업에 취업했습니다. 지도를 시각화하여 '노인/치매병원'이 주로 어디에 위치하고 있는지를 찾아보고자 합니다.

folium 을 통해 지도에 전국의 '노인/치매병원'을 표시해 주세요!
다음과 같이 시각화 하며, folium 의 문서를 참고하여 다른 기능을 사용하여 좀 더 멋지게 지도를 꾸며도 좋습니다.
folium 문서 : https://python-visualization.github.io/folium/quickstart.html

import folium

silver = df[df['상권업종소분류명'].str.contains('치매')]

lat = silver['위도'].mean()
lon = silver['경도'].mean()
map = folium.Map(location = [lat, lon], zoom_start = 7)

for n in silver.index:
    name = silver.loc[n, '상호명']
    address = silver.loc[n, '도로명주소']
    # 팝업이 보기 힘들어서 커스텀 스타일링 함
    iframe = folium.IFrame('상호명: ' + str(name) + '<br>' + '도로명주소: ' + str(address))
    popup = folium.Popup(iframe, min_width = 300, max_width = 300, min_height = 50, max_height = 80)
    location = [silver.loc[n, '위도'], silver.loc[n, '경도']]
    folium.Marker(
        location = location,
        popup = popup
    ).add_to(map)
map

folium은 맥(Unix)에서는 따로 Anaconda prompt를 쓸 필요 없고 바로 터미널에 `conda install -c conda-forge folium' 을 써서 설치하면 된다.

0개의 댓글