열 변경 입력 판

네 개의 주요한 옵션을 변환하기 위한 유형에서 판다:

읽기에 대한 자세한 설명과 사용법의 이러한 각각의 방법이 있습니다.

변환하는 가장 좋은 방법은 열을 하나 이상의 데이터 프레임 숫자값은 사용하는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또는float64dtype(또는 어떤 정수 폭은 기본 플랫폼).,

는 일반적으로 여러분이 원하는 것이,하지만 당신이 원하는 어떤 경우 일부를 저장 메모리고 사용하는 컴팩트 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’stringdtype 으로 변경되었습니다.

기본적으로 이 메서드는 각 열의 개체 값에서 유형을 추론합니다., 우리는 이를 변경할 수 있습니다 전달하여infer_objects=False

>>> df.convert_dtypes(infer_objects=False).dtypes a objectb stringdtype: object

이제 열’a’남아있는 개체를 열 팬더는 그것을 알고 있으로 설명 될 수있는’정수’칼럼(내부적으로 실infer_dtype)그러나지 않았추가 정확히 무엇 dtype 의 정수 있어야 하므로 변환하지 않습니다. ‘B’열은’string’값을 보유하고있는 것으로 인식됨에 따라 다시’string’dtype 으로 변환되었습니다.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다