설문조사 응답 분석 2

자주 묻는 말 FAQ

  • 초보자들이 묻는 가장 일반적인 질문에 대한 답을 시각화해본다.

Q1. Python과 R중 어떤 언어를 배워야 할까요?

sns.countplot(y='LanguageRecommendationSelect', data=mcq)

png

파이선을 명확하게 선호하고 있는 것으로 보이며, 전문가와 강사들이 선호하는 언어를 알아본다.

# 현재 하는 일
sns.countplot(y=mcq['CurrentJobTitleSelect'])

png

# 현재 하는 일에 대한 전체 응답 수
mcq[mcq['CurrentJobTitleSelect'].notnull()]['CurrentJobTitleSelect'].shape

(11830,)

# 현재 하는 일에 대해 응답을 해준 사람 중 Python과 R을 사용하는 사람
# 응답자들이 실제 업무에서 어떤 언어를 주로 사용하는지 볼 수 있다.
data = mcq[(mcq['CurrentJobTitleSelect'].notnull()) & (
 (mcq['LanguageRecommendationSelect'] == 'Python') | (
 mcq['LanguageRecommendationSelect'] == 'R'))]
print(data.shape)
plt.figure(figsize=(8, 10))
sns.countplot(y='CurrentJobTitleSelect',
 hue='LanguageRecommendationSelect',
 data=data)

(7158, 228)

png

데이터사이언티스트들은 Python을 주로 사용하지만, R을 사용하는 사람들도 제법 된다. 하지만 소프트웨어 개발자들은 Python을 훨씬 더 많이 사용하며, Python보다 R을 더 많이 사용하는 직업군은 통계 학자들이다.

Q2. 데이터 사이언스 분야에서 앞으로 크게 주목받을 것은 무엇일까요?

  • 관련 분야의 종사자가 아니더라도 빅데이터, 딥러닝, 뉴럴네트워크 같은 용어에 대해 알고 있다. 응답자들이 내년에 가장 흥미로운 기술이 될 것이라 응답한 것이다.

데이터사이언스 툴

mcq_ml_tool_count = pd.DataFrame(
 mcq['MLToolNextYearSelect'].value_counts())
mcq_ml_tool_percent = pd.DataFrame(
 mcq['MLToolNextYearSelect'].value_counts(normalize=True))
mcq_ml_tool_df = mcq_ml_tool_count.merge(
 mcq_ml_tool_percent,
 left_index=True,
 right_index=True).head(20)
mcq_ml_tool_df.columns = ['응답 수', '비율']
mcq_ml_tool_df
응답 수 비율
TensorFlow 2621 0.238316
Python 1713 0.155756
R 910 0.082742
Spark / MLlib 755 0.068649
Hadoop/Hive/Pig 417 0.037916
Other 407 0.037007
Amazon Machine Learning 392 0.035643
Jupyter notebooks 358 0.032551
I don't plan on learning a new tool/technology 341 0.031006
Google Cloud Compute 296 0.026914
Amazon Web services 273 0.024823
Julia 222 0.020185
DataRobot 220 0.020004
Microsoft Azure Machine Learning 220 0.020004
IBM Watson / Waton Analytics 194 0.017640
C/C++ 186 0.016912
Tableau 150 0.013639
SQL 138 0.012548
Java 116 0.010547
MATLAB/Octave 115 0.010456
data = mcq['MLToolNextYearSelect'].value_counts().head(20)
sns.barplot(y=data.index, x=data)

png

구글의 딥러닝 프레임워크 텐서플로우가 23%로 가장 많은 관심을 받을 것이라 응답했다.
그리고 Python이 15%, R은 8%로 따르고 있다.

클라우드는 Amazon ML, GCP, AWS, MS Azure ML, IBM Watson 순으로 응답하였다.

데이터사이언스 방법 Data Science Methods

data = mcq['MLMethodNextYearSelect'].value_counts().head(15)
sns.barplot(y=data.index, x=data)

png

응답에 대한 통계를 보면 딥러닝과 뉴럴넷이 엄청나게 인기가 있을 것이고 시계열 분석, 베이지안, 텍스트 마이닝 등의 내용이 있다. 중간쯤에 부스팅과 배깅 같은 앙상블 메소드도 있다.

Q3. 어디에서 데이터 사이언스를 배워야 할까요?

mcq['LearningPlatformSelect'] = mcq['LearningPlatformSelect'].astype('str').apply(lambda x: x.split(','))
s = mcq.apply(
 lambda x: pd.Series(x['LearningPlatformSelect']),
 axis=1).stack().reset_index(level=1, drop=True)
s.name = 'platform'
plt.figure(figsize=(6,8))
data = s[s != 'nan'].value_counts().head(15)
sns.barplot(y=data.index, x=data)

png

  • Kaggle은 우리 응답자들 사이에서 가장 인기 있는 학습 플랫폼
  • 그러나 이 설문 조사를 한 곳이 Kaggle이기 때문에 응답이 편향되었을 수 있음
  • 온라인 코스, 스택 오버플로 및 유튜브 (YouTube) 상위 5대 최우수 학습 플랫폼은 대학 학위나 교과서의 중요도보다 높다.
# 설문내용과 누구에게 물어봤는지를 찾아봄
qc = question.loc[question[
 'Column'].str.contains('LearningCategory')]
print(qc.shape)
qc

(7, 3)

