Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

류동균의 R 공부방입니다.

서울시 먹거리분석 #2 본문

Data Analysis

서울시 먹거리분석 #2

R쟁이 2019. 10. 16. 20:58

본격적으로 데이터 분석을 하기에 앞서 지난 블로그에서 데이터의 구조에 대해 몇가지 좀 바꿔야 할 점이 있었다. 다시한번 데이터의 형식을 보자

str(chicken_df)
'data.frame':	30245 obs. of  9 variables:
 $ 기준일  : int  20190101 20190101 20190101 20190101 20190101 20190101 20190101 20190101 ...
 $ 요일    : Factor w/ 7 levels "금","목","수",..: 7 7 7 7 7 7 7 7 7 7 ...
 $ 성별    : Factor w/ 2 levels "남","여": 2 2 1 1 1 1 1 2 2 1 ...
 $ 연령대  : Factor w/ 6 levels "10대","20대",..: 2 2 1 1 1 1 1 6 6 2 ...
 $ 시도    : Factor w/ 1 level "서울특별시": 1 1 1 1 1 1 1 1 1 1 ...
 $ 시군구  : Factor w/ 25 levels "강남구","강동구",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ 읍면동  : Factor w/ 249 levels "가락동","가리봉동",..: 103 187 157 103 50 48 38 157 38 7 ...
 $ 업종    : Factor w/ 1 level "치킨": 1 1 1 1 1 1 1 1 1 1 ...
 $ 통화건수: int  12 5 5 11 5 5 5 5 5 13 ...

먼저 기준일은 날짜로 되어있고 요일또한 Factor의 요일 순서가 다소 보기 불편하게 되어있다. 분석하기에 앞서 이 데이터들을 먼저 처리해주자.

기준일컬럼 날짜형으로 변환

 

# as.character()
chicken_df$기준일 <- as.character(chicken_df$기준일)

# as.POSIXct()
chicken_df$기준일 <- as.POSIXct(chicken_df$기준일, format = "%Y%m%d")

 

요일컬럼 Factor 순서 변환

이번엔 요일컬럼의 Factor의 순서를 바꿔보자. 보기편하게 월, 화 ... 토, 일 의 형식으로 바꿀 예정이다.

# 요일컬럼 Factor 순서 변환
chicken_df$요일 <- factor(chicken_df$요일, levels = c("월","화","수","목","금","토","일"))

 

변환을 했으니 다시한번 str() 함수를사용하여 보면. 생각했던대로 자료형이 바뀐 것을 확인 할 수 있다.

str(chicken_df)
'data.frame':	30245 obs. of  9 variables:
 $ 기준일  : POSIXct, format: "2019-01-01" "2019-01-01" "2019-01-01" "2019-01-01" ...
 $ 요일    : Factor w/ 7 levels "월","화","수",..: 2 2 2 2 2 2 2 2 2 2 ...
 $ 성별    : Factor w/ 2 levels "남","여": 2 2 1 1 1 1 1 2 2 1 ...
 $ 연령대  : Factor w/ 6 levels "10대","20대",..: 2 2 1 1 1 1 1 6 6 2 ...
 $ 시도    : Factor w/ 1 level "서울특별시": 1 1 1 1 1 1 1 1 1 1 ...
 $ 시군구  : Factor w/ 25 levels "강남구","강동구",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ 읍면동  : Factor w/ 249 levels "가락동","가리봉동",..: 103 187 157 103 50 48 38 157 38 7 ...
 $ 업종    : Factor w/ 1 level "치킨": 1 1 1 1 1 1 1 1 1 1 ...
 $ 통화건수: int  12 5 5 11 5 5 5 5 5 13 ...

 

분석방향에 대한 생각

