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 |
Tags
- 데이터프레임
- 달의조각
- 씨본
- 퍼셉트론
- 크롤링
- AND게이트
- seaborn
- 데이터분석
- DataFrame
- ubuntu
- Deeplearning
- numpy
- Perceptron
- 파이썬
- 판다스
- python
- pandas
- XOR게이트
- 머신러닝
- 선형회귀
- 우분투
- NAND게이트
- OR게이트
- 데이터크롤링
- 리눅스
- 데이터시각화
- linux
- 딥러닝
- 비지도학습
- 로지스틱회귀
Archives
- Today
- Total
Charming ['ㅡ'] Ham !
Python | Heatmap, 데이터 시각화 본문
728x90
반응형
728x90
Heatmap¶
Heatmap 이란 많은 양의 데이터와 현상을 수치에 따른 색상으로 나타내는 것을 의미한다.
차원에 대한 제한은 없지만 일반적으로 2차원으로 시각화하여 표현한다.
하지만 Heatmap 을 그리기 위해 pivot 을 해야한다. 엑셀의 pivot table 에서의 pivot 과 같은 의미로 사용되며, 데이터를 축, 점을 기준으로 바꾼다는 의미이다.
Pandas DataFrame 의 pivot() 메소드를 사용한다.
In [18]:
# 사용할 패키지 가져오기
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
import os
import seaborn as sns
가져올 데이터 주소
$ wget https://aiffelstaticprd.blob.core.windows.net/media/documents/flights.csv
In [19]:
# 데이터 가져오기
csv_path = os.getenv("HOME") + '/data_represent/data/flights.csv'
data = pd.read_csv(csv_path)
flights = pd.DataFrame(data)
flights
Out[19]:
| year | month | passengers | |
|---|---|---|---|
| 0 | 1949 | January | 112 |
| 1 | 1949 | February | 118 |
| 2 | 1949 | March | 132 |
| 3 | 1949 | April | 129 |
| 4 | 1949 | May | 121 |
| ... | ... | ... | ... |
| 139 | 1960 | August | 606 |
| 140 | 1960 | September | 508 |
| 141 | 1960 | October | 461 |
| 142 | 1960 | November | 390 |
| 143 | 1960 | December | 432 |
144 rows × 3 columns
In [20]:
# 데이터 확인
flights.head()
Out[20]:
| year | month | passengers | |
|---|---|---|---|
| 0 | 1949 | January | 112 |
| 1 | 1949 | February | 118 |
| 2 | 1949 | March | 132 |
| 3 | 1949 | April | 129 |
| 4 | 1949 | May | 121 |
In [21]:
flights.describe()
Out[21]:
| year | passengers | |
|---|---|---|
| count | 144.000000 | 144.000000 |
| mean | 1954.500000 | 280.298611 |
| std | 3.464102 | 119.966317 |
| min | 1949.000000 | 104.000000 |
| 25% | 1951.750000 | 180.000000 |
| 50% | 1954.500000 | 265.500000 |
| 75% | 1957.250000 | 360.500000 |
| max | 1960.000000 | 622.000000 |
In [22]:
flights.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 144 entries, 0 to 143
Data columns (total 3 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 year 144 non-null int64
1 month 144 non-null object
2 passengers 144 non-null int64
dtypes: int64(2), object(1)
memory usage: 3.5+ KB
In [23]:
# pivot 매소드를 이용한 데이터 재배치
# 탑승객 수를 년도와 월별 재채비
pivot = flights.pivot(index = 'year', columns = 'month', values = 'passengers')
pivot
Out[23]:
| month | April | August | December | February | January | July | June | March | May | November | October | September |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| year | ||||||||||||
| 1949 | 129 | 148 | 118 | 118 | 112 | 148 | 135 | 132 | 121 | 104 | 119 | 136 |
| 1950 | 135 | 170 | 140 | 126 | 115 | 170 | 149 | 141 | 125 | 114 | 133 | 158 |
| 1951 | 163 | 199 | 166 | 150 | 145 | 199 | 178 | 178 | 172 | 146 | 162 | 184 |
| 1952 | 181 | 242 | 194 | 180 | 171 | 230 | 218 | 193 | 183 | 172 | 191 | 209 |
| 1953 | 235 | 272 | 201 | 196 | 196 | 264 | 243 | 236 | 229 | 180 | 211 | 237 |
| 1954 | 227 | 293 | 229 | 188 | 204 | 302 | 264 | 235 | 234 | 203 | 229 | 259 |
| 1955 | 269 | 347 | 278 | 233 | 242 | 364 | 315 | 267 | 270 | 237 | 274 | 312 |
| 1956 | 313 | 405 | 306 | 277 | 284 | 413 | 374 | 317 | 318 | 271 | 306 | 355 |
| 1957 | 348 | 467 | 336 | 301 | 315 | 465 | 422 | 356 | 355 | 305 | 347 | 404 |
| 1958 | 348 | 505 | 337 | 318 | 340 | 491 | 435 | 362 | 363 | 310 | 359 | 404 |
| 1959 | 396 | 559 | 405 | 342 | 360 | 548 | 472 | 406 | 420 | 362 | 407 | 463 |
| 1960 | 461 | 606 | 432 | 391 | 417 | 622 | 535 | 419 | 472 | 390 | 461 | 508 |
In [24]:
# seaborn 을 통한 히트맵 시각화
sns.heatmap(pivot)
Out[24]:
<AxesSubplot:xlabel='month', ylabel='year'>
In [25]:
# Heatmap 에 다양한 옵션 추가
sns.heatmap(pivot, linewidths = .2, annot = True, fmt = 'd')
Out[25]:
<AxesSubplot:xlabel='month', ylabel='year'>
In [29]:
sns.heatmap(pivot, cmap="YlGnBu")
Out[29]:
<AxesSubplot:xlabel='month', ylabel='year'>
In [ ]:
728x90
반응형
'지식 정보 공유 > 코딩 : Coding' 카테고리의 다른 글
| Python | Numpy 기본 사용법 (0) | 2021.01.27 |
|---|---|
| Python | 판다스를 활용한 데이터 탐색, 데이터 분석 (EDA) (0) | 2021.01.23 |
| Python | 시계열 데이터 시각화 (0) | 2021.01.21 |
| Python | 데이터 시각화하기 / Visualization (0) | 2021.01.20 |
| Python |구조화된 데이터(딕셔너리, 판다스, 데이터프레임) (0) | 2021.01.15 |