일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- string
- GIT
- hive
- PySpark
- math
- Java
- Tkinter
- Google Excel
- PANDAS
- numpy
- Redshift
- PostgreSQL
- matplotlib
- Excel
- gas
- Kotlin
- Python
- SQL
- google apps script
- Apache
- list
- 파이썬
- Mac
- Github
- Google Spreadsheet
- c#
- dataframe
- django
- array
- Today
- Total
달나라 노트
Python Pandas : pandas.to_numeric (data type을 숫자로 바꾸기) 본문
Python Pandas : pandas.to_numeric (data type을 숫자로 바꾸기)
CosmosProject 2020. 11. 25. 17:21
pandas.to_numeric
to_numeric은 데이터를 숫자 형식으로 바꿔주는 역할을 합니다.
to_numeric의 대표적 인자는 아래와 같습니다.
pd.to_numeric(숫자로 변경할 대상, errors='ignore/raise/coerce')
숫자로 변경할 대상: to_numeric을 적용시켜 숫자형식으로 변경시킬 대상이며 스칼라값, list, tuple, Series 등이 대상으로 지정될 수 있습니다.
errors: error는 총 3개의 옵션이 존재합니다.
- errors = 'ignore' -> 만약 숫자로 변경할 수 없는 데이터라면 숫자로 변경하지 않고 원본 데이터를 그대로 반환합니다.
- errors = 'coerce' -> 만약 숫자로 변경할 수 없는 데이터라면 기존 데이터를 지우고 NaN으로 설정하여 반환합니다.
- errors = 'raise' -> 만약 숫자로 변경할 수 없는 데이터라면 에러를 일으키며 코드를 중단합니다.
먼저 테스트용 Series를 생성합시다.
import pandas as pd
list_1 = ['1', '2', 3]
seri_1 = pd.Series(list_1)
print(seri_1)
print(type(seri_1))
- Output
0 1
1 2
2 3
dtype: object
<class 'pandas.core.series.Series'>
아래 예시를 보면 1, 2는 문자였고 3은 숫자인 Series에 to_numeric을 적용하여 모두 숫자형식으로 바꿨습니다.
그래서 dtype이 object에서 int64로 변환되었음을 알 수 있죠.
import pandas as pd
seri_1 = pd.to_numeric(seri_1)
print(seri_1)
print(type(seri_1))
- Output
0 1
1 2
2 3
dtype: int64
<class 'pandas.core.series.Series'>
아래 예시를 보면 1, 2는 문자였고 3은 숫자인 Series에 to_numeric을 적용하여 모두 숫자형식으로 바꿨습니다.
그래서 dtype이 object에서 int64로 변환되었음을 알 수 있죠.
import pandas as pd
seri_1 = pd.to_numeric(seri_1)
print(seri_1)
print(type(seri_1))
- Output
0 1
1 2
2 3
dtype: int64
<class 'pandas.core.series.Series'>
seri_2라는 Series에는 숫자로 변환할 수 없는 test라는 문자가 포함되어있습니다.
이때 to_numeric의 error 인자를 ignore로 설정했으니 이런 숫자로 변경할 수 없는 문자가 나와도 무시하고 지나가게됩니다.
import pandas as pd
list_2 = ['1', 'test', 3]
seri_2 = pd.Series(list_2)
print(seri_2)
print(type(seri_2))
seri_2 = pd.to_numeric(seri_2, errors='ignore')
print(seri_2)
print(type(seri_2))
- Output
0 1
1 test
2 3
dtype: object
<class 'pandas.core.series.Series'>
0 1
1 test
2 3
dtype: object
<class 'pandas.core.series.Series'>
to_numeric의 error 인자를 coerce로 설정했으니 숫자로 변경할 수 없는 문자를 nan으로 변경하여 반환합니다.
import pandas as pd
list_2 = ['1', 'test', 3]
seri_2 = pd.Series(list_2)
print(seri_2)
print(type(seri_2))
seri_2 = pd.to_numeric(seri_2, errors='coerce')
print(seri_2)
print(type(seri_2))
- Output
0 1
1 test
2 3
dtype: object
<class 'pandas.core.series.Series'>
0 1.0
1 NaN
2 3.0
dtype: float64
<class 'pandas.core.series.Series'>
to_numeric의 error 인자를 raise로 설정했으니 숫자로 변경할 수 없는 문자가 있을 경우 에러를 반환하고 코드를 중단합니다.
import pandas as pd
list_2 = ['1', 'test', 3]
seri_2 = pd.Series(list_2)
print(seri_2)
print(type(seri_2))
seri_2 = pd.to_numeric(seri_2, errors='raise')
print(seri_2)
print(type(seri_2))
- Output
0 1
1 test
2 3
dtype: object
<class 'pandas.core.series.Series'>
ValueError: Unable to parse string "test" at position 1
<class 'pandas.core.series.Series'>
to_numeric은 Series 뿐만 아니라 일반 스칼라 데이터에도 적용될 수 있습니다.
import pandas as pd
x = '1'
print(x)
print(type(x))
x = pd.to_numeric(x)
print(x)
print(type(x))
- Output
1
<class 'str'>
1
<class 'numpy.int64'>
'Python > Python Pandas' 카테고리의 다른 글
Python Pandas : concat (Series 합치기, DataFrame 합치기) (0) | 2021.01.05 |
---|---|
Python Pandas : value_counts (Series에 들어있는 값 개수 세기) (0) | 2021.01.05 |
Python Pandas : pandas.pivot_table (pivot, 세로 데이터를 가로 데이터로 변경) (0) | 2020.11.25 |
Python Pandas : pandas.DataFrame.rename (0) | 2020.11.24 |
Python Pandas : pandas.to_datetime (0) | 2020.11.23 |