Seaborn
의load_dataset()
메소드를 이용하면 API를 통해 손쉽게 유명한 예제 데이터를 다운로드 받을 수 있다.
# 데이터 불러오기
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())
주로 막대 그래프를 사용하여 수치를 요약.
일반적으로 가로, 세로, 누적, 그룹화된 막대 그래프를 사용.
matplotlib에 데이터를 인자로 넣기 위해선 pandas 데이터를 바로 이용할 수는 없다.
# 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')
# 막대그래프 나타내기
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') # 그래프 제목.
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)
수치형 데이터를 나타내는 데 가장 좋은 그래프는 산점도 혹은 선 그래프
# 산점도 나타내보기
sns.scatterplot(data=df , x='컬럼1', y='컬럼2', palette="ch:r=-.2,d=.3_r")
#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))
도수분포표를 그래프로 나타낸 것.
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메서드를 섞어서 이 분포를 근사하는 식으로 그림
정규분포(가우시안)로 나타낼 수 있음
방대한 양의 데이터와 현상을 수치에 따른 색상으로 나타내는 것.
데이터 차원에 대한 제한은 없으나 모두 2차원으로 시각화하여 표현.
Heatmap을 그리기 위해 데이터를 pivot해야 하는 경우가 있음
pivot이란 어떤 축, 점을 기준으로 바꾸다란 뜻
데이터 표를 재배치 할때도 pivot이라는 단어를 사용