TypeError: Python에서 시리즈를 <Class 'Float'>로 변환할 수 없습니다.

Salman Mehmood 2023년6월21일
TypeError: Python에서 시리즈를 <Class 'Float'>로 변환할 수 없습니다.

이 설명을 통해 TypeError: cannot convert the series to <class 'float'> 오류가 발생하는 이유를 알아봅니다. 또한 이를 수정하고 Python에서 Pandas 시리즈의 데이터 유형을 변경하는 방법도 배웁니다.

Python에서 오류 없이 Pandas 시리즈의 데이터 유형 변환

예제 데이터 세트로 이동해 보겠습니다. Pandas 라이브러리를 가져온 다음 데이터 세트를 가져옵니다. 국가별 알코올 소비부터 시작하겠습니다.

Alcohol이라는 변수를 선언하고 http://bit.ly/drinksbycountry에서 CSV 파일을 읽습니다.

다음 코드를 실행한 후 head()를 보면 6개의 열과 4개의 행이 숫자로 표시되어야 합니다.

import pandas as pd

Alcohol = pd.read_csv("http://bit.ly/drinksbycountry")
Alcohol.head()

출력:

python typeerror는 시리즈를 float 클래스로 변환할 수 없음 - 데이터 세트

이러한 열의 데이터 유형을 살펴보겠습니다. Alcohol 데이터 프레임의 dtypes 속성을 사용하여 데이터 유형을 찾습니다.

Alcohol.dtypes

이제 열 중 3개가 정수 열이고 부동 소수점 열이 1개 있으며 두 열이 개체인 것을 볼 수 있습니다. 즉, 국가대륙은 문자열일 뿐입니다.

출력:

열의 데이터 유형

spirit_servings 열을 정수가 아닌 부동 소수점으로 변환한다고 가정합니다. 우리가 해야 할 일은 astype() 계열 메서드를 사용하고 float를 전달하는 것입니다. 이는 부동 소수점 유형으로 변환한다는 의미입니다.

데이터 프레임을 수정하려면 새 열을 추가하거나 기존 spirit_servings 열을 덮어쓸 수 있습니다. 열의 데이터 유형을 확인하기 위해 dtypes를 정의하면 변경된 것을 볼 수 있으며 spirit_servings는 이제 부동 소수점 열입니다.

Alcohol["spirit_servings"] = Alcohol.spirit_servings.astype(float)
Alcohol.dtypes

출력:

astype()을 사용하여 Spirit_Servings 열 변환

이제 당신은 그것의 용도가 무엇인지 궁금할 것입니다. 일반적으로 숫자가 문자열로 저장된 데이터 파일이 있고 Pandas 문자열로 읽었지만 수학을 수행하려는 경우 이 작업을 수행합니다.

열에서 수학을 수행하려면 숫자 유형이어야 하므로 열 유형은 더 일반적인 사용 사례인 부동 소수점이어야 합니다. float 유형으로 변환하지 않으면 TypeError: cannot convert the series to <class 'float'>와 같은 오류가 발생합니다.

한 가지 질문이 더 생깁니다. 실제로 CSV 파일을 읽기 전에 각 열의 유형을 어떻게 찾았습니까? 이제 CSV 읽기 프로세스 중에 데이터 유형을 변경합니다. 매개변수 dtype을 하나 더 추가해야 합니다.

사전에 전달합니다. 사전 키는 spirit_servings이고 사전 값은 float입니다. 이제 이 열의 데이터 유형을 확인하면 다시 한 번 spirit_servings가 부동 소수점으로 변환되었음을 알 수 있습니다.

Alcohol = pd.read_csv(
    "http://bit.ly/drinksbycountry", dtype={"spirit_servings": "float"}
)
Alcohol.dtypes

출력:

dtype을 사용하여 Spirit_Servings 열 변환

이것과 위의 유일한 차이점은 이 방법이 읽기 프로세스 중에 수행한다는 것입니다. 위에서 데이터 프레임이 이미 생성된 후에 변환했습니다.

Python에서 오류 없이 Pandas 시리즈의 데이터 유형을 변환하는 또 다른 예

이제 하나 이상의 데이터 세트와 칩 주문 데이터를 사용하는 또 다른 예를 보여드리겠습니다.

CHIP_ORDERS = pd.read_table("http://bit.ly/chiporders")
CHIP_ORDERS.head()

칼럼을 살펴보자. item_price 열에 초점을 맞추고 싶습니다.

칩 주문 데이터

CHIP_ORDERS.dtypes

Pandas는 item_price 열을 문자열을 의미하는 개체로 저장합니다. 이것이 숫자라는 것을 이해하지 못하기 때문입니다.

칩 주문 열의 데이터 유형

그것으로 수학을 하려면 $ 기호와 같은 시리즈에서 문자를 제거해야 합니다. strreplace() 메서드를 사용하여 달러 기호를 아무것도 바꾸지 않을 수 있지만 충분하지 않습니다. 시리즈에 수학 연산을 적용하려고 하면 오류가 발생합니다.

CHIP_ORDERS.item_price.str.replace("$", "").mean()

출력:

ValueError: could not convert string to float: '2.39 3.39 3.39...

달러 기호를 제거했지만 여전히 문자열이므로 float로 타입 변환해야 하기 때문입니다. 플로트로 타입캐스트한 후 수학 연산을 수행할 수 있습니다.

CHIP_ORDERS.item_price.str.replace("$", "").astype(float).mean()

출력:

![astype을 사용하여 부동으로 형변환](</img/Python/astype.png>를 사용하여 부동으로 형변환

Salman Mehmood avatar Salman Mehmood avatar

Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.

LinkedIn

관련 문장 - Python Error