SK Data Hub 에서 매달 나오는 Data 들이 있다. 그중에서 요즘에 관심을 갖는 분야는 먹거리 인데, SK Data Hub에 있는 데이터는 치킨, 중국음식, 피자의 통화 건수가 매달 올라 온다. 이에 대해 아주 간단한 분석부터 시작해서 조금씩 난이도를 높혀 볼 생각이다. 물론 한계점이라면 SKT기기의 통화량뿐 다른 통신사의 통화량, app으로 주문, 오프라인 방문은 고려하지 않지만 이는 전체 모집단의 표본이라고 생각해두자. 처음 몇개의 블로그는 단순하고 쉽게 진행 예정이며 난이도가 높아 감에 따라 자연스럽게 독자의 눈도 높아 지게 해보려 하는 것이 이번 블로그의 목표이다.
Index (190417 Update)
Roadmap에 따라서 필요한 내용을 계속 해서 작성 하고 있고 이에 대한 전반적인 파악이 필요해서 목차를 작성해둔다. 각 목차 마다 링크를 추가 하였다.
- [서울시 먹거리 분석] — 통화량을 통한 분석 기획
- [서울시 먹거리 분석-2] — 1월 치킨 판매 업종 이용 통화량 분석
- [서울시 먹거리 분석-3] — 1월 중국집 이용 통화량 분석
- [서울시 먹거리 분석-4] — 1월 피자집 이용 통화량 분석
- [서울시 먹거리 분석-5] — 1월 요식업계 통화량 시각화
- [서울시 먹거리 분석-6] — 시각화 해석
- [서울시 먹거리 분석-7] — 원인 파악
- [서울시 먹거리 분석-8] — 2018년 csv파일 불러오기
- [서울시 먹거리 분석-9] —2018년 요식업계 통화량 시각화
- [서울시 먹거리 분석-10] — Data에 대한 합리적 의심
- [서울시 먹거리 분석-11] — Data 요청사항 Review
- [서울시 먹거리 분석-12] — 시스템 기획(초안)
- [서울시 먹거리 분석-13] — SK Data Hub데이터 요청 결과
- [서울시 먹거리 분석-14] — 데이터 오류 복원
Roadmap
차근차근 난이도를 높혀 가면서, 그리고 더 많은 데이터를 쌓아 가면서 분석을 할 껀데 단계가 필요 하다. 물론 초기 방향과 조금씩 달라질 수는 있겠지만 계획은 다음과 같다.
- “19년 1월 서울시 치킨 판매업종 이용 통화량” 데이터 분석
a. 데이터 탐색 -> 초보적인 시각화
b. 데이터를 여러 방향으로 분석 해보기 - “19년 1월 서울시 중국음식 판매업종 이용 통화량” 데이터 분석
- “19년 1월 서울시 피자 판매업종 이용 통화량” 데이터 분석
- 1월의 서울시 먹거리(1~3 데이터를 합친 후) 분석
- 2018년 전체 데이터를 합친 후 분석
- 5번분석을 중심으로 인사이트 도출
- 지난 1년간의 먹거리 트렌드가 어떠했는지 알아보고, 앞으로 어떻게 변화 할지 분석
- Feedback
우선 이 블로그에서는 1 — a 단계를 해보도록 하겠다. 우선 SK Data Hub에서 “19년 1월 서울시 치킨 판매업종 이용 통화량” 데이터를 받아 오도록 하자.
Call_chicken_01 <- read.csv("CALL_CHICKEN_01MONTH.csv")
이번 블로그는 아주 아주 간단하게 파악 하는 단계이므로 데이터가 몇개인지 부터 파악해보자. dim()함수를 사용한다.
> dim(Call_chicken_01)
[1] 29850 9
총 29850개의 데이터가 있다. 이제 이 약 3만개 데이터들이 어떻게 분포 되어있는지 간단히 요약하여 확인해보도록 하자.summary()함수를 사용한다.
> summary(Call_chicken_01)
기준일 요일 성별 연령대 시도
Min. :20190101 금:4255 남:14498 10대 :3688 서울특별시:29850
1st Qu.:20190108 목:4655 여:15352 20대 :5695
Median :20190116 수:4670 30대 :6116
Mean :20190116 월:3493 40대 :6084
3rd Qu.:20190124 일:3896 50대 :4537
Max. :20190131 토:4142 60대이상:3730
화:4739
시군구 읍면동 업종 통화건수
강남구 : 2381 가양동 : 372 치킨:29850 Min. : 5.00
강서구 : 1916 개봉동 : 372 1st Qu.: 5.00
중구 : 1717 공릉동 : 372 Median : 5.00
영등포구: 1688 길동 : 372 Mean : 13.24
마포구 : 1552 내발산동 : 372 3rd Qu.: 14.00
서대문구: 1476 동선동2가: 372 Max. :242.00
(Other) :19120 (Other) :27618
이중에 딱 봤을때 눈에 띄는 Data가 있는데 연령대를 보면 30대와 40대가 각각 6116, 6084건의 데이터로 가장 높은 데이터량을 나타내고 있다. 그렇다면 먼저 이곳부터 공략하여 알아보도록 하자. 필터링을 하여 30대,40대만 뽑았으며 이를 years3040 이라고 지정해놓았다. 그후 head()로 간단히 확인 해보면 다음과 같다.
> head(years3040)
기준일 요일 성별 연령대 시도 시군구 읍면동 업종 통화건수
2 20190101 화 남 30대 서울특별시 강남구 삼성동 치킨 36
4 20190101 화 여 40대 서울특별시 강남구 대치동 치킨 5
5 20190101 화 여 40대 서울특별시 강남구 일원동 치킨 5
7 20190101 화 여 30대 서울특별시 강남구 일원동 치킨 5
9 20190101 화 남 30대 서울특별시 강남구 수서동 치킨 5
11 20190101 화 남 30대 서울특별시 강남구 역삼동 치킨 28
이렇게 30,40대의 데이터만 뽑았으니 한번더 데이터 조작을 하여 금요일날 통화 건수의 총합을 알아보자. 총합을 알아보기 위해서는 sum() 함수를 사용한다.
> sum(fri30$통화건수)
[1] 15479
> sum(fri40$통화건수)
[1] 20609
금요일 30대의 통화 건수는 15479건, 40대의 통화 건수는 20609건임을 알아 보았다. 약간 의아해 할수도 있는데 아까, 30대와 40대가 각각 6116, 6084건의 데이터인것을 알았는데 왜 통화 건수가 더 많을지 순수한 의문(어쩌면….?)을 들수 있는데 30대의 6116데이터는 말그대로 데이터 이고 그 데이터에서 통화 건수는 별개이다. 30대 임의의 데이터 하나를 뽑아 보자.
years3040 <- Call_chicken_01 %>%
filter(연령대 == "30대" | 연령대 == "40대")> head(years3040[years3040$연령대 == "30대",])
기준일 요일 성별 연령대 시도 시군구 읍면동 업종 통화건수
2 20190101 화 남 30대 서울특별시 강남구 삼성동 치킨 36
7 20190101 화 여 30대 서울특별시 강남구 일원동 치킨 5
9 20190101 화 남 30대 서울특별시 강남구 수서동 치킨 5
11 20190101 화 남 30대 서울특별시 강남구 역삼동 치킨 28
12 20190101 화 여 30대 서울특별시 강남구 역삼동 치킨 29
21 20190101 화 여 30대 서울특별시 강남구 수서동 치킨 5
이를 보면 하나의 데이터에 통화건수는 36,5,5,28,29,5… 등등이 나온것이고 이를 모두 더한 것이다.
이렇게, R을 통해 간단히 데이터 조작해보는법을 알아 보았다. 아직까지는 매우 간단한 수준이고 조금씩 발전 해가면서 수준 높은 분석을 해볼 예정이다.