2022. 7. 5. 21:56ㆍData Science/with Python(Numpy, Pandas …ect.)
카페 별 비율을 비교해볼 것이다.
2020년 12월 기준으로 커피전문점
평판 순위에 대한 뉴스 기사를 보면
1위가 스타벅스
2위 투썸플레이스
3위 이디야
4위 메가커피
5위가 커피빈이다.
이 5개의 브랜드에 대해서
전체 커피전문점 내 주요 커피브랜드 입점 비율,
서울 커피전문점 내 주요 커피브랜드 입점 비율,
그리고 각 커피브랜드별 서울 입점 비율
을 각각 뽑아보고자 한다.
전체 커피전문점 내 주요 커피브랜드 입점 비율
'비율'이기 때문에 뽑아보고자 하는
브랜드의 전체 개수(길이:len)를
전체 커피전문점의 개수(길이:len)로
나눠주면 된다.
print("**** 전국 커피전문점중 주요 5대 커피브랜드 입점 비율 ****")
print("주요 5대 커피브랜드 전국 입점 비율 : %.3f%%" % ((len(df_starbucks)+len(df_2some)+len(df_ediya)+len(df_mega)+len(df_coffeebean)) / len(df_coffee)*100))
print("1. 스타벅스 : %.3f%%" % (len(df_starbucks) / len(df_coffee)*100))
print("2. 투썸플레이스 : %.3f%%" % (len(df_2some) / len(df_coffee)*100))
print("3. 이디야 : %.3f%%" % (len(df_ediya) / len(df_coffee)*100))
print("4. 메가커피 : %.3f%%" % (len(df_mega) / len(df_coffee)*100))
print("5. 커피빈 : %.3f%%" % (len(df_coffeebean) / len(df_coffee)*100))
참고로 %.3f%%는 python formatting
문법으로 앞의 % 하나는 변수자리,
.3 : 소수점이하 3자리, f : 소수형태로 표시
%%는 특수문자 %를 출력해주기 위한 방법이다.
말도 안 되는 것같고 잘못 나온 것
같지만 잘 나온거다. 집주변에 한 블럭
건너 스타벅스나 메가 커피가 있어
굉장히 많을 것 같지만 실제 데이터에
넣어보면 개인 카페가 더 많다는 걸
느낄 수 있다.
서울 커피전문점 내 주요 커피브랜드 입점 비율
print("스타벅스 : %.3f%%" % (len(df_seoul_starbucks) / len(df_seoul_coffee)*100))
print("이디야 : %.3f%%" % (len(df_seoul_ediya) / len(df_seoul_coffee)*100))
print("커피빈 : %.3f%%" % (len(df_seoul_coffeebean) / len(df_seoul_coffee)*100))
print("투썸플레이스 : %.3f%%" % (len(df_seoul_2some) / len(df_seoul_coffee)*100))
print("빽다방 : %.3f%%" % (len(df_seoul_bbaek) / len(df_seoul_coffee)*100))
print("할리스 : %.3f%%" % (len(df_seoul_hollys) / len(df_seoul_coffee)*100))
print("메가커피 : %.3f%%" % (len(df_seoul_mega) / len(df_seoul_coffee)*100))
위와 동일한 방식이다.
대신 단순한 전국단위의 df가 아닌
seoul로 추려놨떤 df_seoul을 사용해야
한다는 것만 유의하면 된다.
아까보다 오르긴 했지만 여전히 느낌에는
우리 동네에만 몇 개가 있는데 너무 수치가
작은 거 아닌가 싶겠지만 이 수치가 지극히
정상적인 것이고, 머릿 속에 떠오른 프랜차이즈
브랜드의 브랜드 파워가 대단하단 걸 느끼면 된다.
각 커피브랜드별 서울 입점 비율
print("**** 주요 5대 커피브랜드별 서울 입점 비율 ****")
print("1. 스타벅스 : %.3f%%" % (len(df_seoul_starbucks) / len(df_starbucks) * 100))
print("2. 투썸플레이스 : %.3f%%" % (len(df_seoul_2some) / len(df_2some) * 100))
print("3. 이디야 : %.3f%%" % (len(df_seoul_ediya) / len(df_ediya) * 100))
print("4. 메가커피 : %.3f%%" % (len(df_seoul_mega) / len(df_mega) * 100))
print("5. 커피빈 : %.3f%%" % (len(df_seoul_coffeebean) / len(df_coffeebean) * 100))
커피빈은 서울에 몰빵되어 있구나
# 각 구별로 스타벅스가 얼마나 있는지 확인.
starbucks_gu = df_seoul_starbucks.groupby('시군구명')['상호명'].count().to_frame().sort_values(by='상호명', ascending=False)
starbucks_gu = starbucks_gu.reset_index()
starbucks_gu = starbucks_gu.set_index('시군구명')
starbucks_gu
이런 걸로 강남에 스타벅스가
매우 몰려있구나 같은 것도 확인 가능하다.
# 시각화를 위한 라이브러리 호출.
import seaborn as sns
import matplotlib.pyplot as plt
import platform
from matplotlib import font_manager, rc
%matplotlib inline
이제 Seaborn을 이용해서 시각화를 해볼 것이다.
그전에 Mac OS 사용자의 경우 한글이 깨질 수
있기 때문에 아래와 같은 세팅이 필요하다.
# macos에서 사용가능한 한글 글꼴 확인 코드
[f.name for f in font_manager.fontManager.ttflist if 'Neo' in f.name]
## 운영체제별 글꼴 세팅
path = "c:/Windows/Fonts/malgun.ttf"
if platform.system() == 'Darwin':
font_name = 'Apple SD Gothic Neo'
rc('font', family='Apple SD Gothic Neo')
elif platform.system() == 'Windows':
font_name = font_manager.FontProperties(fname=path).get_name()
rc('font', family=font_name)
else:
font_name = font_manager.FontProperties(fname="/usr/share/fonts/nanumfont/NanumGothic.ttf")
rc('font', family="NanumGothic")
Windows10은 굳이 이 코드를 입력할
필요가 없다. 애초에 Neo란 글꼴 자체가
없을 것이기 때문에...ㅎ
근데 나는 windows10임에도 이 코드를 돌려야
그래프가 뜨더라는 미스테리...ㅠ
# 주요 5대 커피브랜드 서울 입점 비율을 시각화.
starbucks_rate = (len(df_seoul_starbucks) / len(df_starbucks) * 100)
twosome_rate = (len(df_seoul_2some) / len(df_2some) * 100)
ediya_rate = (len(df_seoul_ediya) / len(df_ediya) * 100)
mega_rate = (len(df_seoul_mega) / len(df_mega) * 100)
coffeebean_rate = (len(df_seoul_coffeebean) / len(df_coffeebean) * 100)
x = ["스타벅스", "투썸플레이스", "이디야", "메가커피", "커피빈"]
y = [starbucks_rate, twosome_rate, ediya_rate, mega_rate, coffeebean_rate]
plt.figure(figsize=(12, 12))
plt.title("주요 5대 커피브랜드 서울 입점 비율", fontdict={"fontsize" : 20})
sns.barplot(x=x, y=y)
plt.savefig("coffe_barplot.png")
plt.show()
starbucks_rate2 = (len(df_seoul_starbucks) / len(df_seoul_coffee)*100)
twosome_rate2 = (len(df_seoul_2some) / len(df_seoul_coffee)*100)
ediya_rate2 = (len(df_seoul_ediya) / len(df_seoul_coffee)*100)
mega_rate2 = (len(df_seoul_mega) / len(df_seoul_coffee)*100)
coffeebean_rate2 = (len(df_seoul_coffeebean) / len(df_seoul_coffee)*100)
x = ["스타벅스", "투썸플레이스", "이디야", "메가커피", "커피빈"]
y = [starbucks_rate2, twosome_rate2, ediya_rate2, mega_rate2, coffeebean_rate2]
plt.figure(figsize=(12, 12))
plt.title("주요 5대 커피브랜드 한국 입점 비율", fontdict={"fontsize" : 20})
sns.barplot(x=x, y=y)
plt.savefig("coffe_barplot.png")
plt.show()
Folium과 Leaflet.js을 이용하여
지도 시각화에도 도전해보고 싶은데
처음 접하는 라이브러리라 코드를
올리는 데에는 다소 시간이 조금
걸릴 것 같다. 주말에 도전해봐야지.
아무리 명령 프롬프트에 pip install을 해도
folium을 찾을 수 없다고 해서 대표적인
문제 해결 방법인 아래 2가지를 실행했으나
- 컴퓨터 껐다가 다시 켜보기
- uninstall 했다가 다시 install하기
여전이 같은 ModuleNotFoundError가
발생했다. 며칠만에 방법을 찾긴 했는데
바로 install을 명령 프롬프트가 아닌
ANACONDA에서 했어야 했다.
예전에는 ANACONDA 설치를 하지
않았었기 때문에 명령 프롬프트에
pip install하면 됐는데 ANACONDA를
설치하면 애가 충돌을 피하기 위해
다른 데서 intall하는 건 전부 쳐내기
때문에 정상적으로, 제대로 install되지
않는다. 그렇기 때문에 ANACONDA에서
conda install
# 혹은
pip install
을 해줘야 하고 가급적
conda install을 권장한다.
'Data Science > with Python(Numpy, Pandas …ect.)' 카테고리의 다른 글
Kaggle Survey EDA 02 : 교육수준과 관련된 EDA (0) | 2022.07.06 |
---|---|
Kaggle Survey EDA 01 : 전처리 (0) | 2022.07.06 |
공공 데이터 분석 프로젝트(커피 전문점) 02 (0) | 2022.07.05 |
공공 데이터 분석 프로젝트(커피 전문점) 01 (0) | 2022.07.05 |
Seaborn : scatterplot&pairplot&heatmap (데이터분석 인강) (0) | 2022.07.03 |