본문 바로가기

Python/Exploratory Data Analysis

Part03 Chapter.03 탐색적 데이터 분석 03. Case2. Kaggle Survey(실습)

Kaggle Survey 소개


  • Kaggle이라는 Data Science Community가 있다. Kaggle에서는 매년 Kaggle 사용자들을 중심으로 설문조사를 시행한다. 해당 설문조사 결과는 전세계에 뛰어난 Data Scientist들이 어떻게 일하고 어떤 것들을 공부하고 있는지 알 수 있는 좋은 자료이다.
  • 이번에 사용하는 데이터셋은 2021 Kaggle Machine Learning Survey 데이터셋을 사용하는 Kaggler들에 대해 살펴보려고 한다.

 

 

0. 데이터 소개


  • 데이터의 첫번째 Row에는 각 질문이 어떤 것이었는지 대한 내용이 적혀 있다.
  • 해당 데이터가 어떻게 수집되었는지, 활용하려면 어떻게 해야하는지 관심 있는 사람들은 해당 데이터셋을 다운로드 하면 supplementary_data 폴더에서 해당 내용을 확인할 수 있다.
  • 아래 링크에서 데이터를 다운로드 받아보자. 해당 데이터셋을 받기 위해서는 Kaggle에 회원가입이 되어있어야 하며, 대회 규정에 대해 동의하여야 한다.

Source : https://www.kaggle.com/c/kaggle-survey-2021/data 

 

 

 

1. 라이브러리 및 데이터 불러오기


import numpy as np  
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns 

pd.options.display.max_rows = 100  
# 판다스에서 표시할 수 있는 row의 디폴트를 100개까지 표시한다.

import warnings
warnings.filterwarnings('ignore')

 

 

# 데이터 경로를 적고, kaggle_survey_2021_responese.csv 파일을 불러오자.

base_path = " 경로 "
ex) "C:/Users/JIN SEONG EUN/Desktop/빅데이터 분석가 과정/Part3. 파이썬 기초와 데이터분석/data/kaggle-survey-2021/"
survey = pd.read_csv(base_path + "kaggle_survey_2021_responses.csv")
survey

 

2. 데이터 전처리


# 불러온 dataframe의 정보를 요약 정보를 확인하자.

 

survey.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 25974 entries, 0 to 25973
Columns: 369 entries, Time from Start to Finish (seconds) to Q38_B_OTHER
dtypes: object(369)
memory usage: 73.1+ MB

 

# 열이 369개나 있다.  그래서 전체적인 정보를 확인하기 힘들다,

# survey.iloc[ : ,  : 7 ] 이런식으로 원하는 콜롬을 추출해야한다.

 

survey.iloc[ : , :15].info( )
>>> 
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 25974 entries, 0 to 25973
Data columns (total 15 columns):
 #   Column                               Non-Null Count  Dtype 
---  ------                               --------------  ----- 
 0   Time from Start to Finish (seconds)  25974 non-null  object
 1   Q1                                   25974 non-null  object
 2   Q2                                   25974 non-null  object
 3   Q3                                   25974 non-null  object
 4   Q4                                   25974 non-null  object
 5   Q5                                   25974 non-null  object
 6   Q6                                   25974 non-null  object
 7   Q7_Part_1                            21861 non-null  object
 8   Q7_Part_2                            5335 non-null   object
 9   Q7_Part_3                            10757 non-null  object
 10  Q7_Part_4                            4710 non-null   object
 11  Q7_Part_5                            5536 non-null   object
 12  Q7_Part_6                            4770 non-null   object
 13  Q7_Part_7                            4333 non-null   object
 14  Q7_Part_8                            306 non-null    object
dtypes: object(15)
memory usage: 3.0+ MB

 

# null이 많아서 dropna 로 null값을 날려버리면 다날라감

 

survey.dropna()

 

 

# 그러므로 이렇게 하면 안됨

 

 

 

3. 한국사람 찾기


# 잘라온 데이터에서 한국은 어떤 텍스트로 표현이 되는지 찾아보자.
# survey.Q3.value_counts()  : Q3의 값을 보자
# survey.Q3.unique() : Q3열에 있는 답중 중복이 안되는 답을 나열해준다.

 