이제 데이터를 원하는 대로 만들어놨으니 분석을 해야한다. 이 데이터를 토대로 어떠한 인사이트를 도출해낼 수 있을지 생각해보자. 시도, 업종은 모두 동일한 데이터를 가지고 있기때문에 제외하고 기준일, 요일, 성별, 연령대, 시군구, 읍면동의 데이터로 몇가지 질문을 던져보자.

 

  º 성별과 주문량의 차이가 있나?

  º 요일별로 주문량의 차이가 있나 아마 금요일, 토요일이 가장 많지 않을까?

  º 특별히 통화량이 많은 시군구, 읍면동이 있나?

  º 특정 연령대에서 특정 성별의 통화량이 많은가?

 

이정도를 생각해 볼 수 있을 것 같다.

 

데이터 분석

우선 간단하게 요일별, 연령대별 통화량의 합을 보자

# 요일 별 통화량
aggregate(chicken_df$통화건수, by = list(chicken_df$요일), sum)
1      월 39183
2      화 59677
3      수 55672
4      목 56259
5      금 63675
6      토 65399
7      일 58887

# 연령대별 통화량
aggregate(chicken_df$통화건수, by = list(chicken_df$연령대), sum)
1     10대  26822
2     20대  65589
3     30대  96940
4     40대 123188
5     50대  57072
6 60대이상  29141

다음과 같이 결과가 나오는데 요일별 통화량은 예상했던대로 금요일, 토요일에 가장 많은 통화량이 발생했다. 연령대별 통화량은 10대가 가장적게 40대가 가장 많게 나타났다. 좀더 자세하게 연령대별, 요일별 통화량을 같이 알아보자.

#연령대,요일별 통화량
days_years_data <- chicken_df %>% 
  group_by(연령대,요일) %>% 
  summarise(통화건수 = sum(통화건수)) %>%
  as.data.frame()

다음과 같이 결과가 나온다. 한번 시각화 하여 그래프로 보자.

 

 

 

데이터가 주는 insight

이렇게 데이터를 여러가지 방법으로 알아보았다. 가장 눈에 띈 것은 요일별 데이터에서의 금, 토 가 가장 통화량이 많은 것, 연령대에서 10대가 가장적고 40대가 가장 많은 것 이였다. 금, 토요일이 가장 많은 것은 주말이기 때문에라고 쉽게 설명이 가능하다. 그럼 연령대 데이터는 어떻게 설명 할 수 있을까? 이것에 대한 나의 개인적인 생각은 금전적 차이와 가족구성원의 차이라고 생각했다. 10대는 치킨을 따로 시켜먹을 돈이 없다. 그리고 대부분 가족과 함께 살기때문에 10대가 주문을 하기보다는 다른 어른들이 주문을 주로한다고 생각할 수 있다. 금전적인 관점에서 10대부터 40대 까지 쭉 통화량이 증가한다고 생각한다. 20대는 자취를 하는 사람도 있으며 알바를 하고, 30대는 직장을 구하고 결혼을 한 사람도, 아이를 가진 사람도 있을 것이다. 또한 40대에 가장많은 통화량을 보이는 것은 아마 가족의 영향이 크다고 본다. 30대의 경우 아이가 있어도 통상적으로 10살 이하인 경우가 많다고 생각되기때문에 치킨을 자주 시켜먹기엔 무리가 있다. 40대가 되면 아이들이 10대가 되고 치킨의 수요가 많아진다고 생각할 수 있다. 또한 40대의 통화량은 주문을 한 본인의 수요와 가족구성원의 수요가 합쳐진 형태라고 볼 수도 있다. 그리고 50대에 증가추세인 통화량이 감소하는 것은 입맛의 변화라고 볼 수도 있고, 자녀가 20대가 되어 독립을 하여 가족구성원이 줄어듬에따라 감소하는것이라고 볼 수도 있다.

 

데이터 분석을 통해 몇가지 insight를 도출해 보았다. 다음글에서는 주제를 중국음식으로 바꾸어 알아볼 예정이다.

'Data Analysis' 카테고리의 다른 글

서울시 먹거리 분석 #4  (0) 2019.10.18
서울시 먹거리분석 #3  (0) 2019.10.17
서울시 먹거리분석 #1  (0) 2019.10.16
K-겹 교차검증(K- fold Cross Validation)  (0) 2019.10.02
캐글(Kaggle)  (0) 2019.09.28