ValueError: could not convert string to float の原因と今すぐできる修正法

Last Updated on 2025年7月28日

Pythonで数値データを扱う処理をしていると、以下のようなエラーが表示されることがあります。

このエラーは、文字列(str)から浮動小数点(float)への変換に失敗したときに出現します。

目次

ValueError: could not convert string to float の意味

このエラーは、float() 関数を使って文字列を浮動小数点に変換しようとした際に、文字列が数値形式でないときに発生します。

エラー例:

上記のように、数値でない文字列をfloatに変換しようとすると、ValueErrorが発生します。

ValueErrorが起きるよくあるケース

次のようなケースで頻繁にこのエラーが発生します。

① 数字以外の文字列をfloatに変換

② カンマや全角記号が含まれている

③ 空文字列をfloatに変換

④ 日本語の入った文字列

ValueError: could not convert string to float の修正方法とコード例

このエラーを修正するには、floatに変換する前に文字列の中身を確認・処理することが必要です。

① isdigitやreplaceで前処理

② try-exceptで例外処理

③ 空文字列をチェック

修正前にチェックすべきポイント

次のポイントをチェックすることで、エラーの発生を未然に防げます。

  • 変換対象が「数字のみ」で構成されているか?
  • カンマや通貨記号が入っていないか?
  • 空文字列やNoneではないか?
  • 全角数字や記号が混在していないか?

実際のプロジェクトでの対応例

CSVファイルを読み込む処理での対応

このように、CSVやExcelから読み込んだデータは人が入力しているため、変換できない文字列が混ざっていることがよくあります。

数値変換時の注意点

  • float(100) → OK
  • float("100.5") → OK
  • float(" 100.5\n") → OK(余白や改行は自動除去される)
  • float("¥100") → NG(記号は不可)

日本語のファイルやサイトから取得したデータでは、全角数字マークなどがよく含まれます。

よくある質問と補足

Q. int()との違いは?

int()は整数のみを受け付け、float()は小数も含めた数値を変換できます。変換エラーの原因は類似しています。

Q. replaceで一括置換すれば安全?

replaceは有効ですが、変換対象によっては正規表現の方が安全な場合もあります。

Q. pandasを使えば自動で変換できる?

pandas.read_csv(..., dtype=...)to_numeric を使えば、変換できない値をNaNにできます。


このエラーは初心者のつまづきポイントのひとつです。変換前のデータ検証例外処理を組み合わせて、安定したコードを目指しましょう。

他のPythonエラー対策記事も併せてご活用ください。