Coding/Python / 데이터프레임의 정보를 확인하는 몇 가지 방법.md

데이터프레임의 정보를 확인하는 몇 가지 방법

조회

여러분은 데이터를 분석할 때 제일 먼저 해야 하는 게 뭔지 아십니까? 물론 데이터를 얻는걸 제일 먼저 해야겠지만, 데이터를 다 얻고 나면 데이터를 체크하고 전처리로 뭘 할 지를 정해야 한다. 근데 지금 리눅스 업글중이라 둘 다 다룰 수 있을지는 모르겠음.


df.info()

데이터프레임의 정보를 확인할 수 있다. 

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 299 entries, 0 to 298
Data columns (total 13 columns):
 #   Column                    Non-Null Count  Dtype  
---  ------                    --------------  -----  
 0   age                       299 non-null    float64
 1   anaemia                   299 non-null    int64  
 2   creatinine_phosphokinase  299 non-null    int64  
 3   diabetes                  299 non-null    int64  
 4   ejection_fraction         299 non-null    int64  
 5   high_blood_pressure       299 non-null    int64  
 6   platelets                 299 non-null    float64
 7   serum_creatinine          299 non-null    float64
 8   serum_sodium              299 non-null    int64  
 9   sex                       299 non-null    int64  
 10  smoking                   299 non-null    int64  
 11  time                      299 non-null    int64  
 12  DEATH_EVENT               299 non-null    int64  
dtypes: float64(3), int64(10)
memory usage: 30.5 KB

1. RangeIndex: 데이터의 인덱스(숫자 0~298까지)

2. #, column: 칼럼 번호랑 칼럼명

3. Non-Null Count: 결측값 없는 데이터 수. 이게 저 위에 RangeIndex랑 수가 딱 맞으면 결측값이 없는거다. 널 있으면 널 있는만큼 빠진다.

4. Dtype: 칼럼의 데이터 타입. 만약 문자가 쓰여진 칸이 있다면 object로 나온다.

 

df.describe()

1. 수치형 데이터

이거 썼을 때 수치형 데이터랑 범주형 데이터랑 나오는 결과가 다르다. 일단 걍 describe는 수치형 데이터에 대한 요약을 해 준다.

 

age	anaemia	creatinine_phosphokinase	diabetes	ejection_fraction	high_blood_pressure	platelets	serum_creatinine	serum_sodium	sex	smoking	time	DEATH_EVENT
count	299.000000	299.000000	299.000000	299.000000	299.000000	299.000000	299.000000	299.00000	299.000000	299.000000	299.00000	299.000000	299.00000
mean	60.833893	0.431438	581.839465	0.418060	38.083612	0.351171	263358.029264	1.39388	136.625418	0.648829	0.32107	130.260870	0.32107
std	11.894809	0.496107	970.287881	0.494067	11.834841	0.478136	97804.236869	1.03451	4.412477	0.478136	0.46767	77.614208	0.46767
min	40.000000	0.000000	23.000000	0.000000	14.000000	0.000000	25100.000000	0.50000	113.000000	0.000000	0.00000	4.000000	0.00000
25%	51.000000	0.000000	116.500000	0.000000	30.000000	0.000000	212500.000000	0.90000	134.000000	0.000000	0.00000	73.000000	0.00000
50%	60.000000	0.000000	250.000000	0.000000	38.000000	0.000000	262000.000000	1.10000	137.000000	1.000000	0.00000	115.000000	0.00000
75%	70.000000	1.000000	582.000000	1.000000	45.000000	1.000000	303500.000000	1.40000	140.000000	1.000000	1.00000	203.000000	1.00000
max	95.000000	1.000000	7861.000000	1.000000	80.000000	1.000000	850000.000000	9.40000	148.000000	1.000000	1.00000	285.000000	1.00000

수치형 데이터에 대해 describe를 쓰면 전체 데이터 개수, 평균, 표준편차, 최댓값, 최솟값, 사분위수(제 1사분위수, 제 2사분위수, 제 3사분위수)가 나온다. 근데 저게 수치형만 나오는 게 아니라 범주형이어도 값이 숫자면 다 나옴.

 

2. 범주형 데이터

얘는 R 서머리처럼 알아서 안 해주기때문에 범주형 데이터에 대한 요약을 보려면 include='O' 옵션을 줘야 한다.

 	Name 	Platform 	Genre 	Publisher
count 	16598 	16598 	16598 	16540
unique 	11493 	31 	12 	578
top 	Need for Speed: Most Wanted 	DS 	Action 	Electronic Arts
freq 	12 	2163 	3316 	1351

1. count: 값이 몇 개인가

2. unique: 고윳값이 몇 개인가(그니까 안 겹치는 값이요)

3. top: 최빈값

4. freq: 빈도(아마도 최빈값 빈도?)

 

df.isna().sum()

age                         0
anaemia                     0
creatinine_phosphokinase    0
diabetes                    0
ejection_fraction           0
high_blood_pressure         0
platelets                   0
serum_creatinine            0
serum_sodium                0
sex                         0
smoking                     0
time                        0
DEATH_EVENT                 0
dtype: int64

(결측값이 없는 데이터)

 

Rank              0
Name              0
Platform          0
Year            271
Genre             0
Publisher        58
NA_Sales          0
EU_Sales          0
JP_Sales          0
Other_Sales       0
Global_Sales      0
dtype: int64

(결측값이 있는 데이터)

 

.isna()를 쓰면 NaN인지 여부를 확인해주는거고 .isna().sum() 하면 칼럼에 있는 결측값이 몇 개인지 알려준다. 올 0이라고요? 축하합니다. 0이 아니라고요? 결측값 처리하셔야 합니다.

 

일괄로 채울거면 df.fillna(value) 쓰셔도 된다. 빼버릴거면 df.dropna()도 있다.

 

df.head()

해당 데이터프레임의 맨 위 행 5개를 보여준다. 괄호 안에 숫자를 쓰면 그 숫자만큼 보여주고, df.tail()을 쓰면 맨 뒤의 행 5개를 보여준다.

 

df.shape()

데이터프레임이 몇행 몇열인지를 (행, 열) 형태로 알려준다.

댓글

홈으로 돌아가기

검색 결과

"search" 검색 결과입니다.