데이터 분석가가 주로 사용하는 도구 조사
(구글 독 조사 페이지 링크 : https://docs.google.com/forms/d/e/1FAIpQLSe31ixLe3hGifL9rauxCM687QJ7lQ2S4xlVowrHpe7e8QpnmQ/viewform )
[Summary]
본 조사는 대한민국의 데이터 분석가들이 2019년 현재 어떤 도구를 사용해서 데이터 분석을 수행하는가에 대한 개략적인 패턴을 파악하기 위한 것. 조사결과의 주요패턴은
■ 데이터분석 분야에서 R을 많이 사용
■ AI/머신러닝에서는 압도적으로 파이썬을 사용
■ 실무경력 7년초과 사용자들의 SAS 사용 많음
■ 민간기업의 파이썬 사용 많음
문항 구성 ::
-------------
[1] 당신은 어느 데이터 분석 도구를 주로 사용하십니까?
파이썬 ; R ; SAS ; 기타
[2] 당신의 연령대는?
24세 미만 ; 24~34세 ; 35~54세 ; 55세 이상
[3] 당신의 주된 업무는?
데이터 분석 ; AI/머신러닝 ; 마케팅, 기획, 공정관리 등 현업 ; IT ; 기타
[4] 당신의 데이터 분석 관련 실무 경력은?
1년 미만 ; 1~3년 이하 ; 3~7년 이하 ; 7년 초과
[5] 당신의 소속 기관 유형은?
민간기업 ; 공공기관 ; 대학/연구기관 ; 기타
* 응답자수 총 131명 중 사용도구 응답한 130명을 유효응답으로 간주
* 조사방식 : 구글 서베이를 사용한 온라인 조사 (페이스북 활용해 응답자 모집)
* 조사기간: 20190829~20190904
* 응답결과 데이터 : (클릭해서 다운로드) http://www.revision.co.kr/study/tool.csv
이하 개략적인 집계 결과
---------------------------------
1. 주로 사용하는 도구는 R과 Python (조사 표본이 치우쳐져있을 가능성 존재)
단, 데이터 분석에서 두 도구의 사용이 많은 것이 최근(2019년 기준)의 추세.
2. 사용도구를 결정하는 가장 중요한 요인은 주업무
- AI/머신러닝 업무에서 주로 파이썬이 압도적으로 많이 사용됨
- 일반 데이터 분석에서는 R 사용 많음
3. 영향요소간 상대적 중요도에서 주업무가 압도적으로 중요, 실무경력이 다음으로 중요
4. 주업무가 데이터 분석인 경우 R 사용이 특히 많음
- 응답자 중 다수가 데이터 분석에 R을 사용함 (23.8%)
5. 실무경력 1~3년 구간에서 R 사용 많고, 실무경력 7년 초과에서 SAS 사용 많음
- 파이썬 주사용자들은 실무경력 적은 쪽에서 비율 높음
6. 상대적으로 젊은 쪽에서 R 사용 좀 더 많음
7. 민간기업에서 파이썬 사용비율 높고 기타 유형에서 R 사용 비율 높음
단, 데이터 분석 업무가 상대적으로 민간기업에서 좀 더 보편화 되었을 가능성 존재
8. 연령과 실무경력이 높은 쪽에 SAS 사용 많음
(범주형 응답을 임의로 수치로 환산해 시각화한 것. 구간별 중간값 활용)
- 연령, 실무경력 모두 적은 쪽에 파이썬 사용자 많음
(기존에 장기간 데이터 분석에 SAS를 사용해온 조직들이 여전히 사용하고 있는 경우 반영 추측)
9. 주영향요소인 주업무와 실무경력 교차 조합별 사용도구 비교
- 데이터 분석 영역에서 1년 이상 실무경력자가 다수 R을 사용
- AI/머신러닝 분야에서는 다수가 파이썬을 사용
- 기타 영역은 응답수가 많지 않고 패턴 신뢰 어려움 존재
- 끝 -
(부록: 집계용 R Script)
tool <- read.csv("http://www.revision.co.kr/study/tool.csv", stringsAsFactors = F)
nrow(tool) # 131 including missings
summary(tool)
# check if any na
sum(is.na(tool))
# 결측값 제거
library(dplyr)
tool <- tool %>% filter(!is.na(사용도구))
tool <- tool %>% filter(사용도구!="")
nrow(tool)
sum(is.na(tool))
tool$기관유형 <- ifelse(is.na(tool$기관유형), "기타", tool$기관유형)
tool$기관유형 <- ifelse(tool$기관유형=="", "기타", tool$기관유형)
barplot(table(tool$실무경력), col=c(1,2,3,4))
# fill with median
tool$실무경력 <- ifelse(is.na(tool$실무경력), "3~7년 이하", tool$실무경력)
tool$실무경력 <- ifelse(tool$실무경력=="", "3~7년 이하", tool$실무경력)
barplot(table(tool$실무경력), col=c(1,2,3,4))
nrow(tool)
# check if any na
sum(is.na(tool))
tool$사용도구 <- as.factor(tool$사용도구)
tool$사용도구 <-factor(as.numeric(tool$사용도구),levels = c(4,1,2,3),
labels = c("파이썬", "R", "SAS","기타"))
plot(tool$사용도구)
tool$연령대 <- as.factor(tool$연령대)
plot(tool$연령대)
tool$실무경력 <- as.factor(tool$실무경력)
levels(tool$실무경력)
tool$실무경력 <- factor(as.numeric(tool$실무경력),levels = c(2,1,3,4),
labels = c("1년미만", "1~3년이하", "3~7년이하","7년초과"))
plot(tool$실무경력)
tool$주업무 <- as.factor(tool$주업무)
tool$주업무 <-factor(as.numeric(tool$주업무),levels = c(1,4,2,5,3),
labels = c("AI/머신러닝", "데이터분석", "IT","마케팅,기획,공정관리등현업","기타"))
plot(tool$주업무)
tool$기관유형 <- as.factor(tool$기관유형)
tool$기관유형 <-factor(as.numeric(tool$기관유형),levels = c(4,1,3,2),
labels = c("민간기업", "공공기관", "대학/연구기관","기타"))
plot(tool$기관유형)
barplot(table(tool$사용도구), col=c(1,2,3,4),
main='주로 사용하는 데이터 분석 도구는?')
library(party)
ct100 <- ctree(사용도구~.,data=tool,
controls = ctree_control(minsplit=4,minbucket=2,maxdepth=3))
plot(ct100)
nrow(tool)
# check if any na
sum(is.na(tool))
library(randomForest)
fit <- randomForest(사용도구~.,
data=tool,
importance=TRUE,
ntree=1000)# ntree 변화에 따른 오차율 변화 확인
plot(fit)
varImpPlot(fit, main='RF VarImp on 주사용도구',
pch=19)
library(ggplot2)
library(gridExtra)
# 주업무별 사용도구
g3 <- ggplot(tool,aes(주업무,fill=사용도구))+geom_bar(position='dodge')+ggtitle("주업무별 사용도구")+theme_classic ()+theme(plot.title=element_text(face="bold", size=20, vjust=2))
g4 <- ggplot(tool,aes(주업무,fill=사용도구))+geom_bar(position='fill')+ggtitle("주업무별 사용도구")+theme_light()+theme(plot.title=element_text(face="bold", size=20, vjust=2))+geom_text(aes(label=scales::percent(..count../sum(..count..))),stat='count',position=position_fill(vjust=0.5))
grid.arrange(g3,g4, ncol=2)
# 실무경력별 사용도구
p3 <- ggplot(tool,aes(실무경력,fill=사용도구))+geom_bar(position='dodge')+ggtitle("실무경력별 사용도구")+theme_classic ()+theme(plot.title=element_text(face="bold", size=17, vjust=2))
p4 <- ggplot(tool,aes(실무경력,fill=사용도구))+geom_bar(position='fill')+ggtitle("실무경력별 사용도구")+theme_light()+theme(plot.title=element_text(face="bold", size=17, vjust=2))+geom_text(aes(label=scales::percent(..count../sum(..count..))),stat='count',position=position_fill(vjust=0.5))
grid.arrange(p3,p4, ncol=2)
# 연령대별 사용도구
p5 <- ggplot(tool,aes(연령대,fill=사용도구))+geom_bar(position='dodge')+ggtitle("연령대별 사용도구")+theme_classic ()+theme(plot.title=element_text(face="bold", size=17, vjust=2))
p6 <- ggplot(tool,aes(연령대,fill=사용도구))+geom_bar(position='fill')+ggtitle("연령대별 사용도구")+theme_light()+theme(plot.title=element_text(face="bold", size=17, vjust=2))+geom_text(aes(label=scales::percent(..count../sum(..count..))),stat='count',position=position_fill(vjust=0.5))
grid.arrange(p5,p6, ncol=2)
# 기관유형별 사용도구
p7 <- ggplot(tool,aes(기관유형,fill=사용도구))+geom_bar(position='dodge')+ggtitle("기관유형별 사용도구")+theme_classic ()+theme(plot.title=element_text(face="bold", size=17, vjust=2))
p8 <- ggplot(tool,aes(기관유형,fill=사용도구))+geom_bar(position='fill')+ggtitle("기관유형별 사용도구")+theme_light()+theme(plot.title=element_text(face="bold", size=17, vjust=2))+geom_text(aes(label=scales::percent(..count../sum(..count..))),stat='count',position=position_fill(vjust=0.5))
grid.arrange(p7,p8, ncol=2)
# 범주형을 숫자형으로
# 범주형 구간거리의 중간값으로 변환
# 연령대 숫자형으로 변환
tool$연령대_N <- ifelse(tool$연령대=="24~34세", 29, 0)
tool$연령대_N <- ifelse(tool$연령대=="35~54세", 45, tool$연령대_N)
tool$연령대_N <- ifelse(tool$연령대=="55세 이상", 60, tool$연령대_N)
# 실무경력을 숫자형으로 변환
tool$실무경력_N <- ifelse(tool$실무경력=="1년미만", 0.5, 0)
tool$실무경력_N <- ifelse(tool$실무경력=="1~3년이하", 2, tool$실무경력_N)
tool$실무경력_N <- ifelse(tool$실무경력=="3~7년이하", 5, tool$실무경력_N)
tool$실무경력_N <- ifelse(tool$실무경력=="7년초과", 10, tool$실무경력_N)
library(ggplot2)
ggplot(tool,aes(연령대_N,실무경력_N,col=사용도구))+geom_point(size=3)+geom_jitter()
ggplot(tool,aes(사용도구, fill=사용도구))+geom_bar(position='dodge') +
theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
facet_grid(실무경력~주업무)+ggtitle('주업무별실무경력별 사용도구 분포') +
theme(plot.title = element_text(size = 5, face = "bold"))
'R 데이터 분석' 카테고리의 다른 글
[KDATA VDXF] 금융분석 R (0) | 2019.07.27 |
---|---|
[KDATA PLOT EDA retail] 플롯 그리기 (0) | 2019.06.08 |
[kdata 2019 recsys 0030] retail recommender using R[전용준 리비젼 recsys r] (0) | 2019.05.18 |
[AI Summit workshop] rf anomaly 1206 (0) | 2018.11.30 |
GameLog-In 데이터준비 (0) | 2018.10.16 |