1. Matplotlib 사용법
%matplotlib inline
import matplotlib.pyplot as plt
import pandas as pd
df=pd.read_csv("cust_data.csv")
df.head()
# Plot
df.plot()
plt.show()
df['avg_bill'].plot(figsize=(50,30))
plt.show()
# Bar
#service수 별 평균 요금과 나이에 대한 테이블을 만들기
df2=pd.pivot_table(df, index = ['service'])
print(df2)
#service수 별 A,B 서비스 요금에 대한 막대 그래프 그리기
df2[['A_bill', 'B_bill']].plot(kind='bar')
#service수 별 A,B 서비스 요금에 대한 요금 누적 그래프 그리기
df2[['A_bill', 'B_bill']].plot(kind='bar', stacked=True)
# Histogram
#A_bill에 대한 빈도를 10개 구간으로 그리기
plt.figure()
plt.hist(df["A_bill"])
plt.show()
#age에 대한 빈도를 20개 구간으로 그리기
plt.figure()
plt.hist(df["age"],bins=20)
plt.show()
# Scatter
#avg_bill, age간의 관꼐를 알아보기 위해 산점도 그리기
plt.figure(figsize=(16,6))
plt.scatter(y=df["avg_bill"], x=df["age"])
plt.show()
# Box Plot
#나이대별 총이용금액 분포를 박스 그래프로 그리기
df.boxplot(by="by_age", column="avg_bill", figsize=(16,8))
plt.show()
#범례추가
plt.plot([1,2,3], [1,4,9])
plt.plot([2,3,4],[5,6,7])
plt.xlabel('Quarter')
plt.ylabel('Score')
plt.title('Game Result')
plt.legend(['A team', 'B team'])
plt.show()
# 서브슬롯
#subplot을 사용하여 임의의 그래프 3개를 동시에 그리기
plt.figure(figsize=(20,12))
plt.subplot(221)
plt.plot([1,2,3], [110,130,120])
plt.grid()
plt.subplot(222)
plt.plot(["월","화","수","목","금","토","일"], [28,30,29,31,32,31,31] )
plt.xlabel('요일')
plt.ylabel('기온')
plt.title('최고기온')
plt.grid()
plt.subplot(212)
y = [5, 3, 7, 10, 9, 5, 3.5, 8]
x = range(len(y))
plt.barh(x, y, height=0.7, color="red")
plt.grid()
plt.show()
2. Seaborn 사용법
%pip install seaborn
%matplotlib inline
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
df=pd.read_csv("cust_data.csv")
df.head()
#avg_bill과 age간의 상관관계를 확인해 봅시다.
sns.scatterplot(x='age', y='avg_bill', data=df)
plt.show()
#age와 avg_bill간의 관계를 class별로 확인하기
sns.catplot(x='age', y='avg_bill',data=df ,col="class", col_wrap=2)
plt.show()
#lmplot을 사용하여 avg_bill과 B_bill의 상관관계를 확인하기
plt.figure(figsize=(10,5))
sns.lmplot(x='avg_bill', y='B_bill', data=df,line_kws={'color': 'red'})
plt.show()
#hue값으로 성별에 따라 어떻게 달라지는지 구분하기
sns.lmplot(x='avg_bill', y='B_bill', data=df, hue='sex')
plt.show()
#나이대별 bill_rating분포를 확인하기
plt.figure(figsize=(10,5))
sns.countplot(x="by_age", hue="bill_rating", data=df)
plt.show()
#연속형 변수인 age로 count plot과 비슷한 그래프 그리기
plt.figure(figsize=(10,5))
sns.histplot(x="age",bins=20, hue="bill_rating",data=df, multiple='dodge', shrink=0.8)
plt.show()
#성별 고객등급 분포를 가로 막대 그래프로 확인하기
sns.countplot(y="class", hue="sex", data=df)
plt.show()
#palette값을 spring로 설정하여 색을 변경하기
sns.countplot(y="class", hue="sex", data=df, palette='spring')
plt.show()
#jointplot을 사용하여 avg_bill과 age간의 관계 확인하기
sns.jointplot(x="avg_bill", y="age", data=df)
plt.show()
#kind 값을 변경하여 다양한 그래프를 그리기
sns.jointplot(x="avg_bill", y="age", data=df, kind='hex')
plt.show()
df.corr()
#컬럼별 상과관계를 heatmap 그래프로 그리기
sns.heatmap(df.corr())
plt.show()
# 나이대별 avg_bill에 대한 boxplot 그리기
plt.figure(figsize=(16,8))
sns.boxplot(y=df["avg_bill"], x=df["by_age"],width=0.9)
plt.show()
# 나이대별 A상품 요금에 대한 violinplot을 그리기
plt.figure(figsize=(16,8))
sns.violinplot(y=df["A_bill"], x=df["class"],width=1)
plt.show()