혼자 공부하는 데이터 분석 with 파이썬
#혼공학습단 #혼공 #혼공분석
# | 진도 | 기본 미션 | 선택 미션 |
5주차 (2/6 ~ 2/12) |
Chapter 05 | p. 314의 손코딩(맷플롯립에서 bar()함수로 막대 그래프 그리기)을 코랩에서 그래프 출력하고 화면 캡처하기 | p. 316의 손코딩(텍스트 정렬, 막대 조절 및 색상 바꾸기)을 코랩에서 출력하고 화면 캡처하기 |
Chapter 05 데이터 시각화하기
05-1 맷플롯립 기본 요소 알아보기
__Figure 객체
__rcParams 객체
__여러 개의 서브플롯 출력하기
[5가지 키워드로 정리하는 핵심 포인트]
[표로 정리하는 핵심 함수와 메서드]
[확인 문제]
05-2 선 그래프와 막대 그래프 그리기
__연도별 발행 도서 개수 구하기
__주제별 도서 개수 구하기
__선 그래프 그리기
__막대 그래프 그리기
__[문제 해결 과정] 맷플롯립으로 선 그래프와 막대 그래프 그리기
[좀 더 알아보기(1)] 이미지 출력하고 저장하기
[좀 더 알아보기(2)] 그래프를 이미지로 저장하기
[2가지 키워드로 정리하는 핵심 포인트]
[표로 정리하는 핵심 함수와 메서드]
[확인 문제]
I. 미션
1. 기본 미션 - p. 314의 손코딩(맷플롯립에서 bar()함수로 막대 그래프 그리기)을 코랩에서 그래프 출력하고 화면 캡처하기
2. 선택 미션 - p. 316의 손코딩(텍스트 정렬, 막대 조절 및 색상 바꾸기)을 코랩에서 출력하고 화면 캡처하기
II. 손코딩
5-1 맷플로립 기본 요소 알아보기
# p.283
import pandas as pd
ns_book7 = pd.read_csv('ns_book7.csv', low_memory=False)
ns_book7.head()
|
# p.284
import matplotlib.pyplot as plt
plt.scatter(ns_book7['도서권수'], ns_book7['대출건수'], alpha=0.1)
plt.show()
|
# p.285
plt.figure(figsize=(9,6))
plt.scatter(ns_book7['도서권수'], ns_book7['대출건수'], alpha=0.1)
plt.show()
|
# p.285
print(plt.rcParams['figure.figsize'])
|
# p.287
print(plt.rcParams['figure.dpi'])
|
# p. 287
plt.figure(figsize=(900/72, 600/72))
plt.scatter(ns_book7['도서권수'], ns_book7['대출건수'], alpha=0.1)
plt.show()
|
# p.289
%config InlineBckend.print_figure_kwars = {'bbox_inches': None}
plt.figure(figsize=(900/72, 600/72))
plt.scatter(ns_book7['도서권수'],ns_book7['대출건수'], alpha=0.1)
plt.show()
|
# p.290
%config Inlinebackend.print_figure_kwargs = {'bbox_inches': 'tight'}
|
# p.290
plt.figure(dpi=144)
plt.scatter(ns_book7['도서권수'], ns_book7['대출건수'], alpha=0.1)
plt.show()
|
# p.291
plt.rcParams['figure.dpi']=100
|
# p.291
plt.rcParams['scatter.marker']
|
# p.292
plt.rcParams['scatter.marker']='*'
|
# p.292
plt.scatter(ns_book7['도서권수'], ns_book7['대출건수'], alpha=0.1)
plt.show()
|
# p.293
plt.scatter(ns_book7['도서권수'], ns_book7['대출건수'], alpha=0.1, marker='+')
plt.show()
|
# p.295
fig, axs = plt.subplots(2)
axs[0].scatter(ns_book7['도서권수'], ns_book7['대출건수'], alpha=0.1)
axs[1].Shist(ns_book7['대출건수'], bins=100)
axs[1].set_yscale('log')
fig.show()
|
fig, axs = plt.subplots(2, figsize=(6,8))
axs[0].scatter(ns_book7['도서권수'], ns_book7['대출건수'], alpha=0.1)
axs[0].set_title('scatter plot')
axs[1].hist(ns_book7['대출건수'], bins=100)
axs[1].set_title('histogram')
axs[1].set_yscale('log')
fig.show()
|
# p.297
fix, axs = plt.subplots(1, 2, figsize=(10, 4))
axs[0].scatter(ns_book7['도서권수'], ns_book7['대출건수'], alpha=0.1)
axs[0].set_title('scatter plat')
axs[0].set_xlabel('number of books')
axs[0].set_ylabel('borrow count')
axs[1].hist(ns_book7['대출건수'], bins=100)
axs[1].set_title('histogram')
axs[1].set_yscale('log')
axs[1].set_xlabel('borrow count')
axs[1].set_ylabel('frequency')
fig.show()
|
5-2 선 그래프와 막대 그래프 그리기
# p.303
import pandas as pd
ns_book7 = pd.read_csv('ns_book7.csv', low_memory=False)
ns_book7.head()
|
# p.304
count_by_year = ns_book7['발행년도'].value_counts()
count_by_year
|
# p.304
count_by_year = count_by_year.sort_index()
count_by_year
|
count_by_year = count_by_year[count_by_year.index <= 2030]
count_by_year
|
# p.306
import numpy as np
def hdc_1st_char(no):
if no is np.nan:
return '-1'
else:
return no[0]
count_by_subject = ns_book7['주제분류번호'].apply(hdc_1st_char).value_counts()
count_by_subject
|
# p.308
import matplotlib.pyplot as plt
plt.rcParams['figure.dpi'] = 100
|
plt.plot(count_by_year.index, count_by_year.values)
plt.title('Books by Year')
plt.xlabel('year')
plt.ylabel('number of books')
plt.show()
|
# p.309
plt.plot(count_by_year, marker='.', linestyle=':', color='red')
plt.title('Books by Year')
plt.xlabel('year')
plt.ylabel('number of books')
plt.show()
|
# p.310
plt.plot(count_by_year, '.:r')
|
plt.plot(count_by_year, '*-g')
plt.title('Books By Year')
plt.xlabel('year')
plt.ylabel('number of books')
plt.show()
|
# p.312
plt.plot(count_by_year, '*-g')
plt.title('Books by Year')
plt.xlabel('year')
plt.ylabel('number of books')
plt.xticks(range(1947, 2030, 10))
for idx, val in count_by_year[::5].items():
plt.annotate(val, (idx, val))
plt.show()
|
# p.313
plt.plot(count_by_year, '*-g')
plt.title('Books by Year')
plt.xlabel('year')
plt.ylabel('number of books')
plt.xticks(range(1947, 2030, 10))
for idx, val in count_by_year[::5].items():
plt.annotate(val, (idx, val), xytext=(idx+1, val+10))
plt.show()
|
# p.314
plt.plot(count_by_year, '*-g')
plt.title('Books by Year')
plt.xlabel('year')
plt.ylabel('number of books')
plt.xticks(range(1947, 2030, 10))
for idx, val in count_by_year[::5].items():
plt.annotate(val, (idx, val), xytext=(2, 2), textcoords='offset points')
plt.show()
|
plt.bar(count_by_subject.index, count_by_subject.values)
plt.title('Books by Subject')
plt.xlabel('subject')
plt.ylabel('number of books')
for idx, val in count_by_subject.items():
plt.annotate(val, (idx, val), xytext=(0, 2), textcoords='offset points')
plt.show()
|
# p.316
plt.bar(count_by_subject.index, count_by_subject.values, width=0.7, color='blue')
plt.title('Books by Subject')
plt.xlabel('subject')
plt.ylabel('number of books')
for idx, val in count_by_subject.items():
plt.annotate(val, (idx, val), xytext=(0, 2), textcoords='offset points', fontsize=8, ha='center', color='green')
plt.show()
|
# p.317
plt.barh(count_by_subject.index, count_by_subject.values, height=0.7, color='blue')
plt.title('Book by Subject')
plt.xlabel('number of books')
plt.ylabel('subject')
for idx, val in count_by_subject.items():
plt.annotate(val, (val, idx), xytext=(2, 0), textcoords='offset points', fontsize=8, va='center', color='green')
plt.show()
|
# p.319
import sys
if 'google.colab' in sys.modules:
!wget https://bit.ly/3wrj4xf -O jupiter.png
|
# p.319
img = plt.imread('jupiter.png')
img.shape
|
# p.320
plt.imshow(img)
plt.show()
|
# p.320
plt.figure(figsize=(8, 6))
plt.imshow(img)
plt.axis('off')
plt.show()
|
# p.321
from PIL import Image
pil_img = Image.open('jupiter.png')
plt.figure(figsize=(8, 6))
plt.imshow(pil_img)
plt.axis('off')
plt.show()
|
# p.321
plt.rcParams['savefig.dpi'
|
# p.322
plt.barh(count_by_subject.index, count_by_subject.values, height=0.7, color='blue')
plt.title('Books by Subject')
plt.xlabel('number of books')
plt.ylabel('subject')
for idx, val in count_by_subject.items():
plt.annotate(val, (val, idx), xytext=(2, 0), textcoords='offset points', fontsize=8, va='center', color='green')
plt.savefig('books_by_subject.png')
plt.show()
|
# p.323
pil_img = Image.open('books_by_subject.png')
plt.figure(figsize=(8, 6))
plt.imshow(pil_img)
plt.axis('off')
plt.show()
|