TypeError: Python でシリーズを <Class 'Float'> に変換できません
この説明で、TypeError: 系列を <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()
出力:
これらの列のデータ型を見てみましょう。 Alcohol
データ フレームの dtypes
属性を使用して、データ型を見つけます。
Alcohol.dtypes
ここで、3つの列が整数列で、1つの浮動小数点列があり、2つの列がオブジェクトであることがわかります。これは、country
と continent
が単なる文字列であることを意味します。
出力:
spirit_servings
列を整数ではなく浮動小数点に変換したいとします。 系列メソッド astype()
を使用して float
を渡すだけです。これは、浮動小数点型に変換することを意味します。
データ フレームを変更する場合は、新しい列を追加するか、既存の spirit_servings
列を上書きできます。 dtypes
を定義して列のデータ型をチェックすると、それが変更されていることがわかり、spirit_servings
は浮動小数点列になりました。
Alcohol["spirit_servings"] = Alcohol.spirit_servings.astype(float)
Alcohol.dtypes
出力:
今、あなたはそれが何の役に立つのか疑問に思うかもしれません。 これは通常、数値が文字列として格納されているデータ ファイルがあり、それを Pandas 文字列に読み込んだが、それらに対して数学を実行したい場合に行います。
列で数学を実行するには、数値型である必要があるため、列の型は、より一般的なユースケースである float にする必要があります。 float 型に変換しないと、TypeError: cannot convert the series to <class 'float'>
のようなエラーが発生します。
もう 1つの疑問が生じます。実際に CSV ファイルを読み取る前に、どのようにして各列の型を見つけたのでしょうか? ここで、CSV 読み取りプロセス中にデータ型を変更します。 もう 1つのパラメータ dtype
を追加する必要があります。
それを辞書に渡します。 辞書のキーは spirit_servings
で、辞書の値は float です。 ここで、この列のデータ型を確認すると、再び spirit_servings
が浮動小数点に変換されていることがわかります。
Alcohol = pd.read_csv(
"http://bit.ly/drinksbycountry", dtype={"spirit_servings": "float"}
)
Alcohol.dtypes
出力:
これと上記の唯一の違いは、このメソッドが読み取りプロセス中にそれを行うことです。 上記では、データ フレームが既に作成された後に変換しました。
Python で Pandas シリーズのデータ型をエラーなしで変換する別の例
ここで、もう 1つのデータ セットと、チップ注文データを使用した別の例を示します。
CHIP_ORDERS = pd.read_table("http://bit.ly/chiporders")
CHIP_ORDERS.head()
コラムを見てみましょう。 item_price
列に注目したいと思います。
CHIP_ORDERS.dtypes
Pandas は item_price
列をオブジェクト、つまり文字列として保存しています。これは、これらが数値であることを理解していないためです。
それを使って数学を行うには、$
記号のような文字列から文字を削除する必要があります。 str
および replace()
メソッドを使用してドル記号を何も置き換えませんが、それだけでは十分ではありません。 シリーズに数学演算を適用しようとすると、エラーが発生します。
CHIP_ORDERS.item_price.str.replace("$", "").mean()
出力:
ValueError: could not convert string to float: '2.39 3.39 3.39...
これは、ドル記号を削除しても文字列のままであるため、float に型キャストする必要があるためです。 float に型キャストした後、数学演算を行うことができます。
CHIP_ORDERS.item_price.str.replace("$", "").astype(float).mean()
出力:
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
- AttributeError の解決: 'list' オブジェクト属性 'append' は読み取り専用です
- AttributeError の解決: Python で 'Nonetype' オブジェクトに属性 'Group' がありません
- AttributeError: 'generator' オブジェクトに Python の 'next' 属性がありません
- AttributeError: 'numpy.ndarray' オブジェクトに Python の 'Append' 属性がありません
- AttributeError: Int オブジェクトに属性がありません
- AttributeError: Python で 'Dict' オブジェクトに属性 'Append' がありません