여러분은 데이터를 분석할 때 제일 먼저 해야 하는 게 뭔지 아십니까? 물론 데이터를 얻는걸 제일 먼저 해야겠지만, 데이터를 다 얻고 나면 데이터를 체크하고 전처리로 뭘 할 지를 정해야 한다. 근데 지금 리눅스 업글중이라 둘 다 다룰 수 있을지는 모르겠음.
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()
데이터프레임이 몇행 몇열인지를 (행, 열) 형태로 알려준다.
'Coding > Python' 카테고리의 다른 글
| 매우 주관적인 씨본 컬러맵 고르는 방법 (0) | 2026.01.26 |
|---|---|
| 포켓몬과 이항분포 (0) | 2026.01.21 |
| 폐암 데이터를 분석해서 생존률을 비교해보자 (0) | 2026.01.07 |
| 베이즈 정리 (0) | 2026.01.06 |
| 인플루엔자의 해마글루티닌 게놈을 받아서 MSA를 해보자 (0) | 2026.01.05 |