survey.Q3.value_counts()
더보기
India                                                   7434
United States of America                                2650
Other                                                   1270
Japan                                                    921
China                                                    814
Brazil                                                   751
Russia                                                   742
Nigeria                                                  702
United Kingdom of Great Britain and Northern Ireland     550
Pakistan                                                 530
Egypt                                                    482
Germany                                                  470
Spain                                                    454
Indonesia                                                444
Turkey                                                   416
France                                                   401
South Korea                                              359
Taiwan                                                   334
Canada                                                   331
Bangladesh                                               317
Italy                                                    311
Mexico                                                   279
Viet Nam                                                 277
Australia                                                264
Kenya                                                    248
Colombia                                                 225
Poland                                                   219
Iran, Islamic Republic of...                             195
Ukraine                                                  186
Argentina                                                182
Singapore                                                182
Malaysia                                                 156
Netherlands                                              153
South Africa                                             146
Morocco                                                  140
Israel                                                   138
Thailand                                                 123
Portugal                                                 119
Peru                                                     117
United Arab Emirates                                     111
Tunisia                                                  109
Philippines                                              108
Sri Lanka                                                106
Chile                                                    102
Greece                                                   102
Ghana                                                     99
Saudi Arabia                                              89
Ireland                                                   84
Sweden                                                    81
Hong Kong (S.A.R.)                                        79
Nepal                                                     75
Switzerland                                               71
I do not wish to disclose my location                     69
Belgium                                                   65
Czech Republic                                            63
Romania                                                   61
Belarus                                                   51
Austria                                                   51
Ecuador                                                   50
Denmark                                                   48
Uganda                                                    47
Kazakhstan                                                45
Norway                                                    45
Algeria                                                   44
Ethiopia                                                  43
Iraq                                                      43
In which country do you currently reside?                  1
Name: Q3, dtype: int64

 

 

survey.Q3.unique()
array(['In which country do you currently reside?', 'India', 'Indonesia',
       'Pakistan', 'Mexico', 'Russia', 'Turkey', 'Australia', 'Nigeria',
       'Greece', 'Belgium', 'Japan', 'Egypt', 'Singapore', 'Brazil',
       'Poland', 'China', 'Iran, Islamic Republic of...',
       'United States of America', 'Italy', 'Viet Nam', 'Israel', 'Peru',
       'South Africa', 'Other', 'Spain', 'Bangladesh',
       'United Kingdom of Great Britain and Northern Ireland', 'France',
       'Switzerland', 'Algeria', 'Tunisia', 'Argentina', 'Sweden',
       'Colombia', 'I do not wish to disclose my location', 'Canada',
       'Chile', 'Netherlands', 'Ukraine', 'Saudi Arabia', 'Romania',
       'Morocco', 'Austria', 'Taiwan', 'Kenya', 'Belarus', 'Ireland',
       'Portugal', 'Hong Kong (S.A.R.)', 'Denmark', 'Germany',
       'South Korea', 'Philippines', 'Sri Lanka', 'United Arab Emirates',
       'Uganda', 'Ghana', 'Malaysia', 'Thailand', 'Nepal', 'Kazakhstan',
       'Ethiopia', 'Iraq', 'Ecuador', 'Norway', 'Czech Republic'],
      dtype=object)

 

# survey.Q3.str.contains("Korea")  :  Korea 라는 답변을 가진 행을 True로 반환한다. (Masking)

 

survey.Q3.str.contains("Korea")

>>>
    0        False
    1        False
    2        False
    3        False
    4        False
             ...  
    25969    False
    25970    False
    25971    False
    25972    False
    25973    False
    Name: Q3, Length: 25974, dtype: bool

 

# survey[survey.Q3.str.contains("Korea")]["Q3"] : Korea라는 답변을 가진 행을 True로 반환하는 행들을 모아서 보여주고, 그 행들 중 Q3열을 보여준다.

# survey.loc[survey.Q3.str.contains("Korea"),"Q3"].unique() : 위와 동일하면서, 그중에서 답변이 중복되는 것을 제외하고 나열해준다.

 

survey.loc[survey.Q3.str.contains("Korea"),"Q3"]
>>>
    276      South Korea
    373      South Korea
    410      South Korea
    482      South Korea
    492      South Korea
                ...     
    25497    South Korea
    25628    South Korea
    25842    South Korea
    25867    South Korea
    25968    South Korea
    Name: Q3, Length: 359, dtype: object

 

survey.loc[survey.Q3.str.contains("Korea"),"Q3"].unique()
>>>
    array(['South Korea'], dtype=object)

 

# 한국 사람들을 불러와 보자! Q3 == "South Korea"

 

korean = survey.loc[survey.Q3 == "South Korea"]
korean

 

 

 

 

성별에 대한 분석


korean.Q2.value_counts()
>>> 
    Man                  283
    Woman                 72
    Prefer not to say      4
    Name: Q2, dtype: int64

 

 

# 성별에 해당하는 column의 countplot을 그려보자.

plt.figure(figsize= (8,6))
sns.countplot(data= korean, x="Q2")
plt.show()

 

 

최종학력에 대한 분석


# 최종학력에 해당하는 column의 countplot을 그려보자.

plt.figure(figsize= (8,6))
sns.countplot(data= korean, y="Q4", palette= "Set2")
plt.show()

 

 

# 그렇다면 전체 이용자의 최종학력을 분석해보자

 

plt.figure(figsize= (8,6))
sns.countplot(data= survey[1:] , y="Q4", palette= "Set2") # 앞에 질문 없앨려면 [1:] 붙이면됨
plt.show()

 

 

 

4. 각 나라별 학력 통계 계산하기


  • pivot table을 이용하여 나라별 통계를 계산해보자!

 

pivot table 만들기

 

