본 프로젝트는 멋쟁이사자처럼 AI School 6기 8팀이 함께 진행했습니다.
<사용 코드>
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import plotly.express as px
import cufflinks as cf
import json
cf.go_offline(connected=True)
def get_font_family():
"""
시스템 환경에 따른 기본 폰트명을 반환하는 함수
"""
import platform
system_name = platform.system()
if system_name == "Darwin" :
font_family = "AppleGothic"
elif system_name == "Windows":
font_family = "Malgun Gothic"
else:
# Linux(colab)
!apt-get install fonts-nanum -qq > /dev/null
!fc-cache -fv
import matplotlib as mpl
mpl.font_manager._rebuild()
findfont = mpl.font_manager.fontManager.findfont
mpl.font_manager.findfont = findfont
mpl.backends.backend_agg.findfont = findfont
font_family = "NanumBarunGothic"
return font_family
# style 설정은 꼭 폰트설정 위에서 합니다.
# style 에 폰트 설정이 들어있으면 한글폰트가 초기화 되어 한글이 깨집니다.
plt.style.use("seaborn")
# 폰트설정
plt.rc("font", family=get_font_family())
# 마이너스폰트 설정
plt.rc("axes", unicode_minus=False)
# 그래프에 retina display 적용
%config InlineBackend.figure_format = 'retina'
df = pd.read_csv("data/서울시_우리마을가게_상권분석서비스(신_상권_추정매출)_2021년.csv", encoding="cp949")
df1 = pd.read_csv("data/서울시 우리마을가게 상권분석서비스(상권영역).csv", encoding="cp949", usecols=['상권_코드_명',"시군구_코드",'엑스좌표_값','와이좌표_값'])
df = df.merge(df1, on="상권_코드_명", how="left")
k = pd.read_csv("data/서울시 우리마을가게 상권분석서비스(상권영역).csv", encoding="cp949", usecols=["엑스좌표_값","와이좌표_값"])
k["엑스좌표_값"] = pd.to_numeric(k["엑스좌표_값"], errors="coerce")
k["와이좌표_값"] = pd.to_numeric(k["와이좌표_값"], errors="coerce")
k = k.dropna()
k.index=range(len(k))
k.tail()
from pyproj import Proj, transform
import folium
import pyproj
def project_array(coord, p1_type, p2_type):
"""
좌표계 변환 함수
- coord: x, y 좌표 정보가 담긴 NumPy Array
- p1_type: 입력 좌표계 정보 ex) epsg:5181
- p2_type: 출력 좌표계 정보 ex) epsg:4326
"""
p1 = pyproj.Proj(init=p1_type)
p2 = pyproj.Proj(init=p2_type)
fx, fy = pyproj.transform(p1, p2, coord[:, 0], coord[:, 1])
return np.dstack([fx, fy])[0]
coord = np.array(k)
coord
p1_type = "epsg:5181"
p2_type = "epsg:4326"
# project_array() 함수 실행
result = project_array(coord, p1_type, p2_type)
result
k["위도"] = result[:,1]
k["경도"] = result[:,0]
df = df.merge(k, on="엑스좌표_값", how="left")
df2 = pd.read_csv("data/서울시 우리마을가게 상권분석서비스(자치구별 상권변화지표).csv", encoding="cp949", usecols=["시군구_코드","시군구_코드_명"])
df = df.merge(df2, on="시군구_코드", how="left")
df.shape
(147665, 85)
subset2 = df[['상권_구분_코드_명','시군구_코드_명','분기당_매출_금액']]
subset2
golmok = subset2.groupby(['시군구_코드_명','상권_구분_코드_명'])['분기당_매출_금액'].sum()
golmok.iplot(kind='bar')
subset = df[['기준_분기_코드','분기당_매출_금액','시군구_코드_명']]
subgb = subset.groupby(['시군구_코드_명','기준_분기_코드'])['분기당_매출_금액'].sum().sort_index()
df2 = pd.read_excel('data/상권분석_인구수_2021.xlsx')
df2.info()
df2['지역'] = df2['지역'].astype(str).str.strip()
subset = df2.groupby(["지역"])['길단위 유동인구'].sum().sort_values()
subset.iplot(kind="bar",color='blue',title='유동인구')
subgb2 = df.groupby(['시군구_코드_명'])['분기당_매출_금액'].sum().sort_values()
subgb2.iplot(kind="bar")
subgb.iplot(kind="bar",title='분기당 매출 금액')
subset.iplot(kind="bar",color='blue',title='유동인구')
df=pd.read_csv("data/인구_점포_개폐업_통합_2021.csv")
데이터 형태 파악
df.shape
(104, 12)
쉼표를 없애주고 데이터 타입을 올바르게 변환
object_list=['전체 점포수','프랜차이즈 점포수','일반 점포수','길단위 유동인구', '개업수', '폐업수']
for i in object_list:
df[i]=df[i].str.replace(',', '').astype('int64')
df['지역'] = df['지역'].str.strip()
df_a = df[df['지역'] != '서울시 전체']
plt.figure(figsize=(12, 10))
sns.barplot(data=df_a.sort_values('전체 점포수'),x='전체 점포수',y='지역', ci=None)
_ = plt.title('서울시 구별 21년도 전체 점포수')
plt.figure(figsize=(12, 10))
sns.barplot(data=df_a.sort_values('개업수'),x='개업수',y='지역', ci=None)
_ = plt.title('서울시 구별 21년도 개업수')
plt.figure(figsize=(12, 10))
sns.barplot(data=df_a.sort_values('폐업수'),x='폐업수',y='지역', ci=None)
_ = plt.title('서울시 구별 21년도 폐업수')
plt.figure(figsize=(12, 10))
sns.barplot(data=df_a.sort_values('주거 인구'),x='주거 인구',y='지역', ci=None)
_ = plt.title('서울시 구별 21년도 주거인구')
plt.figure(figsize=(12, 10))
sns.barplot(data=df_a.sort_values('직장 인구'),x='직장 인구',y='지역', ci=None)
_ = plt.title('서울시 구별 21년도 직장인구')
출처:출처
# 지역별로 그룹화하여 프랜차이즈와 일반 점포수의 평균으로 만든 데이터 프레임
df_a_nf = df_a.groupby('지역')['프랜차이즈 점포수', '일반 점포수'].mean()
# 틀만들기
fig, axs = plt.subplots(ncols=2, sharey=True,
figsize=(10, 8), gridspec_kw={"wspace":0})
c_f = "green"
c_n = "darkorange"
#바 그래프 생성하기
axs[0].barh(df_a_nf.index, df_a_nf["프랜차이즈 점포수"], color=c_f)
axs[1].barh(df_a_nf.index, df_a_nf["일반 점포수"], color=c_n)
#단위 맞쳐주기
xmax = 5500
x2max=65000
axs[0].set_xlim(xmax, 0)
axs[1].set_xlim(0, x2max)
#제목 설정하기
for ax,title in zip(axs,['프랜차이즈 점포수','일반 점포수']):
ax.set_title(title, color="gray", fontweight="bold", pad=16)
#꾸미기
for ax in axs:
for i, p in enumerate(ax.patches):
w = p.get_width()
if ax == axs[0]:
ha = "right"
c = c_f
else:
ha = "left"
c = c_n
ax.text(w, i, f" {format(w, ',')} ",
c=c, fontsize=13, va="center", ha=ha,
fontweight="bold", alpha=0.5)
fig.suptitle("구별 프랜차이즈, 일반 점포수 비교", fontweight="bold")
fig.tight_layout()
f, axes = plt.subplots(2, 2)
f.set_size_inches((12, 12))
plt.subplots_adjust(wspace = 0.15, hspace = 0.15)
#figure 전체 제목
f.suptitle('종로구', fontsize=15)
#분기별 전체 점포수 변화 선 그래프
df_x=df[df['지역']=='종로구']
axes[0, 0].plot(df_x['분기'],df_x['전체 점포수'], color='blue', marker='o')
axes[0, 0].set_xlabel('분기', fontsize = 11)
axes[0, 0].set_ylabel('전체 점포수', fontsize = 11)
axes[0, 0].set_title('분기별 전체점포수', fontsize = 12)
#분기별 개폐업률 막대 그래프 비교
l1=axes[0,1].bar(df_x['분기'],df_x['개업률'],width=0.5,alpha=0.5, color='red')
l2=axes[0,1].bar(df_x['분기'],df_x['폐업률'],width=0.5,alpha=0.5, color='blue')
axes[0,1].legend([l1,l2],['개업률','폐업률'])
axes[0, 1].set_xlabel('분기', fontsize = 11)
axes[0, 1].set_ylabel('비율 %단위', fontsize = 11)
axes[0, 1].set_title('분기별 개/폐업률\n 빨강:개업률 / 파랑:폐업률', fontsize = 12)
#길단위 인구수
axes[1, 0].plot(df_x['분기'],df_x['길단위 유동인구'], color='red', marker='o')
axes[1, 0].set_xlabel('분기', fontsize = 11)
axes[1, 0].set_ylabel('길단위 유동인구', fontsize = 11)
axes[1, 0].set_title('분기별 길단위 유동인구', fontsize = 12)
#주거, 직장 인구
bar_width = 0.5
index = np.arange(1)
label=['']
l3=axes[1,1].bar(index,df_x['주거 인구'],width=0.5,alpha=0.3, color='green')
l4=axes[1,1].bar(index+bar_width,df_x['직장 인구'],width=0.5,alpha=0.3, color='blue')
axes[1,1].legend([l3,l4],['주거인구','직장인구'])
axes[1, 1].set_xlabel('인구 종류', fontsize = 11)
axes[1, 1].set_ylabel('', fontsize = 11)
axes[1, 1].set_title('주거/직장 인구수', fontsize = 12)
plt.tight_layout()
plt.show()
def total_graph(gu):
f, axes = plt.subplots(2, 2)
f.set_size_inches((12, 12))
plt.subplots_adjust(wspace = 0.15, hspace = 0.15)
#figure 전체 제목
f.suptitle( gu , fontsize=15)
#분기별 전체 점포수 변화 선 그래프
df_x=df[df['지역']==gu]
axes[0, 0].plot(df_x['분기'],df_x['전체 점포수'], color='blue', marker='o')
axes[0, 0].set_xlabel('분기', fontsize = 11)
axes[0, 0].set_ylabel('전체 점포수', fontsize = 11)
axes[0, 0].set_title('분기별 전체점포수', fontsize = 12)
#분기별 개폐업률 막대 그래프 비교
l1=axes[0,1].bar(df_x['분기'],df_x['개업률'],width=0.5,alpha=0.5, color='red')
l2=axes[0,1].bar(df_x['분기'],df_x['폐업률'],width=0.5,alpha=0.5, color='blue')
axes[0,1].legend([l1,l2],['개업률','폐업률'])
axes[0, 1].set_xlabel('분기', fontsize = 11)
axes[0, 1].set_ylabel('비율 %단위', fontsize = 11)
axes[0, 1].set_title('분기별 개/폐업률\n 빨강:개업률 / 파랑:폐업률', fontsize = 12)
#길단위 인구수
axes[1, 0].plot(df_x['분기'],df_x['길단위 유동인구'], color='red', marker='o')
axes[1, 0].set_xlabel('분기', fontsize = 11)
axes[1, 0].set_ylabel('길단위 유동인구', fontsize = 11)
axes[1, 0].set_title('분기별 길단위 유동인구', fontsize = 12)
#주거, 직장 인구
bar_width = 0.5
index = np.arange(1)
label=['']
l3=axes[1,1].bar(index,df_x['주거 인구'],width=0.5,alpha=0.3, color='green')
l4=axes[1,1].bar(index+bar_width,df_x['직장 인구'],width=0.5,alpha=0.3, color='blue')
axes[1,1].legend([l3,l4],['주거인구','직장인구'])
axes[1, 1].set_xlabel('인구 종류', fontsize = 11)
axes[1, 1].set_ylabel('', fontsize = 11)
axes[1, 1].set_title('주거/직장 인구수', fontsize = 12)
plt.tight_layout()
return plt.show()
gu=input("원하시는 구를 입력해주세요: ")
total_graph(gu)
원하시는 구를 입력해주세요: 강남구
df = pd.read_csv("data/서울시_우리마을가게_상권분석서비스(신_상권_추정매출)_2021년.csv", encoding="cp949")
df1 = pd.read_csv("data/서울시 우리마을가게 상권분석서비스(상권영역).csv", encoding="cp949", usecols=['상권_코드_명',"시군구_코드",'엑스좌표_값','와이좌표_값'])
df = df.merge(df1, on="상권_코드_명", how="left")
k = pd.read_csv("data/서울시 우리마을가게 상권분석서비스(상권영역).csv", encoding="cp949", usecols=["엑스좌표_값","와이좌표_값"])
k["엑스좌표_값"] = pd.to_numeric(k["엑스좌표_값"], errors="coerce")
k["와이좌표_값"] = pd.to_numeric(k["와이좌표_값"], errors="coerce")
k = k.dropna()
k.index=range(len(k))
k.tail()
from pyproj import Proj, transform
import folium
import pyproj
def project_array(coord, p1_type, p2_type):
"""
좌표계 변환 함수
- coord: x, y 좌표 정보가 담긴 NumPy Array
- p1_type: 입력 좌표계 정보 ex) epsg:5181
- p2_type: 출력 좌표계 정보 ex) epsg:4326
"""
p1 = pyproj.Proj(init=p1_type)
p2 = pyproj.Proj(init=p2_type)
fx, fy = pyproj.transform(p1, p2, coord[:, 0], coord[:, 1])
return np.dstack([fx, fy])[0]
coord = np.array(k)
coord
p1_type = "epsg:5181"
p2_type = "epsg:4326"
# project_array() 함수 실행
result = project_array(coord, p1_type, p2_type)
result
k["위도"] = result[:,1]
k["경도"] = result[:,0]
df = df.merge(k, on="엑스좌표_값", how="left")
df2 = pd.read_csv("data/서울시 우리마을가게 상권분석서비스(자치구별 상권변화지표).csv", encoding="cp949", usecols=["시군구_코드","시군구_코드_명"])
df2 = df2.drop_duplicates()
df = df.merge(df2, on="시군구_코드", how="left") #시구군 코드와 시구군명 컬럼을 합침
#지역, 요일별 매출액 추이
df_gu_day = df[["시군구_코드_명","월요일_매출_금액","화요일_매출_금액","수요일_매출_금액","목요일_매출_금액","금요일_매출_금액","토요일_매출_금액","일요일_매출_금액"]]
df_gu = df_gu_day.melt(id_vars ="시군구_코드_명", var_name="요일", value_name="매출액")
df_gu
plt.figure(figsize=(16, 12))
sns.lineplot(data=df_gu, x="요일", y="매출액", hue='시군구_코드_명', markers=True, ci=None, style="시군구_코드_명")
plt.title('서울시 지역구, 요일별 매출액 추이')
plt.legend(bbox_to_anchor=(1,1))
#지역,요일별 매출비율 추이
df_gu_ratio = df[["시군구_코드_명","월요일_매출_비율","화요일_매출_비율","수요일_매출_비율","목요일_매출_비율","금요일_매출_비율","토요일_매출_비율","일요일_매출_비율"]]
df_gu_ratio = df_gu_ratio.melt(id_vars ="시군구_코드_명", var_name="요일", value_name="매출비율")
df_gu_ratio
plt.figure(figsize=(16, 12))
sns.lineplot(data=df_gu_ratio, x="요일", y="매출비율", hue='시군구_코드_명', markers=True, ci=None, style="시군구_코드_명")
plt.title('서울시 지역구, 요일별 매출비율 추이')
plt.legend(bbox_to_anchor=(1,1))
#지역, 요일별 매출 건수 추이
df_gu_count = df[["시군구_코드_명","월요일_매출_건수","화요일_매출_건수","수요일_매출_건수","목요일_매출_건수","금요일_매출_건수","토요일_매출_건수","일요일_매출_건수"]]
df_gu_count = df_gu_count.melt(id_vars ="시군구_코드_명", var_name="요일", value_name="매출건수")
df_gu_count
plt.figure(figsize=(16, 12))
sns.lineplot(data=df_gu_count, x="요일", y="매출건수", hue='시군구_코드_명', markers=True, ci=None, style="시군구_코드_명")
plt.title('서울시 지역구, 요일별 매출건수 추이')
plt.legend(bbox_to_anchor=(1,1))
m = pd.pivot_table(df_gu_count, index = "요일", columns="시군구_코드_명", values = "매출건수").round()
plt.figure(figsize=(28,8))
sns.heatmap(m, linewidths = 0.4, # 선의 굵기
linecolor = 'white', # 선의 색깔
annot = True, # 실제 값 화면에 나타내기
cmap = 'RdYlBu_r', # Red, Yellow, Blue 색상으로 표시
# 소수점 포맷팅 형태
)
plt.xticks(fontsize=8,rotation= 0)
plt.title('요일별, 지역별 매출건수 히트맵', fontsize=20)
geo_path = 'data/seoul_municipalities_geo_simple.json'
print(geo_path)
geo_json = json.load(open(geo_path, encoding="utf-8"))
df_pop = pd.read_csv("data/인구_점포_개폐업_통합_2021.csv",encoding = 'UTF-8') #인구수 파일이어서 변수명을 popular의 Pop으로
df_pop
df_popular= df_pop.groupby("지역")["직장 인구"].sum().reset_index()
df_popular['지역']=df_popular['지역'].str.strip() #인구수 csv 파일에서 지역명앞에 한칸 띄어져있어서 strip해줌
m = folium.Map(location=[df["위도"].mean(), df["경도"].mean()], zoom_start=12)
folium.Choropleth(
geo_data=geo_json,
name="choropleth",
data=df_popular,
columns=["지역","직장 인구"],
key_on="feature.properties.name",
fill_color = "YlGn",
fill_opacity=0.8,
line_opacity = 0.2,
legend_name="직장인구 수",
).add_to(m)
m
df = pd.read_csv("data/인구_점포_개폐업_통합_2021.csv")
# 서울 구별 면적 데이터
df2 = pd.read_csv("data/행정구역_구별__20220610170356.csv", encoding='cp949')
df2=df2[["자치구","2019"]]
df2.columns=["지역","면적"]
# 지역에 있는 \xa0 제거
df['지역'] = df['지역'].apply(lambda x: str(x).replace(u'\xa0', u''))
# 쉼표 삭제하고 int로 형변환
def remove_comma(x):
return x.replace(',', '')
columns = ["전체 점포수", "프랜차이즈 점포수","일반 점포수","길단위 유동인구", "개업수", "폐업수"]
for column in columns:
df[column]=df[column].apply(remove_comma).astype(int)
# 분기 숫자로 바꾸기
def make_qt(x):
return x.replace("분기","")
# df["분기"] = df["분기"].apply(make_qt).astype(int)
# 분기 바꿀 필요가 없어보여서 삭제
# 면적 데이터 추가
df = pd.merge(df,df2,on="지역",how="left")
# 점포수를 인구수처럼 면적당으로 바꿔줌
df["전체 점포수"] = df["전체 점포수"] / df["면적"]
df["총인구"]=df["길단위 유동인구"]+df["주거 인구"]+df["직장 인구"]
# 서울 전체 평균 확인해보기
df_seoul = df[df["지역"] == "서울시 전체"][["분기","전체 점포수","총인구"]]
df_seoul
def df_corr(data, col):
corr = data[["전체 점포수", "총인구"]].corr()
corr_df = corr[[col]].drop([col], axis=0)
return corr_df
# 유동인구 비율 데이터 추가
df["유동인구 비율"] = df["길단위 유동인구"] / df["총인구"] *100
df["직장인구 비율"] = df["직장 인구"] / df["총인구"] *100
df["주거인구 비율"] = df["주거 인구"] / df["총인구"] *100
# 구별 평균값 plot
df_per=df["유동인구 비율"].groupby(df["지역"]).mean().sort_values()
colors= ['orange' if x == "서울시 전체" else 'blue' for x in df_per.index]
df_per.plot.barh(title="구별 유동인구 비율",figsize=(12,10), color = colors)
plt.xlabel('%')
plt.xlim(98,100)
# 지역별 인구별 비율
df[["지역","유동인구 비율", "직장인구 비율","주거인구 비율"]].groupby(df["지역"]).mean().plot.bar(figsize = (12,10),
stacked=True,
rot=30)
plt.ylim(98,100)
s=df[(df["지역"] == "강남구") | (df["지역"] =="서울시 전체") | (df["지역"] == "종로구")][["분기","지역","길단위 유동인구"]]
# s.groupby(s["지역"]).plot(x="분기", y="길단위 유동인구", figsize=(12,4))
X=s["분기"].unique()
Y1=s[s["지역"]=="서울시 전체"]["길단위 유동인구"]
Y2=s[s["지역"]=="강남구"]["길단위 유동인구"]
Y3=s[s["지역"]=="종로구"]["길단위 유동인구"]
plt.figure(figsize=(14,8))
plt.plot(X, Y1, label='서울시 평균')
plt.plot(X, Y2, label='강남구')
plt.plot(X, Y3, label='종로구')
plt.legend()
plt.show()
df = pd.read_csv("data/서울시_우리마을가게_상권분석서비스(신_상권_추정매출)_2021년.csv", encoding="cp949")
df1 = pd.read_csv("data/서울시 우리마을가게 상권분석서비스(상권영역).csv", encoding="cp949", usecols=['상권_코드_명',"행정동_코드","시군구_코드",'엑스좌표_값','와이좌표_값'])
df = df.merge(df1, on="상권_코드_명", how="left")
k = pd.read_csv("data/서울시 우리마을가게 상권분석서비스(상권영역).csv", encoding="cp949", usecols=["엑스좌표_값","와이좌표_값"])
k["엑스좌표_값"] = pd.to_numeric(k["엑스좌표_값"], errors="coerce")
k["와이좌표_값"] = pd.to_numeric(k["와이좌표_값"], errors="coerce")
k = k.dropna()
k.index=range(len(k))
k.tail()
from pyproj import Proj, transform
import folium
import pyproj
def project_array(coord, p1_type, p2_type):
"""
좌표계 변환 함수
- coord: x, y 좌표 정보가 담긴 NumPy Array
- p1_type: 입력 좌표계 정보 ex) epsg:5181
- p2_type: 출력 좌표계 정보 ex) epsg:4326
"""
p1 = pyproj.Proj(init=p1_type)
p2 = pyproj.Proj(init=p2_type)
fx, fy = pyproj.transform(p1, p2, coord[:, 0], coord[:, 1])
return np.dstack([fx, fy])[0]
coord = np.array(k)
coord
p1_type = "epsg:5181"
p2_type = "epsg:4326"
# project_array() 함수 실행
result = project_array(coord, p1_type, p2_type)
result
k["위도"] = result[:,1]
k["경도"] = result[:,0]
df = df.merge(k, on="엑스좌표_값", how="left")
for col in df.columns :
dtype_name = df[col].dtypes.name
if dtype_name.startswith("int"):
df[col] = pd.to_numeric(df[col], downcast = "unsigned")
elif dtype_name.startswith("float"):
df[col] = pd.to_numeric(df[col], downcast = "float")
elif dtype_name == "bool":
df[col] = df[col].astype("int8")
df = df.dropna()
# 골목상권에 업종들이 많이 있는 것을 확인.
df["상권_구분_코드_명"].value_counts().plot(kind="bar", rot=0)
df.groupby("기준_분기_코드")[["월요일_매출_금액","화요일_매출_금액","수요일_매출_금액","목요일_매출_금액","금요일_매출_금액","토요일_매출_금액","일요일_매출_금액"]].mean().plot(kind="bar", rot=0)
df.groupby("기준_분기_코드")[['시간대_00~06_매출_금액','시간대_06~11_매출_금액','시간대_11~14_매출_금액','시간대_14~17_매출_금액','시간대_17~21_매출_금액','시간대_21~24_매출_금액']].mean().plot(kind="bar", rot=0)
df.groupby("기준_분기_코드")[['남성_매출_금액','여성_매출_금액']].mean().plot(kind="bar", rot=0)
df.groupby("기준_분기_코드")[['연령대_10_매출_금액','연령대_20_매출_금액','연령대_30_매출_금액','연령대_40_매출_금액','연령대_50_매출_금액','연령대_60_이상_매출_금액']].mean().plot(kind="bar", rot=0)
week_ratio = df[["자치구","월요일_매출_비율", "화요일_매출_비율" , "수요일_매출_비율", "목요일_매출_비율", "금요일_매출_비율","토요일_매출_비율" ,"일요일_매출_비율"]]
a = pd.pivot_table(data=week_ratio,index="자치구", aggfunc=np.sum)
px.line(a)
week_sale=df[["자치구","월요일_매출_금액","화요일_매출_금액","수요일_매출_금액","목요일_매출_금액","금요일_매출_금액","토요일_매출_금액","일요일_매출_금액"]]
e = pd.pivot_table(data=week_sale, index="자치구", aggfunc=np.sum)
px.line(e)
week_sale_count = df[["자치구",'월요일_매출_건수','화요일_매출_건수','수요일_매출_건수','목요일_매출_건수','금요일_매출_건수','토요일_매출_건수','일요일_매출_건수']]
i = pd.pivot_table(data=week_sale_count, index="자치구", aggfunc=np.sum)
px.line(i)
time_ratio = df[["자치구","시간대_00~06_매출_비율","시간대_06~11_매출_비율","시간대_11~14_매출_비율","시간대_14~17_매출_비율","시간대_17~21_매출_비율","시간대_21~24_매출_비율"]]
b = pd.pivot_table(data=time_ratio, index="자치구", aggfunc=np.sum)
px.line(b)
time_sale = df[["자치구",'시간대_00~06_매출_금액','시간대_06~11_매출_금액','시간대_11~14_매출_금액','시간대_14~17_매출_금액','시간대_17~21_매출_금액','시간대_21~24_매출_금액']]
f = pd.pivot_table(data=time_sale,index="자치구", aggfunc=np.sum)
px.line(f)
time_sale_count = df[["자치구",'시간대_건수~06_매출_건수','시간대_건수~11_매출_건수','시간대_건수~14_매출_건수','시간대_건수~17_매출_건수','시간대_건수~21_매출_건수','시간대_건수~24_매출_건수']]
j = pd.pivot_table(data=time_sale_count, index="자치구", aggfunc=np.sum)
px.line(j)
gender_ratio = df[["자치구","남성_매출_비율","여성_매출_비율"]]
c = pd.pivot_table(data=gender_ratio, index="자치구", aggfunc=np.sum)
px.line(c)
gender_sale = df[["자치구",'남성_매출_금액','여성_매출_금액']]
g = pd.pivot_table(data=gender_sale, index="자치구", aggfunc=np.sum)
px.line(g)
gender_sale_count = df[["자치구",'남성_매출_건수','여성_매출_건수']]
k = pd.pivot_table(data=gender_sale_count, index="자치구", aggfunc=np.sum)
px.line(k)