빅데이터분석기사/코드

[빅데이터분석기사] 데이터탐색과 데이터정제 실습 (1)

EveningPrimrose 2022. 6. 6. 00:02
반응형

1. 데이터탐색: 단변량

import pandas as pd
data=pd.read_csv('Ex_CEOSalary.csv', encoding='utf-8')
data.info()

data.head()

 

1-1. 범주형 자료의 탐색

data['industry'].value_counts()

data['industry'] = data['industry'].replace([1, 2, 3, 4], ['Service', 'IT', 'Finance', 'Others'])
data['industry'].value_counts()

%matplotlib inline
data['industry'].value_counts().plot(kind="pie")

data['industry'].value_counts().plot(kind="bar")

 

1-2. 연속형 자료의 탐색

data.info()

data.describe()

data.skew()

data.kurtosis()

 

※ pandas 제공 기술통계 함수

 - count : N/A 값을 제외한 값의 수를 반환

 - describe : 시리즈 혹은 데이터프레임의 각 열에 대한 기술 통계

 - min, max : 최소, 최대값

 - argmin, argmax : 최소, 최대값을 갖고 있는 색인 위치 반환

 - idxmin, idxmanx: 최소, 최대값을 갖고 있는 색인의 값 반환

 - quantile : 0부터 1까지의 분위수 계산

 - sum : 합

 - mean : 평균

 - median : 중위값

 - mad : 평균값에서 절대 평균편차

 - var : 표본 분산

 - std : 표본 정규분산

 - skew : 표본 비대칭도

 - kurt : 표본 첨도

 - cumsum : 누적 합

 - cummin, cummax : 누적 최소값, 누적 최대값

 - cumprod : 누적 곱

 - diff : 1차 산술차(시계열 데이터 사용 시 유용)

 - pct_change : 퍼센트 변화율 계산

 - corr : 데이터프레임의 모든 변수 간 상관관계를 계산하여 반환

 - cov : 데이터프레임의 모든 변수 간 공분산을 계산하여 반환

import matplotlib.pyplot as plt
data.hist(bins=50, figsize=(20, 15))

 

data['salary'].hist(bins=50, figsize=(20, 15))

 

2. 데이터탐색: 이변량

data.corr()

data.corr(method="pearson")

data.corr(method="spearman")

data.corr(method="kendall")

import matplotlib.pyplot as plt
plt.scatter(data['sales'], data['salary'], alpha=0.5)
plt.show()

plt.scatter(data['roe'], data['salary'], alpha=0.5)
plt.show()

data.groupby('industry')[['salary']].describe()

 

3. 이상치 처리

data.boxplot(column='salary', return_type='both')

data.boxplot(column='sales', return_type='both')

data.boxplot(column='roe', return_type='both')

 

3-1. salary 변수 이상치 처리

Q1_salary = data['salary'].quantile(q=0.25)
Q3_salary = data['salary'].quantile(q=0.75)
IQR_salary = Q3_salary-Q1_salary
IQR_salary

671.0

data_IQR=data[(data['salary']<Q3_salary+IQR_salary*1.5)&(data['salary']>Q1_salary-IQR_salary*1.5)]
data_IQR['salary'].hist()

data_IQR.hist(bins=50, figsize=(20, 15))

data_IQR.corr()

import matplotlib.pyplot as plt
plt.scatter(data_IQR['sales'], data_IQR['saraly'], alpha=0.5)
plt.show()

plt.scatter(data_IQR['roe'], data_IQR['salary'], alpha=0.5)
plt.show()

 

3-2. sales 변수 이상치 처리

Q1_sales = data['sales'].quantile(q=0.25)
Q3_sales = data['sales'].quantile(q=0.75)
IQR_sales = Q3_sales-Q1_sales
IQR_sales

4966.6999511718695

data_IQR=data[(data['sales']<Q3_sales+IQR_sales*1.5)&(data['sales']>Q1_sales-IQR_sales*1.5)&
              (data['salary']<Q3_salary+IQR_salary*1.5)&(data['salary']>Q1_salary-IQR_salary*1.5)]
data_IQR['sales'].hist()

data_IQR.hist(bins=50, figsize=(20, 15))

data_IQR.corr()

반응형