분석 시작 글
5. 복수 응답의 두 변수를 이용한 Cross Table
1 ) Cross Table
Q3는 사용자의 성별을, Q12는 사용자가 정기적으로 사용하는 프로그래밍언어를 묻는 질문이었다. Q12의 경우 Q2와 달리 해당되는 것을 모두 선택하는 multiple choice question이 었기 때문에 groupby를 이용하여 이 전의 방법과 다른 방법으로 Cross Table을 만들고 이를 바탕으로 plot을 그린다.
# Q12
question.filter(regex = "Q12")[0]
'What programming languages do you use on a regular basis? (Select all that apply) - Selected Choice - Python'
# A12
answer.filter(regex = "Q12")
“|” 기호와 텍스트의 끝맺음을 의미하는 “&”기호를 사용해 Q12와 Q2에 대한 응답을 함께 출력한다. 만약 regex = “Q12|Q3로 필터링 할 경우 Q3이 포함된 Q13, Q23 과 같은 결과들이 함께 출력 될 것이다. 따라서 “&” 기호를 사용해야한다.
q3q12 = answer.filter(regex = "Q12|Q3&")
q3q12
이제 이 테이블을 합치기 위해 groupby함수를 사용한다. Q3을 기준으로 groupby 하고, counting하면 다음과 같이 나타낸다.
q3q12.groupby("Q3").count()
테이블은 완성되었지만 컬럼명을 보면 Q12_1, Q12_2와 같이 질문에 대한 숫자만 있을 뿐, 어떤 프로그래밍 언어인지 알 수 없다. 이러한 점을 수정하기 위해 Q12_1 부터 Q12_15까지의 고유한 값을 가져와 그것을 컬럼명으로 설정해야한다.
컬럼명 가져오기
answer.filter(regex = "Q12").describe()
이 전에 단일 응답에 대한 cross table을 만들 때 사용했던 describe() 결과를 보면 top값이 각 컬럼에서 가장 많이 갖고 있는 값으로, 각각의 고유값이라고 할 수 있다. 이를 리스트화 해 위의 count table의 컬럼명으로 지정한다.
# top값 리스트 화
answer.filter(resgex = "Q12").describe().loc["top"].tolist()
['Python', 'R', 'SQL', 'C', 'C#', 'C++', 'Java', 'Javascript', 'Bash', 'PHP', 'MATLAB', 'Julia', 'Go', 'None', 'Other']
q12_cols = answer.filter(regex = "Q12").describe().loc["top"].tolist()
# Cross Table을 q3q12_count라는 변수에 저장
q3q12_count = q3q12.groupby("Q3").count()
# q3q12_count의 컬럼명에 q12_cols를 지정
q3q12_count.columns = q12_cols
q3q12_count
2 ) 기본 plot 그리기
가장 기본적으로 python에 내장된 plot 함수를 사용해 막대 그래프를 그릴 수 있다.
q3q12_count.plot.bar()
여기서 Man과 Woman에 대한 결과만을 확인한다. 또한 색깔의 구분을 프로그래밍 언어가 아닌 성별로 하기 위해선 전치해야한다.
q3q12_count.loc[["Man", "Woman"]].T
q3q12_count.loc[["Man", "Woman"]].T.plot.bar()
위 그래프를 가로로 나타낼 경우 bar() 대신 barh()를 사용한다. 또한 plot의 막대를 값이 큰 것부터 정렬하려면 sort_values()를 추가한다.
# 가로 막대를 정렬
q3q12_count.loc[["Man", "Woman"]].T.sort_values("Woman").plot.barh()
'Study > Python' 카테고리의 다른 글
[Python]pandas를 이용한 2022 kaggle survey 분석 및 시각화 - 6 (0) | 2023.04.28 |
---|---|
[Python]pandas를 이용한 2022 kaggle survey 분석 및 시각화 - 5 (1) | 2023.04.26 |
[Python]pandas를 이용한 2022 kaggle survey 분석 및 시각화 - 3 (0) | 2023.04.13 |
[Python]pandas를 이용한 2022 kaggle survey 분석 및 시각화 - 2 (1) | 2023.04.11 |
[Python]pandas를 이용한 2022 kaggle survey 분석 및 시각화 - 1 (0) | 2023.04.04 |