티스토리 뷰
Roadmap¶
다음 순서에 따라 단계적으로 분석을 하며, 쉬운 분석부터 조금씩 더 수준높은 분석을 하도록 하겠다.
- “19년 1월 서울시 치킨 판매업종 이용 통화량” 데이터 분석 a. 데이터 탐색 -> 초보적인 시각화 b. 데이터를 여러 방향으로 분석 해보기
- “19년 1월 서울시 중국음식 판매업종 이용 통화량” 데이터 분석
- “19년 1월 서울시 피자 판매업종 이용 통화량” 데이터 분석
- 1월의 서울시 먹거리(1~3 데이터를 합친 후) 분석
- 2018년 2월 ~ 2019년 1월 까지의 모든 데이터를 합친 후 분석
- 5번분석을 중심으로 인사이트 도출
- 지난 1년간의 먹거리 트렌드가 어떠했는지 알아보고, 앞으로 어떻게 변화 할지 분석
- Feedback
(SK Big Data Hub에서 다양한 종류의 데이터를 매달 얻을 수 있다.)
이번에는 1-a 단계를 해보도록 하겠다.
SK Data Hub에서 "19년 1월 서울시 치킨 판매업종 이용 통화량" 데이터를 받아오자.
In [90]:
import pandas as pd
import numpy as np
Call_chicken_01 = pd.read_csv("CALL_CHICKEN_01MONTH.csv")
이번 블로그는 아주 간단하게 파악하는 단계 이므로 데이터가 몇 개 인지 부터 파악해 보자.
In [91]:
df = pd.DataFrame(Call_chicken_01)
df.head()
Out[91]:
In [92]:
df.shape
Out[92]:
총 29850개의 데이터가 있다.
이제 이 약 3만개의 데이터들이 어떻게 분포 되어있는지 간단히 요약하여 확인해보도록 하자.
In [131]:
df.describe()
Out[131]:
In [94]:
df.columns
Out[94]:
In [127]:
W = ['월','화','수','목','금','토','일']
In [128]:
week=[]
for i in W:
k=np.sum(df['요일']==i)
week.append(k)
week
Out[128]:
In [129]:
np.transpose([list(W),week])
Out[129]:
In [98]:
np.unique(df['성별'])
Out[98]:
In [99]:
[['남',np.sum(df['성별']=='남')],['여', np.sum(df['성별']=='여')]]
Out[99]:
In [100]:
A = np.unique(df['연령대'])
In [101]:
age=[]
for i in np.unique(df['연령대']):
k=np.sum(df['연령대']==i)
age.append(k)
age
Out[101]:
In [102]:
Age=pd.DataFrame(np.transpose([list(A),age]))
Age
Out[102]:
In [103]:
Age.rename(columns={Age.columns[0]:'연령대', Age.columns[1]:'소계'}, inplace=True)
Age
Out[103]:
In [104]:
np.unique(df['시도'])
Out[104]:
In [105]:
len(df['시도'])
Out[105]:
In [106]:
R = np.unique(df['시군구'])
In [107]:
region=[]
for i in np.unique(df['시군구']):
k=np.sum(df['시군구']==i)
region.append(k)
In [119]:
frame1 = pd.DataFrame({'구별' : list(R), '소계' : region})
frame1.head()
Out[119]:
In [132]:
frame1.sort_values(by='소계', ascending=False).head(10)
Out[132]:
In [44]:
R2 = np.unique(df['읍면동'])
In [45]:
region2=[]
for i in np.unique(df['읍면동']):
k=np.sum(df['읍면동']==i)
region2.append(k)
In [122]:
frame2 = pd.DataFrame({'동별' : list(R2), '소계' : region2})
frame2.head()
Out[122]:
In [126]:
frame2.sort_values(by='소계', ascending=False).head(40)
Out[126]:
연령대를 보면 30대와 40대가 각각 6116, 6084건의 데이터로 가장 높은 데이터량을 나타내고 있다.
데이터에서 금요일날 통화를 한 30대 40대 데이터만 추출해 통화건수를 구해보자.
In [201]:
thirty = df[(df['요일']=='금')&(df['연령대']=='30대')]
thirty.head()
Out[201]:
In [202]:
fourty = df[(df['요일']=='금')&(df['연령대']=='40대')]
fourty.head()
Out[202]:
In [203]:
np.sum(thirty['통화건수']), np.sum(fourty['통화건수'])
Out[203]:
30대와 40대가 각각 6116, 6084건의 데이터가 나왔지만, 실제 통화건수는 40대가 30대보다 높은것을 알 수 있다.
데이터 개수와 통화건수는 별개임을 알 수 있다.
이렇게 판다스를 이용해 간단한 데이터 조작을 해보았다.
아직까지는 매우 간단한 수준이지만 조금씩 높은 수준의 분석을 해볼 예정이다.
출처 사이트에서 R을 통해 분석한 아이디어를 참고해 보았다.
'beginner > 데이터 분석 스터디' 카테고리의 다른 글
[서울시 먹거리 분석 – 4] 전체 판매업종 이용 통화량 분석 (0) | 2019.04.02 |
---|---|
[서울시 먹거리 분석 – 3] 1월 중국집 판매업종 이용 통화량 분석 (0) | 2019.03.25 |
[서울시 먹거리 분석 – 2] 1월 치킨 판매업종 이용 통화량 분석_2 (0) | 2019.03.17 |
Plot 스터디 (0) | 2019.03.02 |