주피터 노트북에서 바로 불러왔다.
유용한 기능이지만... 앞으로는 안쓸것 같다..
데이터 전처리 - 1¶
넘파이, 판다스 패키지 사용 후 데이터 프레임 생성, columns 따로 설정¶
In [3]:
import pandas as pd
import numpy as np
raw_data = {
'first_name': ['Jason', np.nan, 'Tina', 'Jake', 'Amy'],
'last_name': ['Miller', np.nan, 'Ali', 'Milner', 'Cooze'],
'age': [42, np.nan, 36, 24, 73],
'sex': ['m', np.nan, 'f', 'm', 'f'],
'preTestScore': [4, np.nan, np.nan, 2, 3],
'postTestScore': [25, np.nan, np.nan, 62, 70]}
df = pd.DataFrame(raw_data, columns = ['first_name', 'last_name', 'age', 'sex', 'preTestScore','postTestScore'])
df
Out[3]:
first_name | last_name | age | sex | preTestScore | postTestScore | |
---|---|---|---|---|---|---|
0 | Jason | Miller | 42.0 | m | 4.0 | 25.0 |
1 | NaN | NaN | NaN | NaN | NaN | NaN |
2 | Tina | Ali | 36.0 | f | NaN | NaN |
3 | Jake | Milner | 24.0 | m | 2.0 | 62.0 |
4 | Amy | Cooze | 73.0 | f | 3.0 | 70.0 |
In [7]:
df.isnull().sum()/len(df) #데이터 프레임 널값의 비율을 확인
Out[7]:
first_name 0.2
last_name 0.2
age 0.2
sex 0.2
preTestScore 0.4
postTestScore 0.4
dtype: float64
드롭: 삭제¶
In [8]:
df.dropna()
Out[8]:
first_name | last_name | age | sex | preTestScore | postTestScore | |
---|---|---|---|---|---|---|
0 | Jason | Miller | 42.0 | m | 4.0 | 25.0 |
3 | Jake | Milner | 24.0 | m | 2.0 | 62.0 |
4 | Amy | Cooze | 73.0 | f | 3.0 | 70.0 |
In [9]:
df_cleaned = df.dropna(how='all') #how에서 'all' 과 'any'사용 가능 and와 or의 역할
df_cleaned
Out[9]:
first_name | last_name | age | sex | preTestScore | postTestScore | |
---|---|---|---|---|---|---|
0 | Jason | Miller | 42.0 | m | 4.0 | 25.0 |
2 | Tina | Ali | 36.0 | f | NaN | NaN |
3 | Jake | Milner | 24.0 | m | 2.0 | 62.0 |
4 | Amy | Cooze | 73.0 | f | 3.0 | 70.0 |
In [4]:
df['location'] = np.nan #NaN값을 가진 location 열 생성
df
Out[4]:
first_name | last_name | age | sex | preTestScore | postTestScore | location | |
---|---|---|---|---|---|---|---|
0 | Jason | Miller | 42.0 | m | 4.0 | 25.0 | NaN |
1 | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
2 | Tina | Ali | 36.0 | f | NaN | NaN | NaN |
3 | Jake | Milner | 24.0 | m | 2.0 | 62.0 | NaN |
4 | Amy | Cooze | 73.0 | f | 3.0 | 70.0 | NaN |
In [17]:
df.dropna(axis=1, how = 'all') #모두 NaN 값을 가진 열 삭제
Out[17]:
first_name | last_name | age | sex | preTestScore | postTestScore | |
---|---|---|---|---|---|---|
0 | Jason | Miller | 42.0 | m | 4.0 | 25.0 |
1 | NaN | NaN | NaN | NaN | NaN | NaN |
2 | Tina | Ali | 36.0 | f | NaN | NaN |
3 | Jake | Milner | 24.0 | m | 2.0 | 62.0 |
4 | Amy | Cooze | 73.0 | f | 3.0 | 70.0 |
In [19]:
df.dropna(axis = 0, thresh =1) #행의 데이터가 1개라도 존재하면 놔둔다
Out[19]:
first_name | last_name | age | sex | preTestScore | postTestScore | location | |
---|---|---|---|---|---|---|---|
0 | Jason | Miller | 42.0 | m | 4.0 | 25.0 | NaN |
2 | Tina | Ali | 36.0 | f | NaN | NaN | NaN |
3 | Jake | Milner | 24.0 | m | 2.0 | 62.0 | NaN |
4 | Amy | Cooze | 73.0 | f | 3.0 | 70.0 | NaN |
In [20]:
df.dropna(thresh =5) #5개 이상의 데이터가 있어야 보존
Out[20]:
first_name | last_name | age | sex | preTestScore | postTestScore | location | |
---|---|---|---|---|---|---|---|
0 | Jason | Miller | 42.0 | m | 4.0 | 25.0 | NaN |
3 | Jake | Milner | 24.0 | m | 2.0 | 62.0 | NaN |
4 | Amy | Cooze | 73.0 | f | 3.0 | 70.0 | NaN |
채우기: 비어있는 값의 빈칸 채우기¶
In [5]:
df.fillna(0) #비어있는 값 0으로 모두 채움
Out[5]:
first_name | last_name | age | sex | preTestScore | postTestScore | location | |
---|---|---|---|---|---|---|---|
0 | Jason | Miller | 42.0 | m | 4.0 | 25.0 | 0.0 |
1 | 0 | 0 | 0.0 | 0 | 0.0 | 0.0 | 0.0 |
2 | Tina | Ali | 36.0 | f | 0.0 | 0.0 | 0.0 |
3 | Jake | Milner | 24.0 | m | 2.0 | 62.0 | 0.0 |
4 | Amy | Cooze | 73.0 | f | 3.0 | 70.0 | 0.0 |
'데이터 청년 캠퍼스(2022) > 배운 내용 정리' 카테고리의 다른 글
7.13(수) Colab 활용 - csv 파일 다루기 (0) | 2022.07.14 |
---|---|
7.12(화) Numpy (마무리 복습 2) (0) | 2022.07.13 |
7.11(월) NumPy (마무리 복습) (0) | 2022.07.13 |
7.11(월) 파이썬 기반 머신러닝 환경 구축하기 (0) | 2022.07.11 |
7.8(수) - csv 파일 분석(3) (0) | 2022.07.06 |