본문 바로가기
통계, EDA, 선형대수/Data Process & EDA

N111a EDA(Exploratory Data Analysis)

by kiimy 2021. 5. 9.
728x90
728x90

EDA (exploratory data analysis) =분석과 이해를 통해서 ===> Data Preprocessing(전처리) 과정이 들어감

EDA란, 데이터 분석에 있어서 매우 중요한, 초기 분석의 단계를 의미하며

  • 시각화 같은 도구를 통해서 패턴을 발견하거나
  • 데이터의 특이성을 확인하거나
  • 통계와 그래픽 (혹은 시각적 표현)을 통해서 가설을 검정하는 과정 등을 포함합니다.

EDA의 방법은 크게 2가지 (Graphic, Non-Graphic) 으로 나눠질 수 있으며

  • Graphic : 차트 혹은 그림 등을 이용하여 데이터를 확인하는 방법입니다.
  • Non-Graphic :그래픽적인 요소를 사용하지 않는 방법으로, 주로 Summary Statistics를 통해 데이터를 확인하는 방법입니다.

동시에, EDA의 "타겟"(데이터) 또한 2가지 (Univariate, Multi-variate)로 나눠집니다.

*Uni Non Graphic 

-sample Data의 Distribution을 확인하는 것이 목적

(=  Numeric data 경우 summary statistics) 사용 // df.describe() == Descriptive Statistics(기술적 통계치)

*Uni Graphic

- QQPlot (= 데이터의 분포와 이론상 분포가 잘 일치하는것인지 확인), Pie-chat, Boxplot 등

*Multi Non Graphic

-Multi-variate 의 경우 여러 변수들간의 관계를 보는 것이 주요 목적입니다.

- Crosstab, CrossStatistics(cov, corr)

*Multi - Graphic

- Category & Numeric : Boxplots, Stacked bar, Parallel Coordinate, Heatmap

 

csv (comma separated value)

#변수 지정 및 transpose() == T ==> row가 아닌 column에 매출액, 영업이익이 가도록 transpose

 

 

#excel 파일불러오기

*pd.read_excel('asjdiasd.xlsx') ==> 가능한 파일 형식: 'xls, xlsx, xlsm ....'

 

#sheet_name= '불러올 시트지정'/ '시트명' or '0

#df.sheet_names ==> sheeet_name 불러오기

 

#df.head(n) n행까지만 보여줌 안적으면(columns부분 포함 + index 행 나옴)

#df.tail(n) 꼬리부분 보여줌(행)

#df.info() ==> Technical summary /

#df.describe ==> summary statistics?

#df.shape ==> dimenstion 확인            (head/tail/info and dtypes 속성은 첫번째로 확인

 

#header= 열 헤더로 사용할 행 지정/ 첫 행이 헤더가 아닌경우 = None ==> 첫번째 행이 인덱스로 나옴

#index= False = index 부분 없애줌

 

#names= 열 이름 변경 / 불러오는 열의 개수와 일치해야함!!

 

#usecols= ['사용할열_1', '사용할열_2']) 불러올 열 지정 or [0, 1] 숫자로 지정

 

#na_values= '결측값의 형태' (' - ', '여러가지 형태' ....)결측값 인식하기 해당형태 NaN으로 변경

 

#skiprows = *n  앞에서 n개 행 생략

#nrows= n *처음부터 n-1개 행까지 

 

#df1.isnull() ==> NaN값을 True로 나옴 / 

df1.notnull()==> NaN값이 False로 나옴

========>>>>astype(int)로 바꿔줄수 있을것 같음 또는 map(int)

#결측치 변경 fillna(숫자 or '형태')  ==> 숫자 or '형태'로 변환 >>값이 소수로나옴?? O

 

 

#or operator == l / and operator == &

#iloc[ 행, 열] ==> ex) iloc[9:25, 2:5] == 행 9 till n-1까지 / 열 3 till n-1까지 ??????

#loc[] ==> 이름으로 리스트 슬라이싱

#iloc[] ==> 숫자로 (잘 사용되지 않음)

#iloc[ [1,2], [1,4] ] ====>> [1,2]은 1번행과 2번행을 꺼내/ [1, 4]은 1번 열과 4번째 열

=============================> 첫번째 name 열이 0 임 

 

#파일 변경(df1 = .xlsx

df1.to_csv('변경할이름') ==> xlsx 가 csv로 변경됨 == '변경할이름'으로 저장됨

 

#특정 columns을 추출하고 그 변수에 대해서 cross-tabulation

import seaborn as sns
 
pp = sns.load_dataset('penguins')

pd.crosstab(pp.columns, pp.columns) ===> 첫번째 columns가 행으로, 두번째 columns 열로

==> pd.crosstab(index= pp.['?'], columns= pp.['?']) 로 지정해줄 수 있음

 

/////////////////////////도전과제////////////////////////

 

hue = 'asd' ==> 그래프안에 박스

*plot 내장함수

kind=

'line'                   'kde' = 커널 밀도 그래프

'bar'                    'area' = 면적그래프

'barh' = 수평막대   'pie' = 파이그래프

'his' = 히스토그램   'scatter' = 산점도그래프

'box' = boxplot     'hexbin' = 고밀도 산점도 그래프

 

# datetime으로 변경 // df.Date 라고 해도 불러올 수 있음

df['Date'] = pd.to_datetime(df['Date']) 

# datetime에서 year만 가져오기(dt = datetime)

df['Date'].dt.year // month, day만 불러올 수 있음

 

728x90

댓글