Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- SGD
- coursera
- 데이터 엔지니어링
- recommendation system
- 코테
- 추천시스템
- 알고리즘
- 웹크롤링
- Cosine-similarity
- 부스트캠프
- 딥러닝
- Overfitting
- 코딩테스트
- 웹스크래핑
- 분산 시스템
- 머신러닝
- 데이터
- Python
- 추천 시스템
- TF-IDF
- Tensor
- wordcloud
- 파이썬
- 시각화
- 프로그래머스
- 협업 필터링
- 백준
- pytorch
- selenium
- codingtest
Archives
- Today
- Total
개발자식
[데이터 분석] Seaborn, 통계 자료 분석 (4) 본문
12. 데이터 살펴보기
gu_df.head(3)
검거율 기준으로 오름차순 정렬하기
- sort_values 활용
gu_df.sort_values(by='검거율', ascending=False, inplace=True) # ascending=False : 내림차순, inplace=True : 덮어쓰기
- ascending= False : 내림차순 정렬
- inplace=True : 덮어쓰기
13. 데이터 시각화
13-0. 라이브러리 불러오기
import seaborn as sns
import matplotlib.pyplot as plt
from matplotlib import font_manager, rc # rc == run configure(configuration file)
13-1. 히트맵(Heatmap) 그리기
sns.heatmap(gu_df[['강간', '강도', '살인', '절도', '폭력']])
히트맵 : X축과 Y축에 2개의 범주형 자료의 계급별로 연속형 자료를 집계한 자료를 사용하여, 집계한 값에 비례하여 색깔을 다르게 해서 2차원으로 자료를 시각화
출력 결과 :
문제점 : 한글이 깨진다, 색깔 구분이 잘 안 된다
13-2. 한글 깨짐 해결
# jupyter notebook 내에 figure를 보여주기
%matplotlib inline
# matplotlib의 한글문제를 해결
font_name = font_manager.FontProperties(fname="c:/Windows/Fonts/malgun.ttf").get_name() #폰트 이름에 한글이 있거나 공백이 존재하면 error 가능성 있음
# font_name
rc('font', family=font_name)
13-3. 색깔 구분 해결
이유 : 강도, 살인은 십의 자리인 반면 절도, 폭력은 백의 자리~천의 자리로 자릿수가 다르다 (=스케일)
해결 : Feature scaling = Feature Normalization
방법 1) Min_Max algorithm
- 값이 딱 떨어지고 해석을 직관적으로 할 수 있어 많이 사용한다.
- 값을 min(열)=0, max(열)=1으로 설정하여 데이터를 이 사이 값으로 조절하다.
방법 2) Standardization (표준화)
- 머신러닝 성능을 더 높일 때가 있다.
- 값을 mean(열)=0, std(열)=1으로 설정하여 데이터를 이 사이 값으로 조절한다.
+ 두 방법 중 어느 것이 더 좋다고 말하기 어려워 실험 기반으로 접근한다
13-4. 정규화
- 값을 최댓값으로 나누어 정규화한다.
- 값은 1을 넘지 않는다.
# 5대 범죄별 수치를 해당 범죄별 최대값으로 나눠줌
weight_col = gu_df[['강간', '강도', '살인', '절도', '폭력']].max() # Series
crime_count_norm = gu_df[['강간', '강도', '살인', '절도', '폭력']] / weight_col
+div함수
- DataFrame에 다른 DataFrame이나, Series, 스칼라 등 데이터를 나눈다.
- axis로 열/행 방향 설정 가능 (헷갈림 주의)
13-5. 살인 발생 순위
sns.heatmap(crime_count_norm.sort_values(by='살인', ascending=False))
- 살인을 기준으로 내림차순 하여 heatmap 시각화
결과 :
옵션 추가
1. 사이즈 조절
2. 셀 내에 수치 입력
3. 셀 간 이격 거리 설정
4. 색깔 설정
# 몇 가지 옵션으로 더 내용을 확인하기 편하도록 수정하기
# 전체 figure 의 사이즈를 조정
plt.figure(figsize = (10, 10))
# annot : 셀 내에 수치 입력 여부
# fmt : 셀 내 입력될 수치의 format (f == float)
# linewidths : 셀 간 이격거리 (하얀 부분, 내부 테두리)
# cmap : matplotlib colormap @ https://goo.gl/YWpBES
sns.heatmap(crime_count_norm.sort_values(by='살인', ascending=False), annot=True, fmt='f', linewidths=.5, cmap='Reds')
plt.title('범죄 발생(살인발생으로 정렬) - 각 항목별 최대값으로 나눠 정규화')
plt.show()
결과 :
'Data > Python' 카테고리의 다른 글
[크롤링] 웹 크롤링 BeautifulSoup (2) (0) | 2022.03.25 |
---|---|
[크롤링] 웹 크롤링 BeautifulSoup (1) (0) | 2022.03.25 |
[데이터 분석] Pandas, 통계 자료 분석 (3) (0) | 2022.03.24 |
[데이터 분석] Pandas, 통계 자료 분석 (2) (0) | 2022.03.24 |
[데이터 분석] Pandas, 통계 자료 분석 (1) (0) | 2022.03.23 |
Comments