네 개의 주요한 옵션을 변환하기 위한 유형에서 판다:
읽기에 대한 자세한 설명과 사용법의 이러한 각각의 방법이 있습니다.
변환하는 가장 좋은 방법은 열을 하나 이상의 데이터 프레임 숫자값은 사용하는pandas.to_numeric()
.
이 함수를 변경하려고하는 숫자가 아닌 객체(문자열 등)을 정수 또는 부동 소수점 숫자로 적합합니다.
기본 사용법
입력을to_numeric()
시리즈입니다 또는 하나의 열의 데이터 프레임.,보시다시피 새로운 시리즈가 반환됩니다. 기억을 할당할 이 출력하여 변수 또는 열 이름을 계속 사용:
# convert Seriesmy_series = pd.to_numeric(my_series)# convert column "a" of a DataFramedf = pd.to_numeric(df)
사용할 수도 있습니다 그것을 변환하는 여러 열의 데이터 프레임을 통해apply()
방법:
만큼의 값을 수 있는 모든 변환할 수있는,아마도 당신이 필요합니다.
오류 처리
그러나 어떤 경우에는 값으로 변환할 수 없습니다 숫자 형식?,
to_numeric()
또는errors
키워드를 인수할 수 있는 힘 숫자가 아닌 값을NaN
,또는 단순히 무시하는 열을 포함하는 이러한 값입니다.
여기에 예를 사용하여 일련의 문자열s
있는 객체 dtype:
>>> s = pd.Series()>>> s0 11 22 4.73 pandas4 10dtype: object
기본 행동을 인상할 수 없는 경우에는 변환 값을 입력합니다., 이 경우에는,그것을 극복할 문자열’팬더’:
>>> pd.to_numeric(s) # or pd.to_numeric(s, errors='raise')ValueError: Unable to parse string
보다는 오히려 실패하고,우리가 원하는’팬더’로 간주할 수 없는 나쁜/숫자 값입니다., 우리는 강제 할 수 있습니다 잘못된 값을NaN
사용하여 다음과 같이errors
키워드를 인수:
>>> pd.to_numeric(s, errors='coerce')0 1.01 2.02 4.73 NaN4 10.0dtype: float64
세 번째 옵션을 위한errors
은 그냥 무시하고 작업하는 경우에는 잘못된 값이 발견되:
>>> pd.to_numeric(s, errors='ignore')# the original Series is returned untouched
이 지난 옵션은 특히 유로 변환하려는 경우 귀하의 전체 데이터 프레임지는 알 수 없습의 열 변환될 수 있는 안정적으로 숫자 형식입니다., 이 경우 다음과 같이 작성하십시오.
df.apply(pd.to_numeric, errors='ignore')
함수는 데이터 프레임의 각 열에 적용됩니다. 할 수 있는 열로 변환하여 숫자 형식으로 변환됩니다 동안 열 수 없다(예를 들어 그들이 포함 숫자가 아닌 문자열이나 날짜)될 것입니다.
Downcasting
기본적으로 변환을 가진to_numeric()
줄 것 중 하나는int64
또는float64
dtype(또는 어떤 정수 폭은 기본 플랫폼).,
는 일반적으로 여러분이 원하는 것이,하지만 당신이 원하는 어떤 경우 일부를 저장 메모리고 사용하는 컴팩트 dtype,같은float32
또는int8
?
>>> s = pd.Series()>>> s0 11 22 -7dtype: int64
Downcasting 하는’정수’사용 가능한 가장 작은 정수로 보유할 수 있는 값:
>>> pd.to_numeric(s, downcast='integer')0 11 22 -7dtype: int8
Downcasting’플로트’마찬가지로 예상보다 작은 정상적인 부동 유형
>>> pd.to_numeric(s, downcast='float')0 1.01 2.02 -7.0dtype: float32
astype()
astype()
방법을 사용하면 당신에 대해 명시 dtype 당신은 당신의 데이터 프레임 또는 시리즈입니다., 그것은 당신이 시도하고 다른 어떤 하나의 유형에서 갈 수 있다는 점에서 매우 다양합니다.
기본 사용법
전화하는 방법에 객체를 변환할 고astype()
시로 변환한다.
통지가 말했다”시도”-는 경우에는astype()
는 방법을 알고하지 않을 변환하는 값에서 시리즈 또는 데이터 프레임,그것은 오류가 발생합니다. 예를 들어,당신은NaN
또는inf
값 오류를 얻을 수 있도하로 변환하의 정수입니다.판다 0.20 으로
.,0,이 오류는errors='ignore'
를 전달하여 억제 할 수 있습니다. 원래 객체는 그대로 반환됩니다.
주의
astype()
는 강력하지만 때로는 값을”잘못”변환합니다. 예를 들어,
>>> s = pd.Series()>>> s0 11 22 -7dtype: int64
이러한 작은 정수,그래서는 방법에 대해로 변환 부호 없는 8 비트 입력을 저장하는 메모리가 있습니까?
>>> s.astype(np.uint8)0 11 22 249dtype: uint8
변환이 작동했지만-7 이 249(즉,28-7)가되도록 래핑되었습니다!대신
pd.to_numeric(s, downcast='unsigned')
를 사용하여 다운 캐스트하려고하면이 오류를 방지 할 수 있습니다.,
infer_objects()
버전 0.21.0 의 팬더는 방법을 소개infer_objects()
로 변환하기 위한 열의 데이터 프레임 있는 객체에 데이터을 더 특정 유형(부드러운 변환).
예를 들어,여기에 두 개의 개체 유형의 열이있는 데이터 프레임이 있습니다. 보 실제 정수이고 다른 보유하고 나타내는 문자열 정수:
>>> df = pd.DataFrame({'a': , 'b': }, dtype='object')>>> df.dtypesa objectb objectdtype: object
Usinginfer_objects()
,유형을 변경할 수 있습의 열’a’int64:
>>> df = df.infer_objects()>>> df.dtypesa int64b objectdtype: object
열’b’되었다 혼자 남아 이 값을 문자열이지의 정수입니다., 두 열의 변환을 정수 유형으로 강제 시도하고 싶다면 대신df.astype(int)
를 사용할 수 있습니다.
convert_dtypes()
Version1.0 위의 방법이 포함되어 있convert_dtypes()
변환하는 시리즈와 데이터 프레임에 열을 가능한 최상의 dtype 지원pd.NA
누락 값입니다.
여기서”최상의”은 값을 유지하는 데 가장 적합한 유형을 의미합니다., 예를 들어,이는 판 정수 입력하는 경우 모든 값은 정수(또는 누락 값):객체의 열 Python 정수 객체를 변환하는Int64
,의 열 NumPyint32
값이 될 것이 판 dtypeInt32
.,
와 우리의object
데이터 프레임df
우리는 다음과 같은 결과를 얻을 수 있습니다:
>>> df.convert_dtypes().dtypes a Int64b stringdtype: object
이후 열’a’개최 정수 값으로 전환되었다Int64
타입(수 없는 값 달리int64
).
열’b’에는 문자열 객체가 포함되어 있으므로 pandas’string
dtype 으로 변경되었습니다.
기본적으로 이 메서드는 각 열의 개체 값에서 유형을 추론합니다., 우리는 이를 변경할 수 있습니다 전달하여infer_objects=False
>>> df.convert_dtypes(infer_objects=False).dtypes a objectb stringdtype: object
이제 열’a’남아있는 개체를 열 팬더는 그것을 알고 있으로 설명 될 수있는’정수’칼럼(내부적으로 실infer_dtype
)그러나지 않았추가 정확히 무엇 dtype 의 정수 있어야 하므로 변환하지 않습니다. ‘B’열은’string’값을 보유하고있는 것으로 인식됨에 따라 다시’string’dtype 으로 변환되었습니다.피>