countries = pd.pivot_table(data = survey.loc[1: , ["Q3","Q4"] ], index= "Q3" ,columns= "Q4", aggfunc= {"Q4" : "count"}, fill_value= 0)
countries  # fill_value= 0 null값을 0으로 만들기

 

특정 국가 가져오기


# 미국과 캐나다를 가져와 보자.

 

canada = countries.loc["Canada"]
usa = countries.loc["United States of America"]

display(usa)
display(canada)
    Q4                                                               
Q4  Bachelor’s degree                                                     714
    Doctoral degree                                                       436
    I prefer not to answer                                                 30
    Master’s degree                                                      1235
    No formal education past high school                                   18
    Professional doctorate                                                 45
    Some college/university study without earning a bachelor’s degree     172
Name: United States of America, dtype: int64
    Q4                                                               
Q4  Bachelor’s degree                                                    104
    Doctoral degree                                                       57
    I prefer not to answer                                                 5
    Master’s degree                                                      130
    No formal education past high school                                   3
    Professional doctorate                                                 3
    Some college/university study without earning a bachelor’s degree     29
Name: Canada, dtype: int64

 

usa.plot(kind="barh")

 

 

canada.plot(kind="barh")

 

 

# 이름을 붙여 보자

 

plt.figure(figsize=(6,12))

plt.subplot(2,1,1)
plt.title("the highest level of formal education in USA",fontsize=14)
usa.plot(kind="barh")
plt.subplot(2,1,2)
plt.title("the highest level of formal education in CANADA",fontsize=14)
canada.plot(kind="barh")
plt.show()

 

 

 

5. 프로그래밍 언어 선호도 분석


  • 어떤 column을 가져와야 할까?
  • Q7과 관련된 column들은 어떻게 다 가져올까?

 

survey.Q7_Part_1[0]
'What programming languages do you use on a regular basis? (Select all that apply) - Selected Choice - Python'

 

survey

 

프로그래밍 언어 선호도를 포함하는 column들을 불러오기

startswith() : 지정한 문자열로 시작하면 True, 그렇지 않다면 False를 반환합니다.

# survey.columns.str.startswith("Q7")  # masking 하는것
Q7_columns = survey.columns[survey.columns.str.startswith("Q7")]
survey[["Q3"]+list(Q7_columns)]

 

 

언어별 정보가 합쳐진 DataFrame 만들기


q7_list = [ ]

for _, row in survey[Q7_columns][1:].iterrows():
    q7_list.append(row[~row.isnull()].values)   # 디폴프로 콜롬 방향으로 for문이 돈다, 로우방향으로 돌리기 위해서는 iterrows() 를 사용해야한다.
                                                # print(row[~row.isnull()].values)   # 각 row별로 응답한 정보만 리스트로 출력 
                                                # 마스킹된것에 ~붙이면 반대가 됨, 즉 null이 아닌 것이 나옴
q7_list[:2]

 

[array(['Python', 'R'], dtype=object),
 array(['SQL', 'C', 'C++', 'Java'], dtype=object)]

 

언어별 정보가 합쳐진 q7_list를 survey에 PL열로 합치자.

 

survey["PL"] = ["PL"] + q7_list
survey

 

 

 

한국인 응답자의 데이터만 뽑아보자.


korean = survey.loc[survey.Q3 == "South Korea", ["Q3"] + list(Q7_columns)]
korean

 

 

 

countplot을 그리기


 

# 디폴프로 콜롬 방향으로 for문이 돈다, 로우방향으로 돌리기 위해서는 iterrows() 를 사용해야한다.
# print(row[~row.isnull()].values)   # 각 row별로 응답한 정보만 리스트로 출력 
# 마스킹된것에 ~붙이면 반대가 됨, 즉 null이 아닌 것이 나옴
# df.values.tolist()  전체 값 리스트(2차원 리스트로 출력)

q7_list = [ ]

for _, row in korean[Q7_columns][1:].iterrows():               
    q7_list.append(row[~row.isnull()].values.tolist())         
                                                               
                                                               
    q7_list

 

