반응형

본 자료는 [시나공 AI능력시험 AICE ASSOCIATE편] 책을 공부하면서 정리하는 내용임

 

#ch5
#sec1
1.일변량 비시각화
  1)요약통계량확인하기


import pandas as pd
df=pd.read_csv('./Clean_Dataset.csv')
df

 

 

df.drop([df.columns[0]],axis=1,inplace=True)
df

 

 

요약통계량
df.describe()

 

 

df.describe(include='all')

 

 

2)빈도표확인하기


#airline, source_city, destination_city의 빈도표 확인하기
#print함수를 안쓰면 맨 마지막 것만 출력함

print(df['airline'].value_counts())
print(df['source_city'].value_counts())
print(df['destination_city'].value_counts())

 

#2.다변량 비시각화 탐색하기
#1)상관계수 확인하기


df.corr()

 

# class를 Economy로 한정하여 상관계수 확인하기
df_eco=df[df['class']=="Economy"]
df_eco.head()

 

df_eco.corr()

 

 

#2)교차표 확인하기


#source_city와 departure_time의 관계 확인하기
pd.crosstab(df['source_city'], df['departure_time'])

 

 

#sec2. 시각화로 데이터 탐색하기
#1.일변량 시각화
#1)선그래프

 


days_left=df.groupby('days_left').mean()
days_left

 

 

#시각화라이브러리 불러오기
import matplotlib.pyplot as plt

#시각화영역 지정하기
plt.figure()

#days_left의 Price 데이터로 그래프 그리기
plt.plot(days_left['price'])

#축이름 지정하기
plt.xlabel("Days_left")
plt.ylabel("Price")

plt.show()

 

 

 

#2)막대그래프


airline=df.groupby('airline').mean()
airline

 

 

label=airline.index

label

 

 

 

plt.figure()
# 인덱스를 X 평균가격을 Y로 하는 막대그래프 그리기
plt.bar(label, airline['price'])
plt.xlabel("Airline")
plt.ylabel("Price")
plt.show()

 

 

 

#3)파이그래프


#departure_time 빈도표 데이터 만들기
departure_time = df['departure_time'].value_counts()
departure_time

 

 

plt.figure(figsize=(10,10))
cat=departure_time.index
plt.pie(departure_time, labels=cat, autopct="%.1f%%")
plt.show()

 

 

#4) 히스토그램


plt.figure()
#duration을 10개 구간으로 나눠서 히스토그램 그리기
plt.hist(df['duration'], bins=10)
#duration을 20개 구간으로 나눠서 히스토그램 그리기
plt.hist(df['duration'], bins=20)

plt.xlabel=("Duration")
plt.ylabel=("Flights")

# 동시에 두개의 히스토그램 그리고 범례 지정하기
plt.legend(("Bins10", "Bins20"))
plt.show()

 

 

# 5)상자그래프


# 이상치, 최대값, 3분위값, 중앙값(위 아래 같은 빈도수), 1분위값, 최소값, 이상치
# 최대값 = 3분위수 + 1.5 x IQR 보다 작은 값 중 최대값  * IQR : 3분위 수에서 1분위 수를 뺀 값
# 최소값 + 1분위수 - 1.5 x IQR 보다 큰 값 중 최소값

plt.figure()
plt.boxplot(list(df['price']))
plt.ylabel("price")
plt.show()

 

 

# 출발시간별 가격분포 알아보기
df.boxplot(by="departure_time", column="price", figsize=(10,8))

 

 

#2.다변량 시각화
#1)산점도



plt.figure(figsize=(16,8))

#price와 duration의 산점도 그리기
plt.scatter(y=df['price'], x=df['duration'])
plt.xlabel("Duration")
plt.ylabel("Price")
plt.show()

 

 

plt.figure(figsize=(16,6))

# Economy class 에 대한 price와 duration의 산점도 그리기
plt.scatter(y=df_eco['price'], x=df_eco['duration'])
plt.ylabel("price")
plt.xlabel("Duration")
plt.show()
          

 

 

#2)히트맵


import numpy as np

#상관계수 만들기
heat=df_eco.corr()

#상관계수로 히트맵 그리기
plt.pcolor(heat)

#X축 항목 정보 표기하기
plt.xticks(np.arange(0.5, len(heat.columns),1),heat.columns)

 

np.arange(start, end, step)

start 이상부터 end 미만까지 step 간격으로 숫자 생성

숫자 2개만 넣으면 start, end로 인식

숫자 1개만 넣으면 end로 인식(start = 0부터)

 

df_eco.corr()는 df_eco에서 숫자 칼럼(4개)의 상관계수 함수이고,

heat.column은 4개 이므로

len(heat.column)=4

그러므로 위 수식은 np.arange(0.5, 4, 1)과 같이 되고 결과는 0.5, 1.5, 2.5, 3.5가 됨

 



#Y축 항목 정보 표기하기
plt.yticks(np.arange(0.5,len(heat.columns),1),heat.index)

# 히트맵 확인을 위한 컬러바 표기하기
plt.colorbar()
plt.show()

 

 

#3.matplotlib활용하기


# figure() 그래프 객체를 보여줄 영역 지정
# grid(Boolean) 그래프에 그리드를 표기할 것인지 지정
# show() 그래프 객체를 화면에 표기
# title(str) 그래프 제목을 문자열로 표기
# xlabel(str) x축 이름 생성
# ylabel(str) Y축 이름 생성
# xlim([상한,하한]) x 축의 상한값, 하한값 지정
# ylim([상한,하한]) y축의 상한값, 하한값 지정
# xticks X축 눈금의 값과 크기, 기울기 등을 설정
# ytisck y축 눈금의 값과 크기, 기울기 등을 설정

 

#4.seaborn 시각화 라이브러리
#1)범주형 산점도 : 범주형 데이터와 수치형 데이터의 관계를 시각화


# 항공사별 항공권 가격이 좌석 등급에 따라 어떻게 변하는지
import seaborn as sns

# seaborn 라이브러리 설치하기
!pip install seaborn

import seaborn as sns

sns.catplot(y='airline',x='price', col='class', data=df)

 

 

#2)선형회귀모델그래프 : 산점도와 직선회귀선을 그려줌


#비행시간과 가격의 선형관계 확인해보기
sns.lmplot(x='duration', y='price', data=df_eco, line_kws={'color':'red'})

 

 

#3)빈도그래프: 범주형 데이터의 항목별 갯수를 막대그래프로 그림


#항공사별 비행편수 확인하기
#항공권 데이터의 빈도를 airline으로 구분해서 class별로 시각화 하기
sns.countplot(x="airline", hue="class", data=df)

 

 

#4)조인트그래프: 산점도와 히스토그램을 동시에 그리는 그래프


sns.jointplot(y="price",x="duration", data=df_eco)

 

#5)히트맵 : matplotlib 대비 컬러바를 자동으로 생성해 줌


sns.heatmap(df_eco.corr())

 

 

 

 

#히트맵, #seaborn, #선형회귀모델, #빈도그래프, #조인트그래프

+ Recent posts