오늘은 프로젝트를 하는데 필요한 데이터 분석인 서울시 골목상권 프로파일링 정보(상권배후지-추정매출)을 이용하여 


실제 월별매출이 높은 지역, 상권의 상권배후지에서 어떤 요소가 매출 및 매출 건수에 영향을 미치는지 확인하는 작업을 했다.


아래는 MongoDB와 R을 연결하여 만들어낸 자료이다.




=============================== R ===============================


rm(list=ls())

 

##api자료

##https://cran.r-project.org/web/packages/mongolite/mongolite.pdf

 

##사용한 자료

##http://data.seoul.go.kr/dataList/datasetView.do?infId=OA-13331&srvType=A&serviceKind=1¤tPageNo=1

##json파일을 사용

 

##ref.

##http://cinema4dr12.tistory.com/1056

##https://datascienceplus.com/using-mongodb-with-r/

 

 

 

#MongoDB 라이브러리

install.packages("mongolite")

library("mongolite")

 

## MongoDB connection

#sales 데이터 분석

con <- mongolite::mongo(collection = "sales",

                        db = "seoulpopulation",

                        url = "mongodb://localhost",

                        verbose = TRUE,

                        options = ssl_options()

                        )

 

#MongoDB에서부터 데이터를 data.frame으로 가져오기 : type data.frame

df <- con$find(query ='{}')

#가져온 것을 확인

head(df)

#클래스 확인: data.frame

class(df)

#요약

summary(df)

 

 

##데이터 정제를 위한 라이브러리 호출

library("dplyr")

#숫자만 상관분석을 할 수 있으므로 숫자가 아닌 컬럼을 제외시킨다.

#숫자로 되어있지만 숫자로 된 Type String도 있으니 잘 정제하여야 한다.

refined_df <- df %>% select(-SVC_INDUTY_CD_NM,-TRDAR_CD_NM,-SVC_INDUTY_CD,-TRDAR_CD,-STDR_YM_CD)

#확인

head(df,1)

head(refined_df,1)

#상관관계 분석 : type matrix

refined_df_cor <- cor(refined_df)

#분석이 되었는지 확인

head(refined_df_cor)

 

##시각화

#시각화를 위한 라이브러리 설치 및 적용

install.packages("corrplot")

library("corrplot")

#상관관계 분석된 자료를 시각화

corrplot(refined_df_cor) #컬럼이 너무 많이 좋지 않은 시각화 작업이 되었다.

 

 

 

 

 

##시각과 자료가 보기 좋지 않아서 더 나은 자료를 얻기 위해서 데이터를 다시 정제

#매출 금액과 건수랑 상관관계가 높을 것 같은 자료만 사용해보기로 했다.

 

##중요 자료

#THSMON_SELNG_AMT: 당월_매출_금액, THSMON_SELNG_CO:  당월_매출_건수

##연관성 있을 것 같은 자료

##이 분석을 통해 비율과 금액, 건수 중 어떤 데이터가 더 중요한지 판단한다.

#AVRG_BSN_MONTH_CO:평균_영업_개월_수, 

#MDWK_SELNG_RATE: 주중_매출_비율, WKEND_SELNG_RATE: 주말_매출_비율, ML_SELNG_RATE:  남성_매출_비율, FML_SELNG_RATE:  여성_매출_비율, 

#MDWK_SELNG_AMT:주중_매출_금액, WKEND_SELNG_AMT:  주말_매출_금액, ML_SELNG_AMT: 남성_매출_금액, FML_SELNG_AMT:  여성_매출_금액,

#MDWK_SELNG_CO: 주중_매출_건수, WKEND_SELNG_CO:  주말_매출_건수, ML_SELNG_CO: 남성_매출_건수, FML_SELNG_CO:  여성_매출_건수

 

#각 비율, 금액, 건수에 대한 데이터 정제 

refined_df_rate <- df %>% select(THSMON_SELNG_AMT, THSMON_SELNG_CO, AVRG_BSN_MONTH_CO, MDWK_SELNG_RATE, WKEND_SELNG_RATE, ML_SELNG_RATE, FML_SELNG_RATE )

refined_df_amt <- df %>% select(THSMON_SELNG_AMT, THSMON_SELNG_CO, AVRG_BSN_MONTH_CO, MDWK_SELNG_AMT, WKEND_SELNG_AMT, ML_SELNG_AMT, FML_SELNG_AMT)

refined_df_co <- df %>% select(THSMON_SELNG_AMT, THSMON_SELNG_CO, AVRG_BSN_MONTH_CO, MDWK_SELNG_CO, WKEND_SELNG_CO, ML_SELNG_CO, FML_SELNG_CO)

#각각을 상관관계 분석 : type matrix

refined_df_rate_cor <- cor(refined_df_rate)

refined_df_amt_cor <- cor(refined_df_amt)

refined_df_co_cor <- cor(refined_df_co)

#데이터가 제대로 생성되었는지 확인

refined_df_rate_cor

refined_df_amt_cor

refined_df_co_cor

 

#상관관계 분석 자료를 시각화

corrplot(refined_df_rate_cor)




corrplot(refined_df_amt_cor)


corrplot(refined_df_co_cor)



 

 

 

##refined_df_rate_cor는 상관관계가 약해서 제외하기로 결정

 

 

 

##컬럼명을 알기 쉽게 바꾸기

#행렬을 한국어로 바꿀 객체를 생성

refined_df_amt_cor_kor <- refined_df_amt_cor

refined_df_co_cor_kor <- refined_df_co_cor

#행렬 이름을 입력

rownames(refined_df_amt_cor_kor) <- c("당월매출금액","당월매출건수","평균영업개월수","주중_매출_금액","주말_매출_금액","남성_매출_금액","여성_매출_금액")

colnames(refined_df_amt_cor_kor) <- c("당월매출금액","당월매출건수","평균영업개월수","주중_매출_금액","주말_매출_금액","남성_매출_금액","여성_매출_금액")

rownames(refined_df_co_cor_kor) <- c("당월매출금액","당월매출건수","평균영업개월수","주중_매출_건수","주말_매출_건수","남성_매출_건수","여성_매출_건수")

colnames(refined_df_co_cor_kor) <- c("당월매출금액","당월매출건수","평균영업개월수","주중_매출_건수","주말_매출_건수","남성_매출_건수","여성_매출_건수")

#행렬이름이 바뀌었는지 확인 

refined_df_amt_cor_kor

refined_df_co_cor_kor

#상관관계 시각화 

corrplot(refined_df_amt_cor_kor)




corrplot(refined_df_co_cor_kor)




=============================== R ===============================




사실 상관관계는 분석을 할 필요가 없는 자료이다.


왜냐하면 상식적으로 총매출이 많은 지역이 나이, 성별, 주중, 주말 매출이 높을 것이고 매출 건수 또한 마찬가지로 높을 것이기 때문이다.


당연한 것을 당연하다고 뽑아내는 작업이었지만 데이터 분석을 통해 객관적인 자료를 얻었다는데서 만족하려고 한다.


시각화 툴은 R 기본 함수만 쓰다가 이번에 corrplot이라는 라이브러리를 알게 되어 사용해봤다.


기본 툴보다 색깔 구분이 되고 약간이지만 데이터 정제도 가능하기에 상관관계 분석에 자주 사용할 예정이다.




이후 분석할 내용은 총매출을 y값으로 잡고 연관성이 높은 매개변수들을 선별하여 머신러닝을 통해 선형 회귀 분석으로 예측 자료를 만들 예정이다.


잘 되길 바라며 글을 마친다.

+ Recent posts