英国でデータサイエンスを学ぶ

30代になってから海外で統計学・機械学習・プログラミングを勉強

MENU

Pythonでカンマ区切りされている文字列表記の数字を数値データに変換する方法

ダウンロードしたcsvのデータでは数値をカンマ区切りで表現されており、それをint()やfloat()で数値に変換できなかったので、その対応のメモです。


例えば、1,234(千二百三十四)のように、3桁ごとにカンマを使用して数値を表現することはよくありますが、これを文字列データから数値データに変換しようとしてint("1,234")のようにしてもエラーになってしまいます。

解決策としては、カンマを取り除いてから変換してやる必要があります。

number = "1,234,567"
print(type(number))
#->この状態では<class 'str'>となっています。

仮に、これをintで変換しようとすると、

number = "1,234,567"
int(number)

以下のようなエラーが出てしまいます。

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: '1,234,567'

うーん残念。

解決策はカンマを取り除いて処理

以下のように対応すると数値に変換ができました。
(他にもっと簡単な方法があるのかもしれませんが。。。)

number = "1,234,567"
number = number.replace(",","")#カンマを削除してます
print(type(number))
#->この状態では<class 'str'>となっています。

print(number)
#出力してみると"1234567"となっています。
transformed1 = int(number)
transformed2 = float(number)
#無事にエラーなく変換できました。

#出力してみると
print(transformed1)
#1234567
print(transformed2)
#1234567.0
#となっています。