!conda install -y seaborn
import matplotlib.pyplot as plt
import seaborn as sns
from matplotlib import rc
plt.rcParams['axes.unicode_minus'] = False # 마이너스 기호 사용
rc("font", family="Malgun Gothic") # 한글 폰트 사용
# %matplotlib inline
get_ipython().run_line_magic("matplotlib", "inline")
np.linspace(0, 14, 100)
x = np.linspace(0, 14, 100)
y1 = np.sin(x)
y2 = 2 * np.sin(x + 0.5)
y3 = 3 * np.sin(x + 1.0)
y4 = 4 * np.sin(x + 1.5)
plt.figure(figsize=(10, 6))
plt.plot(x, y1, x, y2, x, y3, x, y4) # 쌍으로 넣어주면 4개의 실선 데이터가 생성된다.
plt.show()
"white", "dark", "whitegrid", "darkgrid", "ticks" 종류가 있다.
💡 "ticks"는 예제 4번에서 설명
sns.set_style("white")
plt.figure(figsize=(10, 6))
plt.plot(x, y1, x, y2, x, y3, x, y4) # 쌍으로 넣어주면 4개의 실선 데이터가 생성된다.
plt.show()
sns.set_style("dark")
plt.figure(figsize=(10, 6))
plt.plot(x, y1, x, y2, x, y3, x, y4) # 쌍으로 넣어주면 4개의 실선 데이터가 생성된다.
plt.show()
sns.set_style("whitegrid")
plt.figure(figsize=(10, 6))
plt.plot(x, y1, x, y2, x, y3, x, y4) # 쌍으로 넣어주면 4개의 실선 데이터가 생성된다.
plt.show()
sns.set_style("darkgrid")
plt.figure(figsize=(10, 6))
plt.plot(x, y1, x, y2, x, y3, x, y4) # 쌍으로 넣어주면 4개의 실선 데이터가 생성된다.
plt.show()
- boxplot
- swarmplot
- lmplot
tips = sns.load_dataset("tips")
tips
tips.info()
total_bill, tip은 float 데이터, sex, smoker, day, time은 category 데이터임을 알아두자.
plt.figure(figsize=(8, 6))
sns.boxplot(x=tips["total_bill"])
plt.show()
# boxplot
plt.figure(figsize=(8, 6))
sns.boxplot(x="day", y="total_bill", data=tips)
plt.show()
hue: 카테고리 데이터 표현 옵션
plt.figure(figsize=(8, 6))
sns.boxplot(x="day", y="total_bill", data=tips, hue="smoker")
plt.show()
palette: Set 1 - 3
plt.figure(figsize=(8, 6))
sns.boxplot(x="day", y="total_bill", data=tips, hue="smoker", palette="Set3") # Set 1 - 3
plt.show()
# swarmplot
plt.figure(figsize=(8, 6))
sns.swarmplot(x="day", y="total_bill", data=tips)
plt.show()
plt.figure(figsize=(8, 6))
sns.swarmplot(x="day", y="total_bill", data=tips, color="0.5")
plt.show()
plt.figure(figsize=(8, 6))
sns.swarmplot(x="day", y="total_bill", data=tips, color="0.2")
plt.show()
plt.figure(figsize=(8, 6))
sns.swarmplot(x="day", y="total_bill", data=tips, color="1")
plt.show()
plt.figure(figsize=(8, 6))
sns.boxplot(x="day", y="total_bill", data=tips)
sns.swarmplot(x="day", y="total_bill", data=tips, color="0.25")
plt.show()
total_bill과 tip 사이 관계 파악
sns.set_style("darkgrid")
sns.lmplot(x="total_bill", y="tip", data=tips, height=7) # height 그래프 크기 figsize랑 같다고 생각하면 됨
plt.show()
sns.set_style("darkgrid")
sns.lmplot(x="total_bill", y="tip", data=tips, height=7, hue="smoker")
plt.show()
- heatmap
flights = sns.load_dataset("flights")
flights.head()
flights.info()
flights = flights.pivot(index='month', columns='year', values='passengers')
flights.head()
annot=True: 데이터 값 표시
fmt= (d: 정수형 표현, f: 실수형 표현)
plt.figure(figsize=(10, 8))
sns.heatmap(data=flights, annot=True, fmt="d") # annot=True: 데이터 값 표시, fmt="d" 정수형 표현, f: 실수형 표현
plt.show()
cmap="색상명"
plt.figure(figsize=(10, 8))
sns.heatmap(flights, annot=True, fmt="d", cmap="YlGnBu") # cmap: 색상
plt.show()
- pairplot
iris = sns.load_dataset("iris")
iris.tail()
값 전체 데이터에 대해서 모든 경우의 수를 그래프로 나타내준다.
sns.pairplot(iris)
plt.show()
sns.set_style("ticks")
sns.pairplot(iris)
plt.show()
iris["species"].unique()
iris의 species는 3가지 종류의 데이터가 있음을 알 수 있다.
sns.pairplot(iris, hue="species")
plt.show()
hue option을 주기 전엔 한 가지 색상으로 표현되어 어떤 데이터를 나타내는지 알 수 없었는데 hue option을 주고 나선 한 눈에 데이터를 잘 알아볼 수 있다.
sns.pairplot(iris,
x_vars=["sepal_width", "sepal_length"],
y_vars=["petal_width", "petal_length"])
plt.show()
lmplot
anscombe = sns.load_dataset("anscombe")
anscombe.tail()
anscombe["dataset"].unique()
sns.set_style("darkgrid")
sns.lmplot(x="x", y="y", data=anscombe.query("dataset == 'I'"), ci=None, height=7) #ci: 신뢰구간 선택
plt.show()
sns.set_style("darkgrid")
sns.lmplot(x="x", y="y", data=anscombe.query("dataset == 'I'"), ci=None, height=7, scatter_kws={"s": 50}) #ci: 신뢰구간 선택, scatter_kws: 원 크기
plt.show()
# order option
sns.set_style("darkgrid")
sns.lmplot(
x="x",
y="y",
data=anscombe.query("dataset == 'II'"),
order=1,
ci=None,
height=7,
scatter_kws={"s": 80}) #ci: 신뢰구간 선택
plt.show()
# order option
sns.set_style("darkgrid")
sns.lmplot(
x="x",
y="y",
data=anscombe.query("dataset == 'II'"),
order=2,
ci=None,
height=7,
scatter_kws={"s": 80}) #ci: 신뢰구간 선택
plt.show()
# outlier
sns.set_style("darkgrid")
sns.lmplot(
x="x",
y="y",
data=anscombe.query("dataset == 'III'"),
ci=None,
height=7,
scatter_kws={"s": 80}) #ci: 신뢰구간 선택
plt.show()
robust=True
# outlier
sns.set_style("darkgrid")
sns.lmplot(
x="x",
y="y",
data=anscombe.query("dataset == 'III'"),
robust=True,
ci=None,
height=7,
scatter_kws={"s": 80}) #ci: 신뢰구간 선택
plt.show()
robust=True
작성 후 ERROR가 발생했다.
⚠️ERROR 발생
ModuleNotFoundError: No module named 'statsmodels'
💡해결방법
conda install statsmodels
"이 글은 제로베이스 데이터 취업 스쿨 강의 자료 일부를 발췌한 내용이 포함되어 있습니다."