본 자료는 [시나공 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, #선형회귀모델, #빈도그래프, #조인트그래프
'Tech' 카테고리의 다른 글
Ch6. 데이터 전처리 - 레이블 인코딩, 스케일링, 변수선택 (0) | 2024.06.08 |
---|---|
Ch6. 데이터 전처리 - Sec1. 결측치, 이상치, 구간화 (0) | 2024.06.07 |
Ch.4 기초데이터 다루기 / Sec2. 필요데이터 변경하기 (0) | 2024.06.01 |
Ch.4 기초데이터 다루기 / Sec1. 필요 데이터 선택하기 (0) | 2024.05.30 |
Ch3. 데이터구조 확인하기 (0) | 2024.05.30 |