설문조사를 분석하고 시각화하는데 좋은 자료가 있어서 포스팅을 한다.
자료는 아래서 참조하였다.
ref.
corazzon / KaggleStruggle / kaggle-survey-2017 / Kaggle-ML-DS-survey-2017-EDA-FAQ.ipynb
https://github.com/corazzon/KaggleStruggle/blob/master/kaggle-survey-2017/Kaggle-ML-DS-survey-2017-EDA-FAQ.ipynb
분석에 필요한 자료는 아래링크에서 Data탭에 들어가면 구할 수 있다.
https://www.kaggle.com/kaggle/kaggle-survey-2017
=========================== Python ===========================
import pprint
import pandas as pd
import numpy as np
from scipy import stats
import matplotlib.pyplot as plt
# 이미지를 그려주는 모듈.
import seaborn as sns
# 데이터 프레임의 컬럼을 최대 12개로 늘린다.
pd.set_option('display.max_columns', 12)
# schema.csv를 question 객체에 담기
question = pd.read_csv('schema.csv')
# multipleChoiceResponses.csv를 mcq에 담기. encoding='ISO-8859-1'은 범용적으로 사용되는 인코딩이다.
mcq = pd.read_csv('multipleChoiceResponses.csv', encoding='ISO-8859-1', low_memory=False)
# 한국 자료를 따로 설정해준다.
korea = mcq.loc[mcq.Country == 'South Korea']
# 전세계에서 사용되는 언어를 플롯으로 시각화
# sns.countplot(y='LanguageRecommendationSelect', data=mcq)
# plt.show()
# 한국에서는 어떤 언어를 쓰는지 표로 확인
# korea_df_lan = pd.DataFrame(korea.LanguageRecommendationSelect.value_counts())
# print(korea_df_lan)
# 어떤 직군의 사람들이 데이터 분석을 하는지 countplot으로 확인
# sns.countplot(y='CurrentJobTitleSelect', data=mcq)
# plt.show()
# 현재하고 있는 일에 대한 응답수.
# .notnull()인 값을 행렬구조로 표현
# print(mcq[mcq['CurrentJobTitleSelect'].notnull()].shape) # (11830, 228). notnull은 11830개
# .notnull()인 값을 다시 불러오고 그걸 행렬구조로 표현
# print(mcq[mcq['CurrentJobTitleSelect'].notnull()].CurrentJobTitleSelect.shape) # (11830,)
# print(mcq[mcq['CurrentJobTitleSelect'].notnull()]['CurrentJobTitleSelect'].shape) # (11830,)
# 파이썬과 R을 선택한 사람의 직업군은 어떻게 되는지를 확인
# data = mcq[(mcq['CurrentJobTitleSelect'].notnull()) &
# (mcq['LanguageRecommendationSelect'] == 'Python') |
# (mcq['LanguageRecommendationSelect'] == 'R')]
# print(data.shape) # 데이터 확인. (7737, 228)
# hue는 y에 들어가 있는 데이터를 설정한 카테고리로 나눠주는 역할을 한다. hue에는 빛깔, 색조, 유형의 의미가 있다.
# ref. https://seaborn.pydata.org/generated/seaborn.countplot.html
# sns.countplot(y='CurrentJobTitleSelect', hue='LanguageRecommendationSelect', data=data)
# plt.show()
# 머신러닝 도구를 앞으로 어떤 걸 쓸것인지 사람들의 생각을 확인해보는 설문
# 각 항목을 카운트한다.
mcq_ml_tool_count = pd.DataFrame(mcq['MLToolNextYearSelect'].value_counts())
# 위에서 얻은 갯수를 비율을 구한다.
mcq_ml_tool_percent = pd.DataFrame(mcq['MLToolNextYearSelect'].value_counts(normalize=True))
# .merge()를 이용해서 갯수와 비율을 합쳐 하나의 데이터프레임으로 만든다.
mcq_ml_tool_df = mcq_ml_tool_count.merge(mcq_ml_tool_percent, left_index=True, right_index=True)
# print(mcq_ml_tool_df.head()) # 데이터 확인
'''
'결과'
MLToolNextYearSelect_x MLToolNextYearSelect_y
TensorFlow 2621 0.238316
Python 1713 0.155756
R 910 0.082742
Spark / MLlib 755 0.068649
Hadoop/Hive/Pig 417 0.037916
'''
# 컬럼명 변경
mcq_ml_tool_df.columns = ['응답수', '비율']
# print(mcq_ml_tool_df.head()) # 데이터 확인
'''
'결과'
응답수 비율
TensorFlow 2621 0.238316
Python 1713 0.155756
R 910 0.082742
Spark / MLlib 755 0.068649
Hadoop/Hive/Pig 417 0.037916
'''
### 위의 응답수를 파이차트로 만들기
# index값이 항목명이므로 이것을 범례로 잡는다.
labels = mcq_ml_tool_df.index.values.tolist()
# 파이차트의 값으로 사용할 것을 지정
values = mcq_ml_tool_df['응답수']
# 파이차트 작성
# plt.pie(values, labels=labels)
# plt.show()
### 위의 응답수를 막대그래프로 만들기
# 상위 10개만 선택하여 data 객체로 만든다.
data = mcq['MLToolNextYearSelect'].value_counts().head(10)
# sns.barplot(y=data.index, x=data) # y는 인덱스인 항목명, x에는 응답수를 넣는다.
# plt.show()
=========================== Python ===========================
'데이터 분석 > 데이터 분석 프로젝트' 카테고리의 다른 글
[설문조사 분석] Python으로 분석한 Kaggle 2017 Survey -4 (0) | 2018.06.27 |
---|---|
[설문조사 분석] Python으로 분석한 Kaggle 2017 Survey -3 (1) | 2018.06.25 |
[설문조사 분석] Python으로 분석한 Kaggle 2017 Survey -1 (0) | 2018.06.21 |
[Python] 네이버 금융 데이터를 크롤링하여 주식 데이터를 얻고 특정 종목에 대한 '종가-날짜' 반응형 그래프 만들기 (0) | 2018.06.18 |
[시계열, 트렌드 분석] 단역배우 자매 사망 사건의 시계열 및 트렌드 분석 -2(개요, 관심도 변화) (0) | 2018.06.14 |