
캐글에서 실시한 설문조사 내용을 시각화해보고 간단히 분석해보려 한다.


low_memory=False : 여러 타입 섞여있어서 이거 설정하라고 떴음.
.head()로 미리보기 찍어봄.
question 변수에 넣음. 35개의 질문이 들어있음.
answer 변수에 넣어서 응답 내용을 따로 모음.raw.drop? 해보면 'axis=0'이라고 나옴 = '행 기준 삭제'가 기본값임을 알 수 있음)
.info()로 정보 확인해보니, object 데이터 355개라는 걸 알 수 있음.
.value_counts()를 쓰면 value별 빈도 수를 출력해줌.
normalize=True : 빈도를 비율로 출력할 수 있음.
.plot()을 붙여서 바로 그래프로 볼 수 있음..sort_index() : 인덱스 기준으로 정렬함.
sns.countplot() : data와 x값을 지정해주면 그릴 수 있음.
.set_title() : 제목 설정 / palette : 색상 테마 설정

어차피 countplot 그리는 걸 반복해야 하니까 이걸 함수로 만들면 편하겠는걸?
show_countplot_by_qno : 질문 번호(qno)만 입력해주면 그 질문에 대한 countplot 그려주는 함수를 만듦.
.set_title(), palette 등의 세부설정을 추가함.fsize와 order는 (전달 따로 안 했을 때 적용될) 기본값을 설정해둠❗
?로 호출했을 때 그 설명을 띄워줄 수 있음.fsize와 order도 따로 전달값 넣으면 임의로 설정할 수 있음❗





여기까지는 다 그냥 show_countplot_by_qno 함수로 간편하게 countplot 그릴 수 있었음.Q7부터는 질문:답변=1:1이 아니라서 위에서 만든 함수 그대로 쓰면 오류 발생 ㅠ ..
.filter()⭐를 활용해 Q7에 대한 열을 가져옴!regex='Q7' : 정규표현식(regular expression)으로 'Q7' 들어가는 건 다 가져오도록 함. 🆚그냥 Q7만 넣으면 딱 'Q7'이라고 적힌 것만 가져와서 우리가 의도한 대로 안됨!!
.split()으로 다시 쪼개고 그 중 첫 번째 조각 가져옴 = 최종 질문!
.filter()와 regex 써서 Q7에 대한 열을 가져옴.
.describe() : 기술통계치를 보여줌 (top : 최빈값 / freq : top값의 빈도수) → .set_index() 로 top 값을 인덱스로 만들면, 그게 곧 응답 내용!
.sort_values() : 원하는 값을 기준으로 정렬할 수 있음. (➕이렇게 출력한 빈도값에 그대로 .plot() 붙여서 그래프로 볼 수도 있음)
sns.barplot()으로 막대그래프 그림. (역시 색상, 제목 등 옵션 설정 가능)
자 그럼, 이렇게 복수선택형 질문(Q7~)에 대해서도 시각화 할 줄 알게 되었다! 그렇다면 (countplot처럼) 얘도 함수로 만들어 볼까? ㅎㅎ방금 위에서 한 과정에 모두 함수를 적용해보자


show_multiple_choice_bar_plot_by_qno : 이것도 역시 위 <barplot으로 그려보기>에서 했던 내용 그대로 가져와서 함수로 구현함.


show_plot_by_qno로 통합해버림.








등등 ,, 너무 길어져서 자세한 내용은 캐글에서 확인..!한 발 더 나아가, 이제는 두 질문을 엮어서 보는 방법에 대해 알아보자.
ex) 연령에 대한 응답(Q1)을 성별(Q2)에 따라 나눠서 보고 싶어!
pd.crosstab(항목1, 항목2) : 두 질문의 빈도를 함께 보는 교차빈도표 출력함.

.plot.bar() 사용 / rot는 label 각도 회전 설정.plot.barh() 사용
.countplot()hue : 지정한 카테고리 값에 따라 색을 다르게 지정할 수 있음.
.crosstab() 사용 불가...
.filter() 활용 + regex에서 |(or)로 두 질문 함께 출력 가능!$ : 입력한 문자로 끝나는 것만 가져옴. / ^ : 입력한 문자로 시작하는 것만 가져옴.

crosstab으로 구할 수 없음..groupby()⭐ → 'Q2' 기준으로 그룹화하고, .count()로 빈도 수 구함!
.describe() 활용해서 top값 가져옴.

.plot.bar(), .plot.barh() 등으로 시각화 가능함!

.sort_values()로 정렬하려고 하면

.str.split()으로 양 끝값을 분리시켜 따로 다룰 수 있도록 함.

expand=True : 데이터프레임 형태로 확장해줄 수 있음.
.str.replace()로 숫자 아닌 것들 없애고, .astype(int)로 정수화 함.$는 그냥 쓰면 정규표현식으로 이해해버려서, 탈출문자\ 써줘야 함!)
.sort_values()를 사용하면 정렬 제대로 됨!
.barplot() 쓰면 그래프도 의도대로 잘 그려짐!

근데 보통 임금은 나라마다 차이가 있으니, 나라별로 구분해서도 한번 봅시다!

.isin()을 통한 불리언 인덱싱을 활용해 미국의 데이터만 가져와 봄.

.range, .tolist() 사용)

.isin()에 들어있는 것만 바꿔주면 됨^^
show_plot_by_qno 함수로, 25번부터 마저 살펴보면 됨.



import os에서 캐글로 경로설정된 부분만 지우거나 주석처리 > pd.read.csv 해오는 것도 내가 따로 데이터 다운 받아와서 내 폴더에서 직접 불러와도 됨 ㅇㅇ


❓<응답 출력하는 함수> 파트에서
sort_values쓸 때, 왜 저번에는 없던by라는 매개변수가 붙나요..?👨🏻🏫 함수는 def 함수명(parameter=argument) 으로 사용할 수 있습니다.
parameter 이름을 지정하고 함수나 메서드를 호출할 수도 있으며, 순서대로 argument 만 지정해서 호출할 수도 있습니다. 또, *args, **kwargs 를 사용할 수도 있습니다. 🆗