Column Question Asked
91 LearningCategorySelftTaught What percentage of your current machine learni... All
92 LearningCategoryOnlineCourses What percentage of your current machine learni... All
93 LearningCategoryWork What percentage of your current machine learni... All
94 LearningCategoryUniversity What percentage of your current machine learni... All
95 LearningCategoryKaggle What percentage of your current machine learni... All
96 LearningCategoryOther What percentage of your current machine learni... All
97 LearningCategoryOtherFreeForm What percentage of your current machine learni... All
use_features = [x for x in mcq.columns if x.find(
 'LearningPlatformUsefulness') != -1]
# 학습플랫폼과 유용함에 대한 연관성을 살펴본다.
fdf = {}
for feature in use_features:
 a = mcq[feature].value_counts()
 a = a/a.sum()
 fdf[feature[len('LearningPlatformUsefulness'):]] = a

fdf = pd.DataFrame(fdf).transpose().sort_values(
 'Very useful', ascending=False)

# 학습플랫폼들이 얼마나 유용한지에 대한 상관관계를 그려본다.
plt.figure(figsize=(10,10))
sns.heatmap(
 fdf.sort_values(
 "Very useful", ascending=False), annot=True)

png

# 유용함의 정도를 플랫폼별로 그룹화해서 본다.
fdf.plot(kind='bar', figsize=(20,8),
 title="Usefullness of Learning Platforms")

png

실제로 프로젝트를 해보는 것에 대해 74.7%의 응답자가 응답했고 매우 유용하다고 표시했다. SO는 스택오버플로우가 아닐까 싶고, 캐글, 수업, 책이 도움이 많이 되는 편이다. 팟캐스트는 매우 유용하지 않지만 때때로 유용하다는 응답은 가장 많았다.

cat_features = [x for x in mcq.columns if x.find(
 'LearningCategory') != -1]
cat_features

['LearningCategorySelftTaught',
'LearningCategoryOnlineCourses',
'LearningCategoryWork',
'LearningCategoryUniversity',
'LearningCategoryKaggle',
'LearningCategoryOther']

cdf = {}
for feature in cat_features:
 cdf[feature[len('LearningCategory'):]] = mcq[feature].mean()

# 파이 차트를 그리기 위해 평균값을 구해와서 담아준다.
cdf = pd.Series(cdf)
cdf

Kaggle 5.531434
OnlineCourses 27.375514
Other 1.795940
SelftTaught 33.366771
University 16.988607
Work 15.217593
dtype: float64

# 학습 플랫폼별 도움이 되는 정도를 그려본다.
plt.pie(cdf, labels=cdf.index,
 autopct='%1.1f%%', shadow=True, startangle=140)
plt.axis('equal')
plt.title("Contribution of each Platform to Learning")
plt.show()

png

개인 프로젝트를 해보는 것이 가장 많은 도움이 되었으며, 온라인코스와 대학, 업무 그다음으로 캐글을 통해 배웠다고 응답하였다.

Q4. 데이터 과학을 위해 높은 사양의 컴퓨터가 필요한가요?

# 설문내용과 누구에게 물어봤는지를 찾아봄
qc = question.loc[question[
 'Column'].str.contains('HardwarePersonalProjectsSelect')]
print(qc.shape)
qc

(1, 3)

Column Question Asked
74 HardwarePersonalProjectsSelect Which computing hardware do you use for your p... Learners
mcq[mcq['HardwarePersonalProjectsSelect'].notnull()][
 'HardwarePersonalProjectsSelect'].shape

(4206,)

mcq['HardwarePersonalProjectsSelect'
 ] = mcq['HardwarePersonalProjectsSelect'
 ].astype('str').apply(lambda x: x.split(','))
s = mcq.apply(lambda x:
 pd.Series(x['HardwarePersonalProjectsSelect']),
 axis=1).stack().reset_index(level=1, drop=True)
s.name = 'hardware'
s = s[s != 'nan']
pd.DataFrame(s.value_counts())
hardware
Basic laptop (Macbook) 2246
Laptop + Cloud service (AWS 669
GCE ...) 669
Azure 669
Gaming Laptop (Laptop + CUDA capable GPU) 641
Traditional Workstation 527
Laptop or Workstation and local IT supported servers 445
GPU accelerated Workstation 416
Workstation + Cloud service 174
Other 147

맥북을 사용하는 응답자가 가장 많고, 랩탑과 함께 클라우드를 사용하는 사람들이 그다음이고 적당한 GPU를 가진 게임용 노트북을 사용하는 사례가 그다음이다.

Q5. 데이터 사이언스 공부에 얼마나 많은 시간을 사용하는지?

plt.figure(figsize=(6, 8))
sns.countplot(y='TimeSpentStudying',
 data=mcq,
 hue='EmploymentStatus'
 ).legend(loc='center left',
 bbox_to_anchor=(1, 0.5))

png

풀타임으로 일하는 사람들은 2~10시간 일하는 비율이 높으며, 풀타임으로 일하는 사람보다 일을 찾고 있는 사람들이 더 많은 시간을 공부하는 편이다.

하지만 응답자 중 대부분이 풀타임으로 일하고 있는 사람들이라는 것을 고려할 필요가 있다.

figure, (ax1, ax2) = plt.subplots(ncols=2)

figure.set_size_inches(12,5)
sns.countplot(x='TimeSpentStudying',
 data=full_time,
 hue='EmploymentStatus', ax=ax1
 ).legend(loc='center right',
 bbox_to_anchor=(1, 0.5))

sns.countplot(x='TimeSpentStudying',
 data=looking_for_job,
 hue='EmploymentStatus', ax=ax2
 ).legend(loc='center right',
 bbox_to_anchor=(1, 0.5))

png