[파이썬][데이터분석] 데이터 분석과 머신러닝 - EDA
1.1 Data EDA
데이터셋 불러오기
- 데이터를 분석한다
- 데이터를 다룬다
- 데이터로부터 모델링을 한다
데이터셋을 불러오기 위한 단계:
- 1. Description을 통해 데이터셋에 대한 정보를 파악합니다.
- 행과 열의 수
- 열에 헤더가 있는지 (or “데이터 이름”이 있는지?)
- 결측 데이터 (Missing data)가 있는지 확인
- 원본의 형태를 확인하기 : 여러분이 기대하던 형태가 아닐 수도 있다.
- pandas.read_csv()를 사용하여 데이터셋 불러오기를 시도하고, 오류가 있다면 원인에 대해 조사하기
- 원본 데이터셋에 따라서 때로는 행의 헤더 부분을 직접 입력해야 할 수도 있다.
import pandas as pd # pandas 모듈을 불러온다.
df = pd.read_csv("#.csv") # #에 내가 원하는 데이터의 이름을 입력한다.
df.head() # df는 dataframe의 줄임말로 변수로 자주 사용한다.. 다른 값을 사용해도 무방하다.
데이터 이름을 설정 후에 불러오기
data_url = (#.csv) # 여기서의 #은 csv의 이름에 따라 다르다. url이면 주소가,csv면 파일명이 들어간다고 생각하면 편하다.
column_headers = ['분기', '매출액', '영업이익'] # 이외에 내가 필요로 하는 column값을 입력
df = pd.read_csv(data_url, names = column_headers) # name에 내가 넣을 헤더를 설정한다.
df.head()
print(df.shape)
로컬 파일로부터 데이터셋 불러오기
from google.colab import files
uploaded = files.upload()
EDA (Exploratory Data Analysis)
- EDA를 간단하게 설명하면
- 생선에 가시는 있는가?
- 생선이 지느러미가 있는가?
- 먹을 수 있는 생선인가?
- 회로 먹을 수 있는건가?
EDA는 데이터 분석에 있어서 매우 중요한 초기 분석의 단계를 의미한다.
- 시각화 같은 도구를 통해서 패턴을 발견
- 데이터의 특이성을 확인
- 통계와 그래픽 (혹은 시각적 표현)을 통해서 가설을 검정하는 과정
- EDA의 방법 2가지
- Graphic : 차트 혹은 그림 등을 이용하여 데이터를 확인하는 방법
- Non-Graphic : 그래픽적인 요소를 사용하지 않는 방법, 주로 Summary Statistics를 통해 데이터를 확인하는 방법
- EDA의 데이터 2가지
- Univariate
- Multi-variate
Uni - Non Graphic
Sample Data의 Distribution을 확인하는 것이 주 목적이다.
Numeric data의 경우 summary statistics를 제일 많이 활용한다.
- Center (Mean, Median, Mod)
- Spread (Variance, SD, IQR, Range)
- Modality (Peak)
- Shape (Tail, Skewness, Kurtosis)
- Outliers 등을 확인합니다.
Uni - Graphic
Histogram 혹은 Pie chart, Stem-leaf plot, Boxplot, QQplot 등을 사용한다.
값들이 너무 다양하다면, Binning, Tabulation등을 활용할 수 있다.
QQPlot
데이터의 분포와 이론상 분포가 잘 일치하는가 를 확인할 수 있는 방법이다.
ex) 성적 분포가 고를 것이다.
- A반 : 10, 20, 30, 40, 50, 60, 70, 80, 90, 100
- B반 : 10, 15, 20, 75, 80, 85, 90, 95, 95, 100
QQPlot
Multi - Non Graphic
- Relationship을 보는 것이 주된 목표
- Cross-Tabulation
- Cross-Statistics (Correlation, Covariance)
Multi - Graphic
- Category & Numeric : Boxplots, Stacked bar, Parallel Coordinate, Heatmap
Pandas를 사용한 기초 EDA
Useful Pandas Functions
- Missing Data
- isna
- isnull
- notna
- notnull
- dropna
- fillna
- Data Frame
- index
- columns
- dtypes
- info
- select_dtypes
- loc
- iloc
- insert
- head
- tail
- apply
- aggregate
- drop
- rename
- replace
- nsmallest
- nlargest
- sort_values
- sort_index
- value_counts
- describe
- shape
- Vis
- plot
- plot.area
- plot.bar
- plot.barh
- plot.box
- plot.density
- plot.hexbin
- plot.hist
- plot.kde
- plot.line
- plot.pie
- plot.scatter
Properties of Histograms
- Quantitative of Histogram
- 양적 데이터(산술 연산을 할 수 있는 숫자 데이터)를 사용한다.
- No gaps
- 막대 사이에 간격이 없다는 점
- Bar Width (Bin Size or Class Size)
- 막대 너비가 일정하다.
- Y-Axis correspands to the frequency
- y축은 주파수에 해당한다.
df['#'].plot.hist()
Scatter Plot
df.plot.scatter('#', '#')
Bar Plot
df['#'].plot.bar()
Horizontal Bar Plot
df['#'].plot.barh()
Missing Values
- Ignore the tuple (결측치가 있는 데이터 삭제)
- Manual Fill (수동으로 입력)
- Global Constant (“Unknown”)
- Imputation (All mean, Class mean, Inference mean, Regression 등)
Noisy data
Noise란, 큰 방향성에서 벗어난 random error 혹은 variance를 포함하는 데이터를 말하며
대부분 descriptive statistics 혹은 visualization등 (eda)을 통해 제거가 가능합니다.
Etc
-
Binning
- Regression
- Outlier analysis
Integration
- 여러개로 나누어져 있는 데이터들을 분석하기 편하게 하나로 합치는 과정을 의미
- merge
Transformation
- 데이터의 형태를 변환하는 작업으로, scaling이라고 부르기도 한다.
- nomalize
Reduction
- 데이터를 의미있게 줄이는 것을 의미하며, dimension reduction과 유사한 목적을 갖는다.
- pca