2021/01/22 - [공부/3. 데이터 사이언스] - [부스트코스] 캐글 실습 : 설문조사 응답 분석 (4)
ㄴ 이전글 이어서...
Q3. 어디에서 데이터 사이언스를 배워야 할까요?
1) 'LearningPlatformSelect'
- 다중 선택이 가능한 열이었기 때문에 분리해서 s에 저장
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'
> 첫번째 줄. 항목들을 ','로 구분해서 분리해야함. 분리해서 원래 있던 'LearningPlatformSelect' 자리에 저장. lambda 함수
> 두번째 줄 (s= ...). pd.Series 함수를 이용해 한 항목씩 분리해서 저장
- 시각화
plt.figure(figsize=(6,8))
data = s[s != 'nan'].value_counts().head(15)
sns.barplot(y=data.index, x=data)
2) LearningCategory가 들어간 질문들을 찾아봄
qc = question.loc[question[
'Column'].str.contains('LearningCategory')]
print(qc.shape)
qc
3) LearningPlatformUsefulness : 학습 플랫폼과 유용함의 연관성을 찾아보기
use_features = [x for x in mcq.columns
if x.find('LearningPlatformUsefulness') != -1 ]
#['LearningPlatformUsefulnessArxiv',
# 'LearningPlatformUsefulnessBlogs',
# 'LearningPlatformUsefulnessCollege',
# 'LearningPlatformUsefulnessCompany',
# 'LearningPlatformUsefulnessConferences',
# 'LearningPlatformUsefulnessFriends', ...
* find(' ') != -1 : -1이 아니면 해당 문자열을 포함하고 있는 것.
- fdf={} 딕셔너리에 각 플랫폼 별로 Very useful / Somewhat useful / Not Useful의 비율을 저장하기 (for 문 이용)
fdf = {}
for feature in use_features:
a = mcq[feature].value_counts()
a = a/a.sum()
fdf[feature[len('LearningPlatformUsefulness'):]] = a
> 'LearningPlatformUsefulnessArxiv'를 넣어서 for 문 해석하기
df={}
a = mcq['LearningPlatformUsefulnessArxiv'].value_counts()
print(a)
#Very useful 1316
#Somewhat useful 1038
#Not Useful 37
#Name: LearningPlatformUsefulnessArxiv, dtype: int64
a=a/a.sum()
print(a)
#Very useful 0.550397
#Somewhat useful 0.434128
#Not Useful 0.015475
#Name: LearningPlatformUsefulnessArxiv, dtype: float64
'LearningPlatformUsefulnessArxiv'[len('LearningPlatformUsefulness'):]
df['LearningPlatformUsefulnessArxiv'[len('LearningPlatformUsefulness'):]]=a
df
#{'Arxiv': Very useful 0.550397
# Somewhat useful 0.434128
# Not Useful 0.015475
# Name: LearningPlatformUsefulnessArxiv, dtype: float64}
- '매우 유용함'을 기준으로 내림차순 정렬한 것을 데이터 프레임 fdf에 저장
fdf = pd.DataFrame(fdf).transpose().sort_values(
'Very useful', ascending=False)
- 시각화 heatmap
# 학습플랫폼들이 얼마나 유용한지에 대한 상관관계를 그려본다.
plt.figure(figsize=(10,10))
sns.heatmap(
fdf.sort_values(
"Very useful", ascending=False), annot=True)
- 시각화 plot
# 유용함의 정도를 각 플랫폼별로 그룹화 해서 본다.
fdf.plot(kind='bar', figsize=(10,4),
title="Usefullness of Learning Platforms")
plt.xticks(rotation=60, ha='right')
4) 학습 플랫폼 별 도움이 되는 정도 보기
cat_features = [x for x in mcq.columns if x.find(
'LearningCategory') != -1]
cdf = {}
for feature in cat_features:
cdf[feature[len('LearningCategory'):]] = mcq[feature].mean()
# 파이차트를 그리기 위해 평균 값을 구해와서 담아준다.
cdf = pd.Series(cdf)
cdf
#SelftTaught 33.366771
#OnlineCourses 27.375514
#Work 15.217593
#University 16.988607
#Kaggle 5.531434
#Other 1.795940
#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()
728x90
'데이터 어쩌구 > 전처리 및 시각화' 카테고리의 다른 글
[부스트코스] 캐글 실습 : 설문조사 응답 분석 (7) (0) | 2021.01.25 |
---|---|
[부스트코스] 캐글 실습 : 설문조사 응답 분석 (6) (0) | 2021.01.25 |
[부스트코스] 캐글 실습 : 설문조사 응답 분석 (4) (0) | 2021.01.22 |
[부스트코스] 캐글 실습 : 설문조사 응답 분석 (3) (0) | 2021.01.21 |
[부스트코스] 캐글 실습 : 설문조사 응답 분석 (2) (0) | 2021.01.20 |