https://seaborn.pydata.org/index.html
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
df = sns.load_dataset("mpg")
df.describe(include = "object")
: 범주형 데이터의 경우 데이터타입이 꼭 object가 아니라 int, float, bool일 수 있음
df.describe(include = "all")
df.describe(exclude = "object") # = df.describe()
df.describe(include = np.int64)
nunique값과 히스토그램으로 범주형데이터임을 확인해 볼 수 있다.
df.hist(bins = 50)
plt.show()
df.nunique()
unique() 는 오류, series에만 사용가능하며, nunique()는 데이터프레임, 시리즈 모두 가능
df['cylinders'].unique()
df['model_year'].unique()
df['origin'].unique()
df["origin"].value_counts()
#vertical
sns.countplot(data = df, x = "origin")
#horizontal
sns.countplot(data = df, y = "origin")
1개 변수의 빈도수와 또 다른 변수의 빈도수를 hue를 사용해 나타낼 수 있음
sns.countplot(data = df, x = "origin", hue = "cylinders")
시각화한 값을 직접 구할 수 있다.
pd.crosstab(index = df["origin"], columns = df["cylinders"])
# x가 범주형변수, y가 수치형변수
sns.barplot(data = df, x = "origin", y = "mpg", ci = None)
df.groupby("origin").mean()
df.groupby("origin")["mpg"].mean()
# 얘는 데이터프레임 [[ ]]으로 결과값이 추출됨
df.groupby("origin")[["mpg"]].mean()
pd.pivot_table(data = df, index = "origin") # = df.groupby("origin").mean()
pd.pivot_table(data = df, index = "origin", values = "mpg")
sns.barplot(data = df, x = "origin", y = "mpg", estimator = sum, ci = None)
#hue를 사용하여 색상을 다르게 표현하기
sns.barplot(data = df, x = "origin", y = "mpg", estimator = sum, hue = "cylinders", ci = None)
df.groupby(["origin", "cylinders"])[["mpg"]].sum()
df.groupby(["origin", "cylinders"])[["mpg"]].sum().unstack()
pd.pivot_table(data = df, index = "origin", columns = "cylinders", aggfunc = sum)
pd.pivot_table(data = df, index = "origin", columns = "cylinders", values = "mpg", aggfunc = sum)
pd.pivot과 pd.pivot_table의 차이는?
sns.boxplot(data = df, x = "origin", y = "mpg")
desc = df.groupby("origin")["mpg"].describe()
eu = desc.loc["europe"]
# IQR, 이상치를 제외한 최댓값, 최솟값 구하기
Q3 = eu["75%"]
Q1 = eu["25%"]
IQR = Q3 - Q1
OUT_MAX = (1.5 * IQR) + Q3
OUT_MIN = Q1 - (1.5 * IQR)
Q3, Q1, IQR, OUT_MAX, OUT_MIN
# boxplot
plt.figure(figsize=(10,2))
sns.boxplot(data = df[df["origin"] == "europe"], x = "mpg")
#boxenplot: boxplot 보완
plt.figure(figsize=(10,2))
sns.boxenplot(data = df[df["origin"] == "europe"], x = "mpg")
#violinplot: 위 두 그래프를 보완해서 그림, 히스토그램의 밀도를 추청한 kde플롯을 마주보고 그린 그래프
plt.figure(figsize=(10,2))
sns.violinplot(data = df[df["origin"] == "europe"], x = "mpg")
sns.scatterplot(data = df, x = "origin", y = "mpg")
sns.stripplot(data = df, x = "origin", y = "mpg")
plt.figure(figsize = (12, 4))
sns.swarmplot(data = df, x = "origin", y = "mpg")
sns.catplot(data = df, x = "origin", y = "mpg")
여러개의 서브플롯을 그리고 싶을 때 catplot을 사용함
sns.catplot(data = df, x = "origin", y = "mpg", kind = "box", col="cylinders", col_wrap = 3)
sns.catplot(data = df, x = "origin", y = "mpg", kind = "violin", col="cylinders")
sns.catplot(data = df, x = "origin", kind = "count", col="cylinders")
[크롤링] requests, BeautifulSoup, Json (0) | 2022.09.29 |
---|---|
[크롤링] FinanceDataReader, 네이버금융 뉴스기사 크롤링 (0) | 2022.09.28 |
[EDA] 추상화된 도구로 기술통계량 구하기, 수치형변수 시각화, 상관분석 및 상삼각으로 시각화 (0) | 2022.09.28 |
1주차 과제 뒷풀이: 인덱싱은 리스트나 문자열만! (0) | 2022.09.22 |
앤스컴 콰르텟 (0) | 2022.09.22 |