KEEP GOING

[python] 파이썬으로 시작하는 통계 데이터 분석 : 입문 - 데이터 전처리 실습(Part2) 본문

python

[python] 파이썬으로 시작하는 통계 데이터 분석 : 입문 - 데이터 전처리 실습(Part2)

jmHan 2022. 10. 25. 11:20
반응형

파생변수: 분석 목적에 따라 필요한 정보 생성 
              기존 척도에서 새로운 척도를 만들어 내는 것 

 

!주의 - 수치형 > 범주형 데이터로 변환 불가

# numpy as np
# np.where(condition, x, y): 파생변수 만들때 자주 사용 

1. 라이브러리 및 csv 파일 불러오기 

import pandas as pd
import numpy as np 
import warnings
import matplotlib.pyplot as plt 
import seaborn as sns

warnings.filterwarnings("ignore")
src_path = 'https://codepresso-online-platform-public.s3.ap-northeast-2.amazonaws.com/learning-resourse/python_da/kaggle_boston_price.csv'
df = pd.read_csv(src_path, sep=',', encoding='CP949')



2. np.where : 조건에 맞는 인덱스 찾기  

max_tax = df['TAX'].max()
min_tax = df['TAX'].min()
tax_range = max_tax - min_tax
interval = tax_range / 3

high = df['TAX'].max()
df['TAX_GRADE'] = np.where(
  df['TAX'] >= (max_tax - interval), 'H', np.where(
    df['TAX'] > (min_tax + interval), 'M', 'L'
  )    
)

print(df['TAX_GRADE'].value_counts())
print(df['TAX_GRADE'])

# CMEDV: 집값 RM: 자택당 평균 방 개수
# RM_1: 집의 한 방당 평균 집값 
df['RM_1'] = df['CMEDV']/df['RM']
print(df[['CMEDV', 'RM', 'RM_1']].head(5))

 

3. 히스토그램 

##########################################
#   histogram - 수치형 변수의 분포 확인
#   CMEDV: 집값 RM: 자택당 평균 방 개수
##########################################

# CRIM: 범죄율(단위 %)
plt.hist(df['CRIM'], alpha=0.3, bins=10)
plt.xlabel('CRIM')
plt.ylabel('Frequency')
plt.show()

 

4. 산점도 

###################################################
#   scatter plot - 두 연속형 변수의 선형관계 확인
#   
###################################################

df.plot.scatter(x='RM', y='CMEDV', title='Scatter Plot')
plt.show()

 

5. 파이차트

###################################################
#   pie chart - 범주형 변수의 빈도 파악 
#   
###################################################

df['TAX_GRADE'] = np.where(
  df['TAX'] >= (max_tax - interval), 'H', np.where(
    df['TAX'] > (min_tax + interval), 'M', 'L'
  )    
)

x = df['TAX_GRADE'].value_counts()
labels = ['HIGH', 'MIDDLE', 'LOW']

fig = plt.figure(figsize= (12, 20))
ax = fig.gca()
# explode: 첫번째 매개변수 값이 커질수록 간격이 커짐 
ax.pie(x, explode=(0.1, 0, 0), labels=labels, autopct='%1.1f%%')
# ax.pie(x, explode=(0.5, 0, 0), labels=labels, autopct='%1.1f%%')
plt.title('pie chart')
plt.show()

 

6. 박스플롯

###################################################
#   box plot - 데이터 퍼짐 정도 파악  
#              (위치, 변이(산포성), 모형통계량)     
###################################################

fig = plt.figure(figsize= (6, 12))
ax = fig.gca()
print(df['TAX'].describe()) # 통계 정보 파악 
ax.boxplot([df['TAX']])
plt.show()
# Q1:25% Q2:50% Q3:75% IQR:변이통계량(Q3-Q1)

TAX 변수의 통계정보



!활용 - 도시별로 그룹핑하여 집값의 산포성 파악 
           IQR 값 크다 -> 집값 변화량이 크다 

fig = plt.figure(figsize = (12, 20))
ax = fig.gca()
sns.boxplot(x='CMEDV', y='TOWN', data=df, ax=ax)
plt.show()



!활용 - 도시마다 TAX 높낮이 시각화

fig = plt.figure(figsize = (12, 20))
ax = fig.gca()
sns.boxplot(x='CMEDV', y='TOWN', hue='TAX_GRADE', data=df, ax=ax)
plt.show()



# Q. 집값이 낮은데 TAX가 높게 편성된 이유는 무엇일까? 
# Sol) boxplot이나 scatter plot의 상관관계성을 분석하여 원인 파악 

반응형
Comments