설문조사를 분석하고 시각화하는데 좋은 자료가 있어서 포스팅을 한다.

자료는 아래서 참조하였다.

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 ===========================

+ Recent posts