FUNDAMENTAL | 8-2. Visualization - 자주 사용되는 그래프

yeonk·2021년 9월 16일
0

aiffel-ai-bootcamp

목록 보기
20/38
post-thumbnail

20210916



1. 데이터


Seabornload_dataset() 메소드를 이용하면 API를 통해 손쉽게 유명한 예제 데이터를 다운로드 받을 수 있다.






데이터 살펴보기 (EDA)

# 데이터 불러오기
import pandas as pd
import seaborn as sns

tips = sns.load_dataset("데이터 명")

# 데이터 구성 확인
df = pd.DataFrame(데이터 명)
df.head()

df.shape

# 수치형 데이터 확인
df.describe()

# 범주형 데이터 확인
print(df['데이터 변수명'].value_counts())






2. 범주형 데이터


주로 막대 그래프를 사용하여 수치를 요약.
일반적으로 가로, 세로, 누적, 그룹화된 막대 그래프를 사용.






막대 그래프(bar graph)

Pandas & Matplotlib 활용

  • matplotlib에 데이터를 인자로 넣기 위해선 pandas 데이터를 바로 이용할 수는 없다.

    • 데이터를 x에 series 또는 list, y에 list 형태로 각각 나눠주어야 함
# groupby 메소드를 활용
grouped = df['컬럼1'].groupby(df['컬럼2'])

grouped.mean() # 성별에 따른 팁의 평균

# 막대그래프로 나타내기
import matplotlib.pyplot as plt

plt.bar(x = x, height = y)
plt.ylabel('abc')
plt.title('tittle')






Seaborn과 Matplotlib을 활용


# 막대그래프 나타내기
sns.barplot(data=df, x='컬럼1', y='컬럼2')


# 그래프 옵션 지정하기
plt.figure(figsize=(10,6)) # 도화지 사이즈 설정
sns.barplot(data=df, x='컬럼1', y='컬럼2')
plt.ylim(0, 4) # y값의 범위 지정.
plt.title('qwer') # 그래프 제목.






violineplot, catplot, palette

fig = plt.figure(figsize=(10,7))

# palette 옵션 사용하기

ax1 = fig.add_subplot(2,2,1)
sns.barplot(data=df, x='day', y='tip',palette="ch:.25")

ax2 = fig.add_subplot(2,2,2)
sns.barplot(data=df, x='sex', y='tip')


# violinplot 사용하기 
ax3 = fig.add_subplot(2,2,4)
sns.violinplot(data=df, x='sex', y='tip')

ax4 = fig.add_subplot(2,2,3)
sns.violinplot(data=df, x='day', y='tip',palette="ch:.25")

# catplot 사용
sns.catplot(x="day", y="tip", jitter=False, data=tips)






3. 수치형 데이터


수치형 데이터를 나타내는 데 가장 좋은 그래프는 산점도 혹은 선 그래프






산점도(scatter plot)


# 산점도 나타내보기 
sns.scatterplot(data=df , x='컬럼1', y='컬럼2', palette="ch:r=-.2,d=.3_r")






선 그래프(line graph)






#np.random.randn: 표준 정규분포에서 난수를 생성하는 함수
#cumsum()은 누적합을 구하는 함수.
plt.plot(np.random.randn(50).cumsum())



x = np.linspace(0, 10, 100) 
plt.plot(x, np.sin(x), 'o')
plt.plot(x, np.cos(x)) 
plt.show()



# Seaborn 활용
sns.lineplot(x, np.sin(x))
sns.lineplot(x, np.cos(x))






히스토그램

도수분포표를 그래프로 나타낸 것.

  • ↔가로축
    • 계급: 변수의 구간, bin (or bucket)
  • ↕세로축
    • 도수: 빈도수, frequency
  • 전체 총량: n






히스토그램 예제

  • x1은 평균은 100이고 표준편차는 15인 정규분포를 따릅니다.

  • x2는 평균은 130이고 표준편차는 15인 정규분포를 따릅니다.

  • 도수를 50개의 구간으로 표시하며, 확률 밀도가 아닌 빈도로 표기합니다.

#그래프 데이터 
mu1, mu2, sigma = 100, 130, 15
x1 = mu1 + sigma*np.random.randn(10000)
x2 = mu2 + sigma*np.random.randn(10000)

# 축 그리기
fig = plt.figure()
ax1 = fig.add_subplot(1,1,1)

# 그래프 그리기
patches = ax1.hist(x1, bins=50, density=False) #bins는 x값을 총 50개 구간으로 나눈다는 뜻입니다.
patches = ax1.hist(x2, bins=50, density=False, alpha=0.5)
ax1.xaxis.set_ticks_position('bottom') # x축의 눈금을 아래 표시 
ax1.yaxis.set_ticks_position('left') #y축의 눈금을 왼쪽에 표시

# 라벨, 타이틀 달기
plt.xlabel('Bins')
plt.ylabel('Number of Values in Bin')
ax1.set_title('Two Frequency Distributions')

# 보여주기
plt.show()






밀도 그래프

연속된 확률분포

  • 일반적으로는 kernels메서드를 섞어서 이 분포를 근사하는 식으로 그림

  • 정규분포(가우시안)로 나타낼 수 있음






Heatmap

방대한 양의 데이터와 현상을 수치에 따른 색상으로 나타내는 것.
데이터 차원에 대한 제한은 없으나 모두 2차원으로 시각화하여 표현.

  • Heatmap을 그리기 위해 데이터를 pivot해야 하는 경우가 있음

  • pivot이란 어떤 축, 점을 기준으로 바꾸다란 뜻

  • 데이터 표를 재배치 할때도 pivot이라는 단어를 사용

0개의 댓글