/ LECTURE

Python - Plot2

이 페이지는 다음에 대한 공부 기록입니다

JAVA(자바), Python(파이썬) 기반의

AI 활용 응용 소프트웨어 개발자 양성 과정

2021.11.10. ~ 2022.05.18.

찾으시는 정보가 있으시다면
주제별reference를 이용하시거나
우측 상단에 있는 검색기능을 이용해주세요

86일차 수업

arrow

%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 20, 100)	# 0부터 20 까지 100개, linear
fig, ax = plt.subplots()
ax.plot(x, np.cos(x))

ax.axis('equal')
# arrow() : 플롯의 가로세로 비율이 변할 때마다 결과가 바뀌는 단점 때문에 annotate() 사용

ax.annotate('My comment', xy=(6.30, 1), xytext=(10, 4), arrowprops=dict(facecolor='pink', shrink=0.05))
# 텍스트, 화살표 끝 xy좌표, 텍스트 위치 좌표, properties

pie 그래프

%matplotlib inline
import matplotlib.pyplot as plt
import pandas as pd

df = pd.read_excel('Report.xls', usecols='C:K', header=1)
col_names = ['스트레스', '스트레스남학생', '스트레스여학생',
'우울감경험률', '우울남학생', '우울여학생',
'자살생각율', '자살남학생', '자살여학생']

# 컬럼이름을 해당 데이터에 적용
df.columns = col_names

df2 = df.iloc[:1].copy()

df2.loc[1] = 100 - df2.loc[0]

df2['응답'] = ['그렇다', '아니다']

# 기존 인덱스를 제거
df2.reset_index()

#응답이라는 컬럼을 인덱스로 사용
df2.set_index('응답', inplace=True)

plt.rcParams['axes.unicode_minus'] = False
plt.rc('font', family='AppleGothic')

plt.figure(figsize=(12,8))

plt.subplot(1,2,1)
# 기준 데이터, label 붙이기, 표현식, 공백
plt.pie(df2.스트레스, labels=df2.index, autopct='%.1f%%', explode=(0,0.05))
plt.title('스트레스')

plt.subplot(1,2,2)
plt.pie(df2.우울감경험률, labels=df2.index, autopct='%.1f%%', explode=(0,0.05), wedgeprops=dict(width=0.5))
# 도넛모양으로 만들기
plt.title('우울감')

seaborn

import matplotlib.pyplot as plt
import seaborn as sns

plt.rcParams['axes.unicode_minus'] = False
plt.rc('font', family='AppleGothic')

tips = sns.load_dataset('tips')

# displot
sns.displot(tips['total_bill'])
sns.displot(tips['total_bill'], kde=False) # 히스토그램만 출력, 연속성 데이터 추천
sns.displot(tips['total_bill'], hist=False) # 라인만 출력
sns.displot(tips['total_bill'], rug=True) # 밀집도 출력

# regplot : 산점도 그래프
sns.regplot(x='total_bill', y = 'tip', data=tips, fit_reg=False)	# 회귀선 제거

# countplot : 막대 그래프, x축
sns.countplot(tips['day']);

# joinplot : 히스토그램과 산점도를 같이 보여주는 그래프
sns.jointplot(x='total_bill', y='tip', data=tips, kind='hex')

# kdeplot : 등고선 그래프
sns.kdeplot(x='total_bill', y='tip', data=tips, shade = True)

# barplot : 막대 그래프, x, y축
sns.barplot(x='time', y='total_bill', data=tips)

# boxplot : 박스 그래프
sns.boxplot(x='time', y='total_bill', data=tips)
# 최소값, 4분위수, 중간값, 이상치 등의 통계량을 한번에 보는 그래프

# violinplot : 바이올린 그래프, 밀도를 보여줌
sns.violinplot(x='day', y='total_bill', data=tips)

# pairplot : 컬럼간 관계 그래프
sns.pairplot(tips)

# pairGrid : 관계그리드그래프
pair = sns.PairGrid(tips)
# 그리드로 나누어 대각선 기준 상,중,하 파트에 map_upper, map_diag, map_lower 메소드로 그래프를 배치할 수 있음
pair.map_upper(sns.regplot)

# lmplot : 산점도 그래프에서 hue를 지원하는 그래프
sns.lmplot(x='total_bill', y='tip', data=tips, hue ='sex', fit_reg=False)

# scatterplot : lmplot 에서 fit_reg를 제거한 그래프
sns.scatterplot(x='total_bill', y='tip', data=tips, hue='sex')

# FacetGrid : 데이터 그룹별 그래프
facet = sns.FacetGrid(tips, col='time')
facet.map(sns.histplot, 'total_bill')
# 지정된 column ‘time’ 값 lunch와 dinner에 해당하는 그래프 2개 출력
# scatterplot등 다른 그래프를 이용하여 hue를 사용할 경우 add_legend()로 hue에 대한 정보 출력

pairGrid 와 corr()을 통해 데이터 분석하기 좋겠다고 생각했는데

from pandas_profiling import ProfileReport
ProfileReport(df, title='Pandas Profiling Report')

데이터 프로파일링을 통해 한번에 한번에 확인이 가능하다는 것을 찾음