티스토리 뷰
[서울시 먹거리 분석 – 3] 전체 판매업종 이용 통화량 분석¶
sk datahub에서 배달 업종 데이터를 한번에 모아 분석해 보았다.
해당 자료는 경제/사회>경제에 있으며 링크는 https://www.bigdatahub.co.kr/product/list.do?menu_id=1000153 이다.
처음에는 데이터가 480만개 정도 됐는데, 데이터들을 처리하는 과정에서 groupby를 해버렸더니 18만개 정도로 줄어버렸다.
우선 이 정도 해놓고 시간이 날 때 다른 데이터들과 결합해서 분석해보겠다.
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib as mpl
import seaborn as sns
from scipy import stats
from sklearn.model_selection import train_test_split
# 노트북 안에 그래프를 그리기 위해
%matplotlib inline
# 그래프에서 격자로 숫자 범위가 눈에 잘 띄도록 ggplot 스타일을 사용
plt.style.use('ggplot')
# 그래프에서 마이너스 폰트 깨지는 문제에 대한 대처
mpl.rcParams['axes.unicode_minus'] = False
/Users/whanh/delivery 디렉토리 안에 있는 모든 파일을 읽어오자.
파일들의 이름과 컬럼명을 미리 통일되도록 맞춰놓았다.
import os
directory = os.listdir('/Users/whanh/delivery')
print(directory)
데이터들을 쭉 열어보았더니 2013 8월 데이터의 일자 표시가 xxxx년xx월xx일로 되어있기 때문에 이를 xxxx-xx-xx 꼴로 고치도록 하자.
그리고 시간대가 xx시간대 이런형식으로 써 있는데 xx 처럼 숫자만 남겨주고 int형식으로 바꿔주자.(다른 데이터들이 그렇게 되어있다.)
df=pd.read_csv('C:/Users/whanh/delivery/CALL_NDELIVERY_2013_08MONTH.csv')
df.head()
xx시간대를 '시'를 기준으로 split하고 앞에 있는 xx를 선택한다.
df['시간대'] = df['시간대'].apply(lambda e: e.split('시')[0])
df.head()
format='%Y년%m월%d일 은 20130801을 년월일로 인식하겠다는 의미이다.
넣어주지 않으면 20130801이 년월일이 아닌 microsec단위가 되어 버린다.
df['일자'] = pd.to_datetime(df['일자'],format='%Y년%m월%d일')
df.head()
시간대가 아직 문자열이므로 int형식으로 바꾼다.
df['시간대'] = df['시간대'].astype(int)
df.head()
일자는 요일형식으로 시간대는 int로 잘 바꼈는지 확인
df.dtypes
년도별로 리스트에 집어 넣자.
2016을 2개로 쪼갠 이유는 데이터가 2016년 6월부터 컬럼 개수가 바뀌었다.
컬럼 개수만 줄이면 된다고 생각할 수 있지만 차원을 줄일 경우 그 차원에 대해서 groupby를 해줘야 하기때문에 간편한 처리를 위해 나눴다.
2013년 8월 데이터를 넣지 않은 이유는 2013년 9월부터 2019년 2월까지 '일자'의 형식을 바꿔야 하므로 8월 데이터는 나중에 넣어주자.
list_2013=['C:/Users/whanh/delivery/CALL_NDELIVERY_2013_09MONTH.csv', 'C:/Users/whanh/delivery/CALL_NDELIVERY_2013_10MONTH.csv', 'C:/Users/whanh/delivery/CALL_NDELIVERY_2013_11MONTH.csv', 'C:/Users/whanh/delivery/CALL_NDELIVERY_2013_12MONTH.csv']
list_2014=['C:/Users/whanh/delivery/CALL_NDELIVERY_2014_01MONTH.csv', 'C:/Users/whanh/delivery/CALL_NDELIVERY_2014_02MONTH.csv', 'C:/Users/whanh/delivery/CALL_NDELIVERY_2014_03MONTH.csv', 'C:/Users/whanh/delivery/CALL_NDELIVERY_2014_04MONTH.csv', 'C:/Users/whanh/delivery/CALL_NDELIVERY_2014_05MONTH.csv', 'C:/Users/whanh/delivery/CALL_NDELIVERY_2014_06MONTH.csv', 'C:/Users/whanh/delivery/CALL_NDELIVERY_2014_07MONTH.csv', 'C:/Users/whanh/delivery/CALL_NDELIVERY_2014_08MONTH.csv', 'C:/Users/whanh/delivery/CALL_NDELIVERY_2014_09MONTH.csv', 'C:/Users/whanh/delivery/CALL_NDELIVERY_2014_10MONTH.csv', 'C:/Users/whanh/delivery/CALL_NDELIVERY_2014_11MONTH.csv', 'C:/Users/whanh/delivery/CALL_NDELIVERY_2014_12MONTH.csv']
list_2015=['C:/Users/whanh/delivery/CALL_NDELIVERY_2015_01MONTH.csv', 'C:/Users/whanh/delivery/CALL_NDELIVERY_2015_02MONTH.csv', 'C:/Users/whanh/delivery/CALL_NDELIVERY_2015_03MONTH.csv', 'C:/Users/whanh/delivery/CALL_NDELIVERY_2015_04MONTH.csv', 'C:/Users/whanh/delivery/CALL_NDELIVERY_2015_05MONTH.csv', 'C:/Users/whanh/delivery/CALL_NDELIVERY_2015_06MONTH.csv', 'C:/Users/whanh/delivery/CALL_NDELIVERY_2015_07MONTH.csv', 'C:/Users/whanh/delivery/CALL_NDELIVERY_2015_08MONTH.csv', 'C:/Users/whanh/delivery/CALL_NDELIVERY_2015_09MONTH.csv', 'C:/Users/whanh/delivery/CALL_NDELIVERY_2015_10MONTH.csv', 'C:/Users/whanh/delivery/CALL_NDELIVERY_2015_11MONTH.csv', 'C:/Users/whanh/delivery/CALL_NDELIVERY_2015_12MONTH.csv']
list_2016_1=['C:/Users/whanh/delivery/CALL_NDELIVERY_2016_01MONTH.csv', 'C:/Users/whanh/delivery/CALL_NDELIVERY_2016_02MONTH.csv', 'C:/Users/whanh/delivery/CALL_NDELIVERY_2016_03MONTH.csv', 'C:/Users/whanh/delivery/CALL_NDELIVERY_2016_04MONTH.csv', 'C:/Users/whanh/delivery/CALL_NDELIVERY_2016_05MONTH.csv' ]
list_2016_2=['C:/Users/whanh/delivery/CALL_NDELIVERY_2016_06MONTH.csv', 'C:/Users/whanh/delivery/CALL_NDELIVERY_2016_07MONTH.csv', 'C:/Users/whanh/delivery/CALL_NDELIVERY_2016_08MONTH.csv', 'C:/Users/whanh/delivery/CALL_NDELIVERY_2016_09MONTH.csv', 'C:/Users/whanh/delivery/CALL_NDELIVERY_2016_10MONTH.csv', 'C:/Users/whanh/delivery/CALL_NDELIVERY_2016_11MONTH.csv', 'C:/Users/whanh/delivery/CALL_NDELIVERY_2016_12MONTH.csv']
list_2017=['C:/Users/whanh/delivery/CALL_NDELIVERY_2017_01MONTH.csv', 'C:/Users/whanh/delivery/CALL_NDELIVERY_2017_02MONTH.csv', 'C:/Users/whanh/delivery/CALL_NDELIVERY_2017_03MONTH.csv', 'C:/Users/whanh/delivery/CALL_NDELIVERY_2017_04MONTH.csv', 'C:/Users/whanh/delivery/CALL_NDELIVERY_2017_05MONTH.csv', 'C:/Users/whanh/delivery/CALL_NDELIVERY_2017_06MONTH.csv', 'C:/Users/whanh/delivery/CALL_NDELIVERY_2017_07MONTH.csv', 'C:/Users/whanh/delivery/CALL_NDELIVERY_2017_08MONTH.csv', 'C:/Users/whanh/delivery/CALL_NDELIVERY_2017_09MONTH.csv', 'C:/Users/whanh/delivery/CALL_NDELIVERY_2017_10MONTH.csv', 'C:/Users/whanh/delivery/CALL_NDELIVERY_2017_11MONTH.csv', 'C:/Users/whanh/delivery/CALL_NDELIVERY_2017_12MONTH.csv']
list_2018=['C:/Users/whanh/delivery/CALL_NDELIVERY_2018_01MONTH.csv', 'C:/Users/whanh/delivery/CALL_NDELIVERY_2018_02MONTH.csv', 'C:/Users/whanh/delivery/CALL_NDELIVERY_2018_03MONTH.csv', 'C:/Users/whanh/delivery/CALL_NDELIVERY_2018_04MONTH.csv', 'C:/Users/whanh/delivery/CALL_NDELIVERY_2018_05MONTH.csv', 'C:/Users/whanh/delivery/CALL_NDELIVERY_2018_06MONTH.csv', 'C:/Users/whanh/delivery/CALL_NDELIVERY_2018_07MONTH.csv', 'C:/Users/whanh/delivery/CALL_NDELIVERY_2018_08MONTH.csv', 'C:/Users/whanh/delivery/CALL_NDELIVERY_2018_09MONTH.csv', 'C:/Users/whanh/delivery/CALL_NDELIVERY_2018_10MONTH.csv', 'C:/Users/whanh/delivery/CALL_NDELIVERY_2018_11MONTH.csv', 'C:/Users/whanh/delivery/CALL_NDELIVERY_2018_12MONTH.csv']
list_2019=['C:/Users/whanh/delivery/CALL_NDELIVERY_2019_01MONTH.csv', 'C:/Users/whanh/delivery/CALL_NDELIVERY_2019_02MONTH.csv']
2013년 데이터부터 2019년 데이터까지 불러서 각 년도의 새로운 리스트에 집어 넣자.
data2013=[]
for a in list_2013:
data_2013=pd.read_csv(a)
data2013.append(data_2013)
data2014=[]
for a in list_2014:
data_2014=pd.read_csv(a)
data2014.append(data_2014)
data2015=[]
for a in list_2015:
data_2015=pd.read_csv(a)
data2015.append(data_2015)
data2016_1=[]
for a in list_2016_1:
data_2016_1=pd.read_csv(a)
data2016_1.append(data_2016_1)
data2016_2=[]
for a in list_2016_2:
data_2016_2=pd.read_csv(a)
data2016_2.append(data_2016_2)
data2017=[]
for a in list_2017:
data_2017=pd.read_csv(a)
data2017.append(data_2017)
data2018=[]
for a in list_2018:
data_2018=pd.read_csv(a)
data2018.append(data_2018)
data2019=[]
for a in list_2019:
data_2019=pd.read_csv(a)
data2019.append(data_2019)
2013 9월 ~ 2016 5월까지 concat 시키고 2016 6월~ 2019 2월까지 concat 시키자
concat2013=pd.concat(data2013)
concat2014=pd.concat(data2014)
concat2015=pd.concat(data2015)
concat2016_1=pd.concat(data2016_1)
concatAll_1=pd.concat([concat2013,concat2014,concat2015,concat2016_1])
concatAll_1.head()
concat2016_2=pd.concat(data2016_2)
concat2017=pd.concat(data2017)
concat2018=pd.concat(data2018)
concat2019=pd.concat(data2019)
concatAll_2=pd.concat([concat2016_2,concat2017,concat2018,concat2019])
concatAll_2.head()
2016년 6월 데이터 부터는 시도, 시군구, 읍면동 이라는 컬럼때문에 통화건수가 잘게 쪼개져있다.
이 통화건수를 groupby를 이용하여 모아보자. 그리고 reset_index()를 이용해 활용할수 있는 데이터 프레임으로 다시 바꾸자
concatAll_2_1=concatAll_2.groupby(['일자','요일','시간대','업종']).sum().reset_index()
concatAll_2_1.head(10)
그러면 2013년 9월부터 2019년 2월까지 모든 데이터를 concat 시키자
concatAll=pd.concat([concatAll_1,concatAll_2_1])
concatAll.head()
이 데이터의 '일자' 컬럼의 숫자를 날짜열로 바꾸자
concatAll['일자'] = pd.to_datetime(concatAll['일자'],format='%Y%m%d')
concatAll.head()
아까 만들어 놓았던 2013년 8월 데이터와 2013-9~2019-2 데이터를 결합하자
concatA=pd.concat([concatAll,df])
concatA.head()
info를 이용해 데이터를 확인해보고 빠진 데이터는 없는지 각 데이터들의 형식은 제대로 되어있는지 확인하자.
concatA.info()
업종과 요일이 제대로 분류가 되어있는지 확인하자
concatA['업종'].unique()
concatA['요일'].unique()
업종은 피자, 족발/보쌈, 중국음식이 2가지로 나눠져 있다.
이를 한 가지로 합쳐주는 작업을 하자.
위에서 나올 수 있는 7가지 경우에 대해서 각각 어떤 이름으로 바꿀지 딕셔너리를 만들어 주자.
바꿀 단어는 앞에 바뀔 단어는 뒤에
food={'족발/보쌈전문':'족발/보쌈전문','중국음식':'중국음식','치킨':'치킨','피자전문':'피자',
'음식점-족발/보쌈전문':'족발/보쌈전문','음식점-중국음식':'중국음식','피자':'피자'}
apply 함수를 이용하여 업종컬럼에 있는 각 단어들을 원하는 단어로 바꿔주자
concatA['업종']=concatA['업종'].apply(lambda x: food[x.lower()])
그래프를 seaborn 라이브러리를 이용하여 그리겠다.
import seaborn as sns
from scipy import stats
연도, 월, 일 컬럼을 추가하자
concatA["year"] = concatA["일자"].dt.year
concatA["month"] = concatA['일자'].dt.month
concatA["day"] = concatA["일자"].dt.day
Delivery=concatA.sort_values('일자')
Delivery.head()
한글폰트가 깨지지 않도록~
%matplotlib inline
import platform
path = "c:/Windows/Fonts/malgun.ttf"
from matplotlib import font_manager, rc
if platform.system() == 'Darwin':
rc('font', family='AppleGothic')
elif platform.system() == 'Windows':
font_name = font_manager.FontProperties(fname=path).get_name()
rc('font', family=font_name)
else:
print('Unknown system... sorry~~~~')
missingno 라이브러리를 이용해 null값이 있는지 확인할 수 있다. null값이 있으면 바코드처럼 하얀 선이 그러진다. 하얀선이 나타나면 하얀선 위치를 보고 null값의 위치를 파악할 수 있다.
import missingno as msno
msno.matrix(Delivery, figsize=(12,5))
년도별, 월별, 일별, 시간별, 요일별, 업종별 통화건수 막대그래프를 그려보자.
y축은 평균 통화건수를 의미한다.
figure, ((ax1,ax2,ax3), (ax4,ax5,ax6)) = plt.subplots(nrows=2, ncols=3)
figure.set_size_inches(18,8)
sns.barplot(data=Delivery, x="year", y="통화건수", ax=ax1)
sns.barplot(data=Delivery, x="month", y="통화건수", ax=ax2)
sns.barplot(data=Delivery, x="day", y="통화건수", ax=ax3)
sns.barplot(data=Delivery, x="시간대", y="통화건수", ax=ax4)
sns.barplot(data=Delivery, x="요일", y="통화건수", ax=ax5)
sns.barplot(data=Delivery, x="업종", y="통화건수", ax=ax6)
년도가 지날수록 통화건수가 점점 줄어든다.
선선한 날씨인 8~10월에 가장 많은 통화를 한다는 것을 알 수 있다.
일별 통화량은 31일에 특히 통화건수가 많다는 것을 볼 수 있다.
하루중에 점심시간12~1시와 6시,7시 전후로 통화건수가 많음을 확인할 수 있다.
요일별로는 주말과 금요일이 통화건수가 많다.
업종별로는 치킨과 중국음식이 압도적으로 많음을 확인할 수 있다.
그래프를 조금 더 세부적으로 그려보자.
시간대-통화건수 그래프를 업종, 요일, 월별로 나눠보고, 일별-통화건수 그래프를 업종별로 나눠보자.
fig,(ax1,ax2,ax3,ax4,ax5)= plt.subplots(nrows=5)
fig.set_size_inches(18,25)
sns.pointplot(data=Delivery, x="시간대", y="통화건수", ax=ax1)
sns.pointplot(data=Delivery, x="시간대", y="통화건수", hue="업종", ax=ax2)
sns.pointplot(data=Delivery, x="시간대", y="통화건수", hue="요일", ax=ax3)
sns.pointplot(data=Delivery, x="시간대", y="통화건수", hue="month", ax=ax4)
sns.pointplot(data=Delivery, x="day", y="통화건수", hue="업종", ax=ax5)
시간대-통화건수를 업종별로 나타낸 그래프를 통해 재미있는 결과를 확인할 수 있다. 점심시간대에는 중국음식의 통화량이 압도적으로 많고, 저녁 시간에는 치킨이 중국음식의 통화량 보다 조금 더 많은 경향이 있다. 하지만 치킨은 저녁 시간부터 자정이 될 때 까지 지속적으로 높은 통화건수를 기록하고 있다. 그리고 족발과 피자 통화건수는 아주적지만 그래도 재미있는 결과를 볼 수 있는데, 오전 10시부터 저녁이 될 때까지 통화량이 조금씩 증가하는 경향을 띈다는 것이다.
시간대-통화건수를 요일별로 나타낸 그래프에서도 재미있는 사실이 몇가지 있는데, 평일보다 주말 통화량이 많고 평일 그래프는 너무나도 비슷한 형태를 띄고 있다는 점. 그리고 금요일 토요일 그래프를 보면 7시 이후 통화량이 다른 요일보다 많은데, 아마도 다음날이 쉬는 날이다 보니 야식을 먹기 위해 통화를 하는 경우가 많다라고 추측이 된다.
시간대-통화건수를 월별로 나타낸 그래프에서는 저녁 6시 7시를 보면 그래프가 X가로 교차하고 있는 것을 볼 수 있다. 그래프 색깔을 잘 비교해보면 추운 계절에는 6시가 더 높고 더운 계절에는 7시가 더 높은데 해가 떨어지는 시간도 저녁시간에 영향을 주는 요인인 것 같다.
일별-통화건수를 업종별로 나타낸 그래프를 보면 그래프가 전체적으로 평탄하지만 31일에 치킨 통화건수만 많다는 것을 볼 수 있다. 31일이 많다는것이 월 말을 기념하는 사람들이 많아서 그럴까? 아니면 12월 31일 같은 년 말을 기념하는 날 때문에 그럴까? 31일은 일년에 7번 밖에 없기때문에 12월 31일 같은 날 때문에 평균 통화량에 큰 영향을 줄 것 같기도 하다. 이 부분은 더 조사해 봐야겠다.
다음은 요일별-통화건수와 월별-통화건수를 업종별로 분석해 보았다.
fig,(ax1,ax2)= plt.subplots(nrows=2)
fig.set_size_inches(18,10)
sns.pointplot(data=Delivery, x="요일", y="통화건수", hue="업종", ax=ax1)
sns.pointplot(data=Delivery, x="month", y="통화건수", hue="업종", ax=ax2)
위에서 분석했던 내용과 큰 차이가 없다.
전체적으로 시간이 지나며 어떤 추이를 보이는지 알기 위해 이번에는 데이터에 year_month 컬럼을 추가해 보자.
def concatenate_year_month(datetime):
return "{0}-{1}".format(datetime.year, datetime.month)
Delivery["year_month"] = Delivery["일자"].apply(concatenate_year_month)
print(Delivery.shape)
Delivery[["일자", "year_month"]].head()
년별-통화건수를 업종별로 년_월별-통화건수를 업종별로 나타낸 그래프를 그려봤다.
fig,(ax1,ax2)= plt.subplots(nrows=2)
fig.set_size_inches(18,10)
sns.pointplot(data=Delivery, x='year', y="통화건수", hue="업종", ax=ax1)
sns.pointplot(data=Delivery, x='year_month', y="통화건수", hue="업종", ax=ax2)
plt.xticks(rotation=45)
년별-통화건수 그래프를 통해서는 통화건수가 점점 줄어들는 것을 볼 수 있다. 여기에는 여러가지 요인이 있을 수 있는데, 요식업계 어플 사용량이 점점 증가하고 있는 점이 큰 이유 인 것 같다.
년_월별-통화건수 그래프를 보면 이상한점이 있다. 유난히 2013년 8,9월 2014년 9,10월의 데이터 값이 크게 나왔다. 위에서 분석했을때 8~10월이 선선한 계절이라 많이 팔렸다고 판단했었는데, 저 4개의 점이 특이점 역할을 한 것 같다는 생각이 든다. 이 부분에 대해서 조금 더 분석이 필요할 것 같다.
년_월별-통화량 그래프를 막대그래프로도 그려봤다.
fig, ax3 = plt.subplots(nrows=1, ncols=1)
fig.set_size_inches(18, 5)
sns.barplot(data=Delivery, x="year_month", y="통화건수", ax=ax3)
plt.xticks(rotation=45)
그래프가 점차 감소하는 추세인데 2014-9와 2014-10만 뾰족하게 솟아있다.
데이터가 더 추가된건 아닌지 8월부터 11월까지 데이터 수를 검사해보자.
Delivery[Delivery['year_month']=='2014-8'].info()
Delivery[Delivery['year_month']=='2014-9'].info()
Delivery[Delivery['year_month']=='2014-10'].info()
Delivery[Delivery['year_month']=='2014-11'].info()
데이터 수는 31일 기준 최대 2976개, 30일 기준 최대 2880개이므로 데이터가 중복해서 들어간 것 같지 않다.
fig,(ax1,ax2,ax3,ax4)= plt.subplots(nrows=4)
fig.set_size_inches(18,10)
sns.pointplot(data=Delivery[Delivery['year_month']=='2014-8'], x="day", y="통화건수", hue="업종", ax=ax1)
sns.pointplot(data=Delivery[Delivery['year_month']=='2014-9'], x="day", y="통화건수", hue="업종", ax=ax2)
sns.pointplot(data=Delivery[Delivery['year_month']=='2014-10'], x="day", y="통화건수", hue="업종", ax=ax3)
sns.pointplot(data=Delivery[Delivery['year_month']=='2014-11'], x="day", y="통화건수", hue="업종", ax=ax4)
지금 흐름과는 상관 없는 정보인데 재미있는게 보인다.
2014년 9월 8일이 중국음식이 유난히 안팔렸다.
왜 그런지 조사해 보자
Delivery[(Delivery['일자']=='2014-09-08')&(Delivery['시간대']>=9)].sort_values('시간대')
조사해보니 중국집 강세인 점심때도 유난히 안팔렸다.
무슨날인지 찾아보니, 추석 당일 이었다.
Delivery_cfood08_sum=Delivery[(Delivery['year_month']=='2014-8')&(Delivery['업종']=='중국음식')]['통화건수'].sum()
Delivery_cfood08_sum
cfood08=pd.read_csv('CALL_CFOOD_8MONTH.csv')
cfood08['이용건수'].sum()
Delivery_cfood09_sum=Delivery[(Delivery['year_month']=='2014-9')&(Delivery['업종']=='중국음식')]['통화건수'].sum()
Delivery_cfood09_sum
cfood09=pd.read_csv('CALL_CFOOD_9MONTH.csv')
cfood09['통화건수'].sum()
Delivery_cfood10_sum=Delivery[(Delivery['year_month']=='2014-10')&(Delivery['업종']=='중국음식')]['통화건수'].sum()
Delivery_cfood10_sum
cfood10=pd.read_csv('CALL_CFOOD_10MONTH.csv')
cfood10['통화건수'].sum()
Delivery_cfood11_sum=Delivery[(Delivery['year_month']=='2014-11')&(Delivery['업종']=='중국음식')]['통화건수'].sum()
Delivery_cfood11_sum
cfood11=pd.read_csv('CALL_CFOOD_11MONTH.csv')
cfood11['통화건수'].sum()
Delivery_chicken08_sum=Delivery[(Delivery['year_month']=='2014-8')&(Delivery['업종']=='치킨')]['통화건수'].sum()
Delivery_chicken08_sum
chicken08=pd.read_csv('CALL_CHICKEN_8MONTH.csv')
chicken08['이용건수'].sum()
Delivery_chicken09_sum=Delivery[(Delivery['year_month']=='2014-9')&(Delivery['업종']=='치킨')]['통화건수'].sum()
Delivery_chicken09_sum
chicken09=pd.read_csv('CALL_CHICKEN_9MONTH.csv')
chicken09['통화건수'].sum()
Delivery_chicken10_sum=Delivery[(Delivery['year_month']=='2014-10')&(Delivery['업종']=='치킨')]['통화건수'].sum()
Delivery_chicken10_sum
chicken10=pd.read_csv('CALL_CHICKEN_10MONTH.csv')
chicken10['통화건수'].sum()
Delivery_chicken11_sum=Delivery[(Delivery['year_month']=='2014-11')&(Delivery['업종']=='치킨')]['통화건수'].sum()
Delivery_chicken11_sum
chicken11=pd.read_csv('CALL_CHICKEN_11MONTH.csv')
chicken11['통화건수'].sum()
가장 많은 판매량을 가지고 있는 치킨과 중국집에 대해 수집해놓은 다른 파일의 결과와 비교해 봤지만 값에 큰 차이는 없다
그렇다고 9월 10월 데이터를 믿기에는 근처 다른 달(月)과 차이가 너무 크다.
검색해 보았지만 9월 10월에 주문량이 오를만한 특별한 이벤트가 없었고, 주문 음식 4종이 모두 증가했다는건 데이터 수집 방법에서 잘못되지 않았나 싶다.
2014년 11월부터 데이터를 모아서 월별-통화건수와 년_월별-통화건수를 업종별로 그려보자
Delivery201411=Delivery[(Delivery['year']>=2015)|(Delivery['year_month']=='2014-11')|(Delivery['year_month']=='2014-12')]
Delivery201411.head()
fig,(ax1,ax2)= plt.subplots(nrows=2)
fig.set_size_inches(18,10)
sns.pointplot(data=Delivery201411, x='month', y="통화건수", hue="업종", ax=ax1)
sns.pointplot(data=Delivery201411, x='year_month', y="통화건수", hue="업종", ax=ax2)
plt.xticks(rotation=45)
전체적인 그래프를 보면 12월 통화량이 다른 월보다 많은 편이라는 것을 알 수 있다. 그리고 족발과 피자는 16년 6월을 기점으로 통화량이 크게 증가후 서서희 감소하는 것을 볼 수 있다.
'beginner > 데이터 분석 스터디' 카테고리의 다른 글
[서울시 먹거리 분석 – 3] 1월 중국집 판매업종 이용 통화량 분석 (0) | 2019.03.25 |
---|---|
[서울시 먹거리 분석 – 2] 1월 치킨 판매업종 이용 통화량 분석_2 (0) | 2019.03.17 |
Plot 스터디 (0) | 2019.03.02 |
[서울시 먹거리 분석] - 1월 치킨 판매업종 이용 통화량 분석 (0) | 2019.02.27 |