python 기초
pandas dadtaframe 수치형 / 범주형 분리
난개발자
2024. 8. 24. 21:22
728x90
Data frame 처리를 하다보면 수치형과 범주형 데이터를 따로 처리하고 싶을 때가 있다.
데이터 프레임을 분류하는 몇가지 방법이 있다.
1. data frame에 _get_numeric_data 함수가 있어서 이를 써도 된다.
: 편한 장점이 있는데, 범주형엔 별도의 함수가 없는 듯하다.
2. select_dtypes 함수를 이용, 원하는 데이터 type만 가져올수 있다.
3. dtypes를 보고 해당 dtype에 해당되는 column만 선택한다.
: 약간 불편하지만, 데이터 타입들을 확인하고 갈수 있어서 더 안심이 되는 느낌이다.
In [1]:
from IPython.core.display import display, HTML
display(HTML("<style>.container {width:90% !important;}</style>"))
import pandas as pd
import seaborn as sns
In [2]:
df=pd.DataFrame(sns.load_dataset('mpg'))
df.head()
Out[2]:
mpg | cylinders | displacement | horsepower | weight | acceleration | model_year | origin | name | |
---|---|---|---|---|---|---|---|---|---|
0 | 18.0 | 8 | 307.0 | 130.0 | 3504 | 12.0 | 70 | usa | chevrolet chevelle malibu |
1 | 15.0 | 8 | 350.0 | 165.0 | 3693 | 11.5 | 70 | usa | buick skylark 320 |
2 | 18.0 | 8 | 318.0 | 150.0 | 3436 | 11.0 | 70 | usa | plymouth satellite |
3 | 16.0 | 8 | 304.0 | 150.0 | 3433 | 12.0 | 70 | usa | amc rebel sst |
4 | 17.0 | 8 | 302.0 | 140.0 | 3449 | 10.5 | 70 | usa | ford torino |
DataFrame._get_numeric_date 활용
In [3]:
df._get_numeric_data()
Out[3]:
mpg | cylinders | displacement | horsepower | weight | acceleration | model_year | |
---|---|---|---|---|---|---|---|
0 | 18.0 | 8 | 307.0 | 130.0 | 3504 | 12.0 | 70 |
1 | 15.0 | 8 | 350.0 | 165.0 | 3693 | 11.5 | 70 |
2 | 18.0 | 8 | 318.0 | 150.0 | 3436 | 11.0 | 70 |
3 | 16.0 | 8 | 304.0 | 150.0 | 3433 | 12.0 | 70 |
4 | 17.0 | 8 | 302.0 | 140.0 | 3449 | 10.5 | 70 |
... | ... | ... | ... | ... | ... | ... | ... |
393 | 27.0 | 4 | 140.0 | 86.0 | 2790 | 15.6 | 82 |
394 | 44.0 | 4 | 97.0 | 52.0 | 2130 | 24.6 | 82 |
395 | 32.0 | 4 | 135.0 | 84.0 | 2295 | 11.6 | 82 |
396 | 28.0 | 4 | 120.0 | 79.0 | 2625 | 18.6 | 82 |
397 | 31.0 | 4 | 119.0 | 82.0 | 2720 | 19.4 | 82 |
398 rows × 7 columns
dytpes를 이용, 데이터 타입을 체크한다.
In [4]:
df.dtypes
Out[4]:
mpg float64
cylinders int64
displacement float64
horsepower float64
weight int64
acceleration float64
model_year int64
origin object
name object
dtype: object
object와 나머지로 data를 나눠준다.
In [5]:
df_obj=df[df.dtypes[df.dtypes=='object'].index]
df_num=df[df.dtypes[df.dtypes!='object'].index]
In [6]:
df_obj
Out[6]:
origin | name | |
---|---|---|
0 | usa | chevrolet chevelle malibu |
1 | usa | buick skylark 320 |
2 | usa | plymouth satellite |
3 | usa | amc rebel sst |
4 | usa | ford torino |
... | ... | ... |
393 | usa | ford mustang gl |
394 | europe | vw pickup |
395 | usa | dodge rampage |
396 | usa | ford ranger |
397 | usa | chevy s-10 |
398 rows × 2 columns
In [7]:
df_num
Out[7]:
mpg | cylinders | displacement | horsepower | weight | acceleration | model_year | |
---|---|---|---|---|---|---|---|
0 | 18.0 | 8 | 307.0 | 130.0 | 3504 | 12.0 | 70 |
1 | 15.0 | 8 | 350.0 | 165.0 | 3693 | 11.5 | 70 |
2 | 18.0 | 8 | 318.0 | 150.0 | 3436 | 11.0 | 70 |
3 | 16.0 | 8 | 304.0 | 150.0 | 3433 | 12.0 | 70 |
4 | 17.0 | 8 | 302.0 | 140.0 | 3449 | 10.5 | 70 |
... | ... | ... | ... | ... | ... | ... | ... |
393 | 27.0 | 4 | 140.0 | 86.0 | 2790 | 15.6 | 82 |
394 | 44.0 | 4 | 97.0 | 52.0 | 2130 | 24.6 | 82 |
395 | 32.0 | 4 | 135.0 | 84.0 | 2295 | 11.6 | 82 |
396 | 28.0 | 4 | 120.0 | 79.0 | 2625 | 18.6 | 82 |
397 | 31.0 | 4 | 119.0 | 82.0 | 2720 | 19.4 | 82 |
398 rows × 7 columns
728x90