더보기
[['Python', 'SQL', 'Java', 'Javascript'],
 ['Python'],
 ['Java', 'Javascript'],
 ['Python', 'C', 'C++'],
 ['Python'],
 ['MATLAB'],
 ['Python', 'R'],
 ['Python', 'R', 'Javascript'],
 ['C'],
 ['Python', 'R'],
 ['Python', 'C', 'C++', 'Java'],
 ['Python'],
 ['Python'],
 ['Python'],
 ['Python', 'C++'],
 ['Python', 'R', 'SQL', 'C', 'MATLAB'],
 ['Python', 'R', 'SQL', 'MATLAB'],
 ['Python', 'R'],
 ['Python', 'SQL'],
 ['Python'],
 ['Python', 'R'],
 ['SQL'],
 ['Python', 'SQL', 'C', 'C++', 'Bash', 'MATLAB'],
 ['None'],
 ['None'],
 ['Python', 'SQL'],
 ['Python'],
 ['Python'],
 ['Python'],
 ['Python', 'SQL'],
 ['Python', 'R', 'C', 'Java'],
 ['C'],
 ['Python', 'SQL'],
 ['Python', 'R', 'C++'],
 ['Python'],
 ['Python'],
 ['Python', 'C', 'MATLAB'],
 ['Python', 'R'],
 ['Python', 'SQL'],
 ['Python', 'C', 'C++'],
 ['Python'],
 ['Python', 'C', 'C++', 'Javascript', 'MATLAB'],
 ['Python', 'C', 'C++', 'MATLAB'],
 ['Python', 'R'],
 ['Python', 'MATLAB'],
 ['Python', 'SQL'],
 ['Python'],
 ['Python', 'SQL', 'Java'],
 ['Python', 'R', 'C'],
 ['Python', 'C'],
 ['Python'],
 ['Other'],
 ['Python', 'C', 'C++', 'Java', 'Javascript'],
 ['Python'],
 ['Python'],
 ['Python', 'R'],
 ['Python', 'R', 'C'],
 ['Python', 'C'],
 ['Python', 'R', 'SQL', 'C', 'C++', 'Java', 'Swift'],
 ['Python', 'R'],
 ['R', 'SQL', 'C', 'Java', 'Javascript'],
 ['Python', 'Javascript', 'Bash'],
 ['Python'],
 ['Python'],
 ['Python', 'SQL'],
 ['Python', 'C', 'C++', 'Javascript'],
 ['Python', 'SQL', 'Java'],
 [],
 ['Python', 'R'],
 ['Python', 'R'],
 ['Python', 'C++'],
 ['Python'],
 ['Python', 'R', 'SQL'],
 ['Python', 'R'],
 ['Python', 'C'],
 ['Python'],
 ['Swift', 'Other'],
 ['R'],
 ['Python', 'R'],
 ['Python'],
 ['Python', 'Javascript', 'MATLAB'],
 ['SQL', 'Java', 'Javascript', 'Other'],
 ['R'],
 ['Python'],
 ['Python', 'SQL', 'Javascript', 'Other'],
 ['Python', 'SQL', 'Java'],
 ['Python', 'R', 'SQL', 'C', 'C++'],
 [],
 ['Python', 'R', 'SQL', 'Java', 'Javascript'],
 ['Python', 'C', 'C++'],
 ['Python', 'C', 'C++'],
 ['Python', 'R'],
 ['Python'],
 ['Python', 'C', 'Java'],
 ['Python'],
 ['C'],
 ['R', 'SQL', 'C', 'C++'],
 ['Python', 'SQL', 'Java'],
 ['Python'],
 ['None'],
 ['Python', 'C', 'C++'],
 ['Python', 'C++', 'Bash'],
 ['Python', 'SQL', 'Java', 'Bash'],
 ['Python', 'MATLAB'],
 ['Python', 'C'],
 [],
 [],
 ['Python'],
 ['SQL', 'C', 'Java'],
 ['Python'],
 ['Python', 'SQL', 'C', 'Java', 'Javascript'],
 ['Python', 'C++'],
 ['Python', 'C', 'MATLAB'],
 ['Python', 'C'],
 ['Python', 'Javascript'],
 ['Python', 'R', 'SQL'],
 ['Python', 'Swift'],
 ['Python', 'C', 'Other'],
 ['Python', 'R'],
 ['Python', 'C', 'C++'],
 ['Python', 'R', 'SQL'],
 ['Python'],
 ['Python'],
 ['Python'],
 ['Python', 'R', 'Java'],
 ['Python', 'R', 'SQL', 'Javascript'],
 ['Python'],
 ['Python', 'C'],
 ['Python'],
 [],
 [],
 ['Python', 'Java'],
 ['Python', 'SQL'],
 ['Python', 'R'],
 ['Python'],
 ['Python', 'MATLAB'],
 ['Python', 'C++'],
 ['C', 'C++', 'Java'],
 ['Python'],
 ['Python', 'MATLAB'],
 ['Python'],
 ['Python'],
 ['Python', 'SQL', 'C'],
 ['Python', 'C', 'C++'],
 ['Python'],
 ['Python', 'C', 'Java'],
 ['Python'],
 ['Python', 'C', 'Java', 'Javascript', 'Other'],
 ['Python', 'SQL', 'C++', 'Java', 'Javascript'],
 ['Python', 'Javascript'],
 ['R', 'C'],
 ['R'],
 ['Python'],
 ['Python'],
 ['Python', 'R'],
 ['Python', 'R'],
 ['R'],
 ['Python', 'SQL'],
 ['Python'],
 ['Python', 'R'],
 ['Python', 'R', 'SQL', 'C++', 'Javascript'],
 ['Python'],
 ['Other'],
 ['Python', 'R'],
 [],
 ['Python', 'R'],
 ['Python'],
 ['Python', 'C', 'C++', 'MATLAB'],
 ['Python', 'C'],
 ['R', 'SQL', 'Java', 'Javascript'],
 ['Python'],
 ['Python', 'Bash'],
 ['Python', 'C', 'C++', 'Java'],
 ['Python', 'SQL', 'Java'],
 ['Python'],
 ['Python', 'R', 'SQL'],
 ['Python'],
 ['Other'],
 ['Python', 'R', 'SQL', 'C', 'C++', 'Julia', 'Swift', 'Bash'],
 ['C++', 'Java'],
 ['Python', 'R'],
 ['Python', 'R', 'SQL'],
 ['Python', 'Java', 'MATLAB'],
 ['SQL', 'C++', 'Javascript', 'MATLAB'],
 ['Python'],
 ['Python'],
 ['Python', 'SQL'],
 ['Python', 'SQL', 'C++'],
 ['Python', 'MATLAB'],
 ['Python'],
 ['Python', 'R', 'SQL'],
 ['R', 'SQL', 'C'],
 ['C++'],
 ['Python'],
 ['Python'],
 ['Python'],
 ['Python'],
 ['Python', 'SQL', 'C', 'Java', 'MATLAB'],
 ['Python'],
 ['Python', 'C', 'C++', 'MATLAB'],
 [],
 [],
 ['Python', 'R', 'SQL', 'Javascript'],
 ['Python'],
 ['Java'],
 ['Python', 'MATLAB'],
 ['Python', 'R', 'SQL', 'Java', 'Javascript'],
 ['Python', 'C', 'C++'],
 ['Python', 'R', 'SQL'],
 ['R'],
 ['Python', 'R'],
 ['Python', 'C++'],
 ['Python', 'SQL', 'Java'],
 ['Python', 'MATLAB'],
 ['Python', 'R', 'MATLAB'],
 ['Python', 'Javascript'],
 ['Python', 'SQL', 'C', 'C++', 'MATLAB'],
 ['Python'],
 ['Python', 'R'],
 ['Python', 'C++'],
 ['Python'],
 ['Python'],
 ['Python', 'SQL', 'Java'],
 ['Python'],
 ['Python', 'R', 'SQL'],
 ['Python', 'C', 'C++', 'Java', 'Javascript'],
 ['Python', 'C'],
 ['Python'],
 ['Python', 'C'],
 ['Python', 'R'],
 ['Python', 'C++', 'Java'],
 ['Python', 'C'],
 ['Python', 'C', 'C++', 'Bash'],
 ['Python', 'SQL'],
 ['Python', 'SQL', 'Javascript', 'Other'],
 ['R'],
 ['Python', 'C', 'Bash', 'MATLAB'],
 ['Python', 'C++'],
 ['Python', 'SQL', 'C', 'C++', 'Java', 'Javascript', 'Bash'],
 ['Python'],
 ['Python', 'R', 'SQL', 'Java', 'Javascript'],
 ['Python', 'R', 'C', 'C++', 'Java', 'MATLAB'],
 [],
 ['Python'],
 ['Python', 'R'],
 ['C', 'C++', 'Java', 'Javascript'],
 ['Python', 'R'],
 ['Python', 'C++'],
 ['Python', 'C++'],
 ['Python', 'R', 'SQL', 'C', 'Java'],
 ['Python', 'C', 'C++', 'MATLAB'],
 ['Python', 'SQL'],
 ['Python'],
 ['Python', 'R'],
 ['Python', 'SQL', 'Java', 'Javascript'],
 ['Python', 'R', 'SQL', 'C++', 'Java'],
 ['Python', 'C', 'Java', 'Bash'],
 ['Python'],
 ['Python', 'R', 'SQL', 'Other'],
 ['Python'],
 ['Python'],
 ['SQL', 'C++'],
 ['Python'],
 ['Python', 'R', 'MATLAB'],
 ['Swift'],
 ['Python'],
 ['Python'],
 ['Python'],
 ['R'],
 ['Python', 'C'],
 ['SQL', 'C++', 'Javascript', 'Swift', 'Bash'],
 ['Python', 'R', 'SQL', 'MATLAB'],
 ['Python', 'Bash', 'Other'],
 ['Python', 'C++', 'MATLAB'],
 ['Python'],
 ['Python', 'C++', 'Javascript'],
 ['Python', 'C++'],
 ['Python'],
 ['Python'],
 ['R', 'SQL'],
 ['Python'],
 ['Python', 'R', 'SQL'],
 ['Python'],
 ['Python'],
 [],
 ['Python', 'C++', 'Javascript'],
 ['Python', 'R'],
 ['Python', 'SQL', 'Java', 'Javascript'],
 ['Python', 'C++'],
 ['Python'],
 ['Python', 'C', 'C++', 'Java'],
 ['Python', 'C'],
 [],
 ['Python', 'R', 'SQL', 'C', 'C++', 'Java', 'Javascript'],
 ['Python', 'C', 'C++', 'Julia', 'MATLAB'],
 ['Python', 'C', 'MATLAB'],
 ['Python', 'C'],
 ['Python', 'C'],
 ['Python', 'R', 'C'],
 ['Python', 'SQL', 'C'],
 ['Python', 'SQL'],
 ['Python', 'SQL'],
 ['Python', 'R', 'MATLAB'],
 ['Python'],
 ['Python', 'MATLAB'],
 ['Python', 'C', 'C++', 'Java', 'Javascript'],
 [],
 ['Python'],
 ['Python', 'R', 'MATLAB'],
 ['Python', 'Java', 'MATLAB'],
 ['Python'],
 ['MATLAB'],
 ['Python', 'SQL', 'Java'],
 ['Python', 'Java'],
 ['C', 'C++'],
 ['Python', 'SQL', 'Java'],
 ['Python', 'R', 'SQL', 'C'],
 ['Python'],
 ['Python', 'C++'],
 ['Python', 'C', 'C++', 'MATLAB'],
 ['R'],
 ['Python', 'R', 'SQL', 'C', 'C++', 'Java', 'Javascript'],
 ['Python', 'SQL', 'C', 'C++', 'Other'],
 ['Python', 'SQL', 'Java', 'Javascript'],
 ['Python', 'C', 'MATLAB'],
 ['Python'],
 ['Python', 'SQL'],
 ['Python'],
 ['Python', 'R'],
 ['Python'],
 ['Python'],
 ['SQL', 'Java', 'Javascript', 'Other'],
 ['Python'],
 ['Python', 'SQL'],
 ['Python', 'C'],
 ['Python', 'SQL', 'C'],
 ['Python', 'R'],
 ['Python'],
 ['Python', 'R', 'SQL', 'Java'],
 ['Java', 'Javascript'],
 ['Python', 'SQL'],
 ['Python', 'SQL'],
 ['Python', 'C++', 'Java'],
 ['Python', 'Bash'],
 ['Python', 'R', 'Javascript'],
 ['Python', 'R'],
 ['Python', 'C++'],
 ['Python', 'C++'],
 ['Python'],
 ['Python', 'R'],
 ['Python', 'SQL'],
 ['Python', 'SQL', 'Javascript', 'Other'],
 ['Python', 'C++', 'Other'],
 ['Python', 'SQL'],
 ['Python', 'R'],
 ['Python'],
 ['R'],
 ['Python', 'SQL', 'Bash']]

 

 

