카테고리 없음

혼자 공부하는 데이터분석 with 파이썬 06-1 복잡한 데이터 표현하기

oneaney 2023. 10. 7. 23:09

pyplot 방식으로 그래프 그리기

plt.plot([1, 4, 9, 16])
plt.title('simple line graph')
plt.show()

객체지향 API 방식으로 그래프 그리기

피겨 객체와 Axes 객체를 사용하는 객체지향 API 방식으로 그림

fig, ax = plt.subplots()
ax.plot([1, 4, 9, 16])
ax.set_title('simple line graph')
fig.show()

폰트 지정하기1:font.family속성

기본 폰트 : 영문 sans-serif

plt.rcParams['font.family']

나눔고딕으로 변경

plt.rcParams['font.family'] = 'NanumGothic'

폰트 지정하기2: rc()함수

plt.rc('font', family='NanumBarunGothic')

여러 설정을 동시에 지정

예) 폰트 패밀리와 폰트 크기를 동시에 설정

plt.rc('font', family='NanumBarunGothic', size=11)

 

출판사별 발행 도서 개수 산점도 그리기

고유한 출판사 목록 만들기

value_counts()메서드를 사용하여 목록 만들기

카운트가 높은 순으로 결과를 내림차순으로 정렬

상위 30개 출판사를 선택하기 위해 슬라이스 연산자 사용

top30_pubs = ns_book7['출판사'].value_counts()[:30]
top30_pubs

상위 30개 출판사에 해당하는 불리언 인덱스 만들기

isin() 메서드사용

top30_pubs_idx = ns_book7['출판사'].isin(top30_pubs.index)
top30_pubs_idx

산점도를 그리기에는 데이터가 많아서 무작위로 1000개만 선택

1000개 선택: sample()메서드 사용

무작위성: random_state() 매개변수에 임의의 숫자 입력

ns_book8 = ns_book7[top30_pubs_idx].sample(1000, random_state=42)
ns_book8.head()

산점도 그리기

x축: 발행년도 y축: 출판사

subplots() 함수로 피겨의 크기 설정 (10,8)

fig, ax = plt.subplots(figsize=(10, 8))
ax.scatter(ns_book8['발행년도'], ns_book8['출판사'])
ax.set_title('출판사별 발행도서')
fig.show()

값에 따라 마커 크기를 다르게 나타내기

scatter()함수에 s 매개변수로 마커 크기 지정 

기본값 : 6

다음처럼 대출건수 열을 마커크기로 전달하면 상대적으로 많은도서를 크게 그릴 수 있음

fig, ax = plt.subplots(figsize=(10, 8))
ax.scatter(ns_book8['발행년도'], ns_book8['출판사'], s=ns_book8['대출건수'])
ax.set_title('출판사별 발행도서')
fig.show()

마커 꾸미기

1) 투명도 조절

alpha 매개변수 : 마커의 진하기로 도서량 확인 가능

 

2) 마커 테두리 색 바꾸기

edgecolor 매개변수: 기본값은 'face'  마커가 겹칠 때 경계를 구분할 수 있음 

ex) 검은색을 의미하는 'k'로 지정

 

3) 마커 테두리 선 두께 바꾸기

linewidths 매개변수 : 기본값은 1.5

 

4) 산점도 색 바꾸기

c 매개변수 : 데이터 개수와 동일한 길이의 배열을 전달하면 각 데이터를 다른 색깔로 그릴 수 있음

ex) c매개변수에 '대출건수'열을 전달하면 큰값: 밝은 노란색 낮은 값: 진한 녹색

 

fig, ax = plt.subplots(figsize=(10, 8))
ax.scatter(ns_book8['발행년도'], ns_book8['출판사'], 
           linewidths=0.5, edgecolors='k', alpha=0.3,
           s=ns_book8['대출건수']*2, c=ns_book8['대출건수'])
ax.set_title('출판사별 발행도서')
fig.show()

값에 따라 색상 표현하기 : 컬러맵

viridis 컬러맵: 앞에서 사용한 컬러맵

jet 컬러맵: 낮은값=짙은 파란색  높은 값= 노란색-> 붉은 색

colorbar()메서드 : 컬러막대 그리기

fig, ax = plt.subplots(figsize=(10, 8))
sc = ax.scatter(ns_book8['발행년도'], ns_book8['출판사'], 
                linewidths=0.5, edgecolors='k', alpha=0.3,
                s=ns_book8['대출건수']**1.3, c=ns_book8['대출건수'], cmap='jet')
ax.set_title('출판사별 발행도서')
fig.colorbar(sc)
fig.show()