2022年4月19日火曜日

マイクロソフトは曲者になりつつあります。

 と言っても日本語環境なのでガラパゴス化と言った方が性格かも?

殆どのソフトでは半角や全角文字等も数字の変換が問題ないのですが、機械学習に使うpandas(python)は見事に認識しません。

ハマっているのはこうです。

ValueError: invalid literal for int() with base 10: '5,300.00'

エクセルで取り込んだデータの数字が5,300.00でした念の為データフレームの列を正規化df['見積金額'].str.normalize("NFKC")としてもエクセルの',''.00'は半角としても文字と認識するようで5,300.00を型変換しても上記の様なエラーが出ます。

pandasは数字として認識しません。5300にしてやっとstr()からint()に変換出来ました。

国内の会社でデータサイエンスをしている人には常識かもしれませんが、かなりの時間悩みました。

強制的に変換するとNaNになってしまいます。

#df['見積単価'] = pd.to_numeric(df['見積単価'], errors='coerce')

変にコピペできない様にコメントアウトしています。

マルチインデックスにしても上手く順番通りにならないエラーはまだ不明です。

pandasのメソッド自体が間違っているのかでも悩むのにこの手のエラーはタチが悪いです。


df['見積金額'] = df['見積金額'].str.replace(',','')
df['見積金額'] = df['見積金額'].str.rstrip('0')
df['見積金額'] = df['見積金額'].str.rstrip('.')
df['見積金額']=df['見積金額'].fillna(0)
df['見積金額']
df['見積金額'].astype('int')
0            5300
1         7163000
2               0
3               0
4               0
           ...   
217849    5836700
217850    6517200
217851    1954400
217853          0
217854          0
Name: 見積金額, Length: 194891, dtype: int64

整数型に変換出来ました。

0 件のコメント:

コメントを投稿