# q7_list에 있는 모든 프로그램 언어를 한 리스트에 합치자

q7_data = []

for row in q7_list:
    q7_data = q7_data + row
    
q7_data

 

더보기
['Python',
 'SQL',
 'Java',
 'Javascript',
 'Python',
 'Java',
 'Javascript',
 'Python',
 'C',
 'C++',
 'Python',
 'MATLAB',
 'Python',
 'R',
 'Python',
 'R',
 'Javascript',
 'C',
 'Python',
 'R',
 'Python',
 'C',
 'C++',
 'Java',
 'Python',
 'Python',
 'Python',
 'Python',
 'C++',
 'Python',
 'R',
 'SQL',
 'C',
 'MATLAB',
 'Python',
 'R',
 'SQL',
 'MATLAB',
 'Python',
 'R',
 'Python',
 'SQL',
 'Python',
 'Python',
 'R',
 'SQL',
 'Python',
 'SQL',
 'C',
 'C++',
 'Bash',
 'MATLAB',
 'None',
 'None',
 'Python',
 'SQL',
 'Python',
 'Python',
 'Python',
 'Python',
 'SQL',
 'Python',
 'R',
 'C',
 'Java',
 'C',
 'Python',
 'SQL',
 'Python',
 'R',
 'C++',
 'Python',
 'Python',
 'Python',
 'C',
 'MATLAB',
 'Python',
 'R',
 'Python',
 'SQL',
 'Python',
 'C',
 'C++',
 'Python',
 'Python',
 'C',
 'C++',
 'Javascript',
 'MATLAB',
 'Python',
 'C',
 'C++',
 'MATLAB',
 'Python',
 'R',
 'Python',
 'MATLAB',
 'Python',
 'SQL',
 'Python',
 'Python',
 'SQL',
 'Java',
 'Python',
 'R',
 'C',
 'Python',
 'C',
 'Python',
 'Other',
 'Python',
 'C',
 'C++',
 'Java',
 'Javascript',
 'Python',
 'Python',
 'Python',
 'R',
 'Python',
 'R',
 'C',
 'Python',
 'C',
 'Python',
 'R',
 'SQL',
 'C',
 'C++',
 'Java',
 'Swift',
 'Python',
 'R',
 'R',
 'SQL',
 'C',
 'Java',
 'Javascript',
 'Python',
 'Javascript',
 'Bash',
 'Python',
 'Python',
 'Python',
 'SQL',
 'Python',
 'C',
 'C++',
 'Javascript',
 'Python',
 'SQL',
 'Java',
 'Python',
 'R',
 'Python',
 'R',
 'Python',
 'C++',
 'Python',
 'Python',
 'R',
 'SQL',
 'Python',
 'R',
 'Python',
 'C',
 'Python',
 'Swift',
 'Other',
 'R',
 'Python',
 'R',
 'Python',
 'Python',
 'Javascript',
 'MATLAB',
 'SQL',
 'Java',
 'Javascript',
 'Other',
 'R',
 'Python',
 'Python',
 'SQL',
 'Javascript',
 'Other',
 'Python',
 'SQL',
 'Java',
 'Python',
 'R',
 'SQL',
 'C',
 'C++',
 'Python',
 'R',
 'SQL',
 'Java',
 'Javascript',
 'Python',
 'C',
 'C++',
 'Python',
 'C',
 'C++',
 'Python',
 'R',
 'Python',
 'Python',
 'C',
 'Java',
 'Python',
 'C',
 'R',
 'SQL',
 'C',
 'C++',
 'Python',
 'SQL',
 'Java',
 'Python',
 'None',
 'Python',
 'C',
 'C++',
 'Python',
 'C++',
 'Bash',
 'Python',
 'SQL',
 'Java',
 'Bash',
 'Python',
 'MATLAB',
 'Python',
 'C',
 'Python',
 'SQL',
 'C',
 'Java',
 'Python',
 'Python',
 'SQL',
 'C',
 'Java',
 'Javascript',
 'Python',
 'C++',
 'Python',
 'C',
 'MATLAB',
 'Python',
 'C',
 'Python',
 'Javascript',
 'Python',
 'R',
 'SQL',
 'Python',
 'Swift',
 'Python',
 'C',
 'Other',
 'Python',
 'R',
 'Python',
 'C',
 'C++',
 'Python',
 'R',
 'SQL',
 'Python',
 'Python',
 'Python',
 'Python',
 'R',
 'Java',
 'Python',
 'R',
 'SQL',
 'Javascript',
 'Python',
 'Python',
 'C',
 'Python',
 'Python',
 'Java',
 'Python',
 'SQL',
 'Python',
 'R',
 'Python',
 'Python',
 'MATLAB',
 'Python',
 'C++',
 'C',
 'C++',
 'Java',
 'Python',
 'Python',
 'MATLAB',
 'Python',
 'Python',
 'Python',
 'SQL',
 'C',
 'Python',
 'C',
 'C++',
 'Python',
 'Python',
 'C',
 'Java',
 'Python',
 'Python',
 'C',
 'Java',
 'Javascript',
 'Other',
 'Python',
 'SQL',
 'C++',
 'Java',
 'Javascript',
 'Python',
 'Javascript',
 'R',
 'C',
 'R',
 'Python',
 'Python',
 'Python',
 'R',
 'Python',
 'R',
 'R',
 'Python',
 'SQL',
 'Python',
 'Python',
 'R',
 'Python',
 'R',
 'SQL',
 'C++',
 'Javascript',
 'Python',
 'Other',
 'Python',
 'R',
 'Python',
 'R',
 'Python',
 'Python',
 'C',
 'C++',
 'MATLAB',
 'Python',
 'C',
 'R',
 'SQL',
 'Java',
 'Javascript',
 'Python',
 'Python',
 'Bash',
 'Python',
 'C',
 'C++',
 'Java',
 'Python',
 'SQL',
 'Java',
 'Python',
 'Python',
 'R',
 'SQL',
 'Python',
 'Other',
 'Python',
 'R',
 'SQL',
 'C',
 'C++',
 'Julia',
 'Swift',
 'Bash',
 'C++',
 'Java',
 'Python',
 'R',
 'Python',
 'R',
 'SQL',
 'Python',
 'Java',
 'MATLAB',
 'SQL',
 'C++',
 'Javascript',
 'MATLAB',
 'Python',
 'Python',
 'Python',
 'SQL',
 'Python',
 'SQL',
 'C++',
 'Python',
 'MATLAB',
 'Python',
 'Python',
 'R',
 'SQL',
 'R',
 'SQL',
 'C',
 'C++',
 'Python',
 'Python',
 'Python',
 'Python',
 'Python',
 'SQL',
 'C',
 'Java',
 'MATLAB',
 'Python',
 'Python',
 'C',
 'C++',
 'MATLAB',
 'Python',
 'R',
 'SQL',
 'Javascript',
 'Python',
 'Java',
 'Python',
 'MATLAB',
 'Python',
 'R',
 'SQL',
 'Java',
 'Javascript',
 'Python',
 'C',
 'C++',
 'Python',
 'R',
 'SQL',
 'R',
 'Python',
 'R',
 'Python',
 'C++',
 'Python',
 'SQL',
 'Java',
 'Python',
 'MATLAB',
 'Python',
 'R',
 'MATLAB',
 'Python',
 'Javascript',
 'Python',
 'SQL',
 'C',
 'C++',
 'MATLAB',
 'Python',
 'Python',
 'R',
 'Python',
 'C++',
 'Python',
 'Python',
 'Python',
 'SQL',
 'Java',
 'Python',
 'Python',
 'R',
 'SQL',
 'Python',
 'C',
 'C++',
 'Java',
 'Javascript',
 'Python',
 'C',
 'Python',
 'Python',
 'C',
 'Python',
 'R',
 'Python',
 'C++',
 'Java',
 'Python',
 'C',
 'Python',
 'C',
 'C++',
 'Bash',
 'Python',
 'SQL',
 'Python',
 'SQL',
 'Javascript',
 'Other',
 'R',
 'Python',
 'C',
 'Bash',
 'MATLAB',
 'Python',
 'C++',
 'Python',
 'SQL',
 'C',
 'C++',
 'Java',
 'Javascript',
 'Bash',
 'Python',
 'Python',
 'R',
 'SQL',
 'Java',
 'Javascript',
 'Python',
 'R',
 'C',
 'C++',
 'Java',
 'MATLAB',
 'Python',
 'Python',
 'R',
 'C',
 'C++',
 'Java',
 'Javascript',
 'Python',
 'R',
 'Python',
 'C++',
 'Python',
 'C++',
 'Python',
 'R',
 'SQL',
 'C',
 'Java',
 'Python',
 'C',
 'C++',
 'MATLAB',
 'Python',
 'SQL',
 'Python',
 'Python',
 'R',
 'Python',
 'SQL',
 'Java',
 'Javascript',
 'Python',
 'R',
 'SQL',
 'C++',
 'Java',
 'Python',
 'C',
 'Java',
 'Bash',
 'Python',
 'Python',
 'R',
 'SQL',
 'Other',
 'Python',
 'Python',
 'SQL',
 'C++',
 'Python',
 'Python',
 'R',
 'MATLAB',
 'Swift',
 'Python',
 'Python',
 'Python',
 'R',
 'Python',
 'C',
 'SQL',
 'C++',
 'Javascript',
 'Swift',
 'Bash',
 'Python',
 'R',
 'SQL',
 'MATLAB',
 'Python',
 'Bash',
 'Other',
 'Python',
 'C++',
 'MATLAB',
 'Python',
 'Python',
 'C++',
 'Javascript',
 'Python',
 'C++',
 'Python',
 'Python',
 'R',
 'SQL',
 'Python',
 'Python',
 'R',
 'SQL',
 'Python',
 'Python',
 'Python',
 'C++',
 'Javascript',
 'Python',
 'R',
 'Python',
 'SQL',
 'Java',
 'Javascript',
 'Python',
 'C++',
 'Python',
 'Python',
 'C',
 'C++',
 'Java',
 'Python',
 'C',
 'Python',
 'R',
 'SQL',
 'C',
 'C++',
 'Java',
 'Javascript',
 'Python',
 'C',
 'C++',
 'Julia',
 'MATLAB',
 'Python',
 'C',
 'MATLAB',
 'Python',
 'C',
 'Python',
 'C',
 'Python',
 'R',
 'C',
 'Python',
 'SQL',
 'C',
 'Python',
 'SQL',
 'Python',
 'SQL',
 'Python',
 'R',
 'MATLAB',
 'Python',
 'Python',
 'MATLAB',
 'Python',
 'C',
 'C++',
 'Java',
 'Javascript',
 'Python',
 'Python',
 'R',
 'MATLAB',
 'Python',
 'Java',
 'MATLAB',
 'Python',
 'MATLAB',
 'Python',
 'SQL',
 'Java',
 'Python',
 'Java',
 'C',
 'C++',
 'Python',
 'SQL',
 'Java',
 'Python',
 'R',
 'SQL',
 'C',
 'Python',
 'Python',
 'C++',
 'Python',
 'C',
 'C++',
 'MATLAB',
 'R',
 'Python',
 'R',
 'SQL',
 'C',
 'C++',
 'Java',
 'Javascript',
 'Python',
 'SQL',
 'C',
 'C++',
 'Other',
 'Python',
 'SQL',
 'Java',
 'Javascript',
 'Python',
 'C',
 'MATLAB',
 'Python',
 'Python',
 'SQL',
 'Python',
 'Python',
 'R',
 'Python',
 'Python',
 'SQL',
 'Java',
 'Javascript',
 'Other',
 'Python',
 'Python',
 'SQL',
 'Python',
 'C',
 'Python',
 'SQL',
 'C',
 'Python',
 'R',
 'Python',
 'Python',
 'R',
 'SQL',
 'Java',
 'Java',
 'Javascript',
 'Python',
 'SQL',
 'Python',
 'SQL',
 'Python',
 'C++',
 'Java',
 'Python',
 'Bash',
 'Python',
 'R',
 'Javascript',
 'Python',
 'R',
 'Python',
 'C++',
 'Python',
 'C++',
 'Python',
 'Python',
 'R',
 'Python',
 'SQL',
 'Python',
 'SQL',
 'Javascript',
 'Other',
 'Python',
 'C++',
 'Other',
 'Python',
 'SQL',
 'Python',
 'R',
 'Python',
 'R',
 'Python',
 'SQL',
 'Bash']

 

 

 

from collections import Counter
counter = Counter(q7_data)
# Counter() : 문자열이나, list 의 요소를 카운팅하여 많은 순으로 딕셔너리형태로 리턴한다

df = pd.DataFrame({"Languages": counter.keys(), "Count": counter.values()})
df

 

 

plt.figure(figsize=(8,6))
sns.barplot(data=df, x = "Count", y = "Languages" )
plt.show()