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()