빅데이터 분석기사[python]/pandas와 기본 데이터 처리

[python 파이썬, pandas 판다스] 데이터 탐색 (연속형 자료)

sunning 2023. 4. 29. 14:39
728x90
반응형

오늘은 연속형 데이터를 파악하는 방법에 대해 알아보자.

범주형 데이터를 분석하는 방법은 아래의 링크에서 확인할 수 있다.

 

https://sunning-10.tistory.com/entry/python-%ED%8C%8C%EC%9D%B4%EC%8D%AC-pandas-%ED%8C%90%EB%8B%A4%EC%8A%A4-%EB%8D%B0%EC%9D%B4%ED%84%B0-%ED%83%90%EC%83%89

 

[python 파이썬, pandas 판다스] 데이터 탐색 (범주형 자료)

오늘은 데이터 탐색 방법에 대해 알아보자. 데이터를 탐색하기 이전에 데이터를 열어서 그 기본정보를 먼저 파악하여 어떤 식으로 분석할지 판단한다. ● 데이터 기본정보 확인 : df명.info() 이를

sunning-10.tistory.com

 

 

● 연속형 변수의 요약 통계량 파악하기 : df명.describe()

 

연속형 변수란 숫자형 자료(numerical/continuos 변수)를 의미하는데, describe 함수를 통해 이 데이터의 기술 통계량을 확인해보자. 그럼 범주형 변수가 아닌 숫자형 변수에 대해 개수, 평균, 표준편차, 최솟값, 중위수, 최댓값 등의 요약된 통계량을 확인할 수 있다.

 

DF.describe()

 

●  통계량으로 데이터 해석하기

 

- 평균값(mean)과 중위수(50%) 차이 비교하기

 

이 때, 평균값(mean)과 중위수(50%)의 차이를 주목할 필요가 있다. 두 값의 차이가 작을수록 이상치가 적은 데이터를 의미한다. 위 데이터에서 roe에 비해 salary와 sales는 mean과 50%의 값 차이가 크므로 이상치가 다수 존재할 것으로 보인다.

 

- 왜도(skewness)와 첨도(kurtosis) 파악하기

 

좀 더 구체적으로 데이터를 분석하기 위해 왜도와 첨도를 알아보자.

 

▶ 왜도(skewness) - 분포의 비대칭도를 나타내는 통계량 (분포가 비대칭일수록 왜도의 절댓값 증가) : df명.skew()

  • 왜도 > 0 (skewed to the right) : 데이터 분포가 오른쪽으로 긴 꼬리를 가지는 경우 = 왼쪽에 값이 더 많다 (Median < Mean)
  • 왜도 = 0 : 정규분포, T 분포 등 대칭인 분포 (Median = Mean)
  • 왜도 < 0 (skewed to the left) : 데이터 분포가 왼쪽으로 긴 꼬리를 가지는 경우 = 오른쪽에 값이 더 많다 (Median > Mean)

skew 함수로 데이터의 왜도를 보면 salary와 sales는 높은 왜도값을 가지는 걸 알 수 있다. 이는 두 칼럼의 데이터는 오른쪽으로 긴 꼬리를 갖는 형태의 분포를 띈다는 의미로, 데이터에 큰 값을 갖는 이상치들이 많다는 것을 확인할 수 있다.

 

DF.skew()

 

 

 첨도(kurtosis) - 분포의 꼬리부분의 길이와 중앙부분의 뾰족함에 대한 정보를 제공하는 통계량 : df명.kurtosis()

  • 첨도 > 0 (Leptokurtic) : 정규분포보다 꼬리가 두껍고 중앙이 뾰족한 모양을 가진 T분포 (이상치가 많음)
  • 첨도 = 0 (Mesokurtic) : 정규분포
  • 첨도 < 0 (Platykurtic) : 정규분포보다 꼬리가 얇고 평균을 중심으로 더 넓게 펼쳐진 분포 (극값이 적으므로 확인 필요)

kurtosis 함수로 데이터의 첨도를 보면 salary와 sales의 첨도값이 매우 높은 것을 알 수 있다. 이는 두 데이터가 정규분포보다 중앙부분에 덜 집중되어 아웃라이어가 많다는 의미이다.

 

DF.kurtosis()

 

 

- 그 외 데이터에 대한 다양한 기술통계량 확인하기

함수 의미 사용 예시
count NA 값을 제외한 값의 수 반환 df명.함수명(), df명['컬럼명'].함수명()
describe 시리즈 혹은 데이터프레임의 각 열에 대한 기술 통계 df명.함수명(), df명['컬럼명'].함수명()
min, max 최소, 최대값 df명.함수명(), df명['컬럼명'].함수명()
argmin, argmax 최소, 최대값을 갖고 있는 색인 위치 반환 df명['컬럼명'].함수명()
idxmin, idxmax 최소, 최대값 갖고 있는 색인의 값 반환 df명['컬럼명'].함수명()
quantile 0부터 1까지의 분위수 계산 df명.함수명(x), df명['컬럼명'].함수명(x)
sum df명.함수명(), df명['컬럼명'].함수명()
mean 평균 df명.함수명(), df명['컬럼명'].함수명()
median 중위값 df명.함수명(), df명['컬럼명'].함수명()
mad 평균값에서 절대 평균편차 df명.함수명(), df명['컬럼명'].함수명()
var 표본 분산 df명.함수명(), df명['컬럼명'].함수명()
std 표본 표준편차 df명.함수명(), df명['컬럼명'].함수명()
skew 표본 비대칭도 df명.함수명(), df명['컬럼명'].함수명()
kurt 표본 첨도 df명.함수명(), df명['컬럼명'].함수명()
cumsum 누적 합 df명.함수명(), df명['컬럼명'].함수명()
cummin, cummax 누적 최소값, 누적 최대값 df명.함수명(), df명['컬럼명'].함수명()
cumprod 누적 곱 df명['컬럼명'].함수명()
diff 1차 산술차 df명['컬럼명'].함수명()
pct_change 퍼센트 변화율 계산 df명['컬럼명'].함수명()
corr 데이터프레임의 모든 변수 간 상관관계 계산하여 반환 df명.함수명()
cov 데이터프레임의 모든 변수 간 공분산을 계산하여 반환 df명.함수명()

 

●  연속형 데이터 - 히스토그램으로 시각화하기 : df명['컬럼명'].hist(bins=구간너비, figsize=도표크기)

 

정규성 여부, 이상치 존재여부 등을 시각적으로 파악하기 위해 matplotlib 패키지를 이용하여 히스토그램을 그려보자.

hist 함수를 사용하여 bins로 전체 구간 너비를 설정해주고 figsize로 전체 그래프의 가로, 세로 사이즈를 설정해준다.

 

아래 히스토그램을 통해 정규성 여부, 이상치 존재여부 등을 시각적으로 파악하면, roe에 비해 salary와 sales는 오른쪽으로 긴 꼬리를 가지고 있는 분포를 띄며, 값이 큰 이상치들이 존재하는 것을 확인 할 수 있다.

import matplotlib.pyplot as plt

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

 

728x90
반응형