Pythonにて、ある配列があります。そのうち、kakei['支出']という列があります。
0 1,526
1 1,808
2 1,712
3 1,515
4 1,874
これを以下の処理しようとするとエラーが発生します(以下にてエラーもコピーしています)。
Python
1kakei['支出']=pd.to_numeric(kakei['支出']) 2 3--------------------------------------------------------------------------- 4ValueError Traceback (most recent call last) 5pandas\_libs\lib.pyx in pandas._libs.lib.maybe_convert_numeric() 6 7ValueError: Unable to parse string "1,526" 8 9During handling of the above exception, another exception occurred: 10 11ValueError Traceback (most recent call last) 12<ipython-input-224-10d7f4a15742> in <module> 13----> 1 kakei['支出']=pd.to_numeric(kakei['支出']) 14 2 kakei['日付']=kakei['日付'].astype(str) 15 3 kakei['日付']=pd.to_datetime(kakei['日付'],format='%Y年%m月') 16 4 kakei['POSIX']=kakei['日付'].astype['int64'].values//10**9 17 5 kakei['年']=kakei['日付'].dt.year 18 19~\Anaconda3\lib\site-packages\pandas\core\tools\numeric.py in to_numeric(arg, errors, downcast) 20 149 coerce_numeric = errors not in ("ignore", "raise") 21 150 values = lib.maybe_convert_numeric( 22--> 151 values, set(), coerce_numeric=coerce_numeric 23 152 ) 24 153 25 26pandas\_libs\lib.pyx in pandas._libs.lib.maybe_convert_numeric() 27 28ValueError: Unable to parse string "1,526" at position 0
おそらくエラーの原因は対象となる数値にカンマが入っていることだと考えまして、カンマを削除しようと以下のコードを実行させようとしました。
ただ、こちらも、「error」にはならないのですが、以下に示す通り戻り値ではカンマが削除されません。対処法をご存知の方、ご指導いただけませんでしょうか?
Python
1kakei['支出']=kakei['支出'].replace(',','') 2kakei['支出'] 3 4C:\Users\user-PC\Anaconda3\lib\site-packages\ipykernel_launcher.py:1: SettingWithCopyWarning: 5A value is trying to be set on a copy of a slice from a DataFrame. 6Try using .loc[row_indexer,col_indexer] = value instead 7 8See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy 9 """Entry point for launching an IPython kernel. 100 1,526 111 1,808 122 1,712 133 1,515 144 1,874 15 ... 1658 2,499 1759 2,731 1860 2,943 1961 2,296 2062 1,118 21Name: 支出, Length: 63, dtype: object
2020/5/10 追加:
皆様にご指導うけ、コード全文を以下に掲載いたしました。当初は以下のようにしてエラーになってしまったことについてお伺いしました。その後、カンマを削除したりしていくとまた別のエラー出て・・・ということになり先へ進めない状態になってしまっております。
Python
1%matplotlib inline 2import numpy as np 3import pandas as pd 4import seaborn as sb 5import matplotlib.pyplot as plt 6from datetime import datetime 7from sklearn.metrics import mean_absolute_error 8 9kakei=pd.read_excel('FEH_00200565_200510154100.xlsx')#気象庁からDLしたデータ、以下にhead()を表示します。 10kakei.head(10) 11 12統計名: 家計消費状況調査 平成29年改定(2015年1月~) 二人以上の世帯 Unnamed: 2 Unnamed: 3 130 表番号: 1-1 NaN NaN 141 表題: [インターネットを利用した1世帯当たり1か月間の支出] 全国・地方・都市階級別 NaN NaN 152 実施年月: - - NaN 163 表章項目: 00000 1世帯当たり1か月間の支出額 NaN 174 世帯区分(平成29年改定): 0030 二人以上の世帯 NaN 185 品目区分(平成29年改定): 0950 69 宿泊料、運賃、パック旅行費(インターネット上での決済)【円】 NaN 196 全国・地方・都市階級(平成29年改定): 0050 関東 NaN 207 NaN NaN NaN NaN 218 時間軸(月次・四半期・年次) コード 時間軸(月次・四半期・年次) 値 注釈 229 2015000101 2015年1月 1,526 NaN 23 24kakei=kakei.drop('Unnamed: 3',axis=1)#一番右の列を不要なので削除 25kakei.columns=['日付コード','日付','支出'] 26kakei=kakei.drop([0,1,2,3,4,5,6,7,8]).reset_index(drop=True)#index=9のところより上は利用しないので削除 27kakei.info()#回答いただける方のため、念のため表示させます 28 29<class 'pandas.core.frame.DataFrame'> 30RangeIndex: 68 entries, 0 to 67 31Data columns (total 3 columns): 32日付コード 67 non-null object 33日付 67 non-null object 34支出 63 non-null object 35dtypes: object(3) 36memory usage: 1.7+ KB 37 38kakei.tail(7)#回答いただける方のため、念のため表示させます。最後の方の行は以下のとおり不要なのでこのあと参照から外します。 39 40 日付コード 日付 支出 4161 2020000202 2020年2月 2,296 4262 2020000303 2020年3月 1,118 4363 NaN NaN NaN 4464 *** 数字が得られないもの NaN 4565 - 該当数字がないもの NaN 4666 ... 調査又は集計していないもの NaN 4767 … 調査又は集計していないもの NaN 48 49kakei=kakei.iloc[0:63,:] 50kakei['支出']#回答いただける方のため、念のため表示させます。 51 520 1,526 531 1,808 542 1,712 553 1,515 564 1,874 57 ... 5858 2,499 5959 2,731 6060 2,943 6161 2,296 6262 1,118 63Name: 支出, Length: 63, dtype: object 64 65kakei['支出']=pd.to_numeric(kakei['支出']) 66kakei['日付']=kakei['日付'].astype(str) 67kakei['日付']=pd.to_datetime(kakei['日付'],format='%Y年%m月') 68kakei['POSIX']=kakei['日付'].astype('int64').values//10**9 69kakei['年']=kakei['日付'].dt.year 70kakei['月']=kakei['日付'].dt.month 71 72--------------------------------------------------------------------------- 73ValueError Traceback (most recent call last) 74pandas\_libs\lib.pyx in pandas._libs.lib.maybe_convert_numeric() 75 76ValueError: Unable to parse string "1,526" 77 78During handling of the above exception, another exception occurred: 79 80ValueError Traceback (most recent call last) 81<ipython-input-301-4852b1d66c7f> in <module> 82----> 1 kakei['支出']=pd.to_numeric(kakei['支出']) 83 2 kakei['日付']=kakei['日付'].astype(str) 84 3 kakei['日付']=pd.to_datetime(kakei['日付'],format='%Y年%m月') 85 4 kakei['POSIX']=kakei['日付'].astype('int64').values//10**9 86 5 kakei['年']=kakei['日付'].dt.year 87 88~\Anaconda3\lib\site-packages\pandas\core\tools\numeric.py in to_numeric(arg, errors, downcast) 89 149 coerce_numeric = errors not in ("ignore", "raise") 90 150 values = lib.maybe_convert_numeric( 91--> 151 values, set(), coerce_numeric=coerce_numeric 92 152 ) 93 153 94 95pandas\_libs\lib.pyx in pandas._libs.lib.maybe_convert_numeric() 96 97ValueError: Unable to parse string "1,526" at position 0 98
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/10 14:54
2020/05/10 15:09
2020/05/12 14:57