&引用;菲尔纳;python中的命令不返回表示使用熊猫
我正在尝试用python运行fillna命令。它只是无法用任何内容替换Nan值,并且不会返回错误&引用;菲尔纳;python中的命令不返回表示使用熊猫,python,pandas,dataframe,mean,fillna,Python,Pandas,Dataframe,Mean,Fillna,我正在尝试用python运行fillna命令。它只是无法用任何内容替换Nan值,并且不会返回错误 import pandas as pd import io import requests import numpy as np url='https://archive.ics.uci.edu/ml/machine-learning-databases/breast-cancer-wisconsin/breast-cancer-wisconsin.data' s=requests.get(url)
import pandas as pd
import io
import requests
import numpy as np
url='https://archive.ics.uci.edu/ml/machine-learning-databases/breast-cancer-wisconsin/breast-cancer-wisconsin.data'
s=requests.get(url).content
df=pd.read_csv(io.StringIO(s.decode('utf-8')))
df.columns=['Scn', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9', 'A10', 'CLASS']
df.to_csv("wisconsinbreast.csv")
m,n=df.shape
#print(m,n)
df = df.replace('?', np.nan)
#print(df)
#print(df.mean())
print(df.fillna(df.mean()))
在第22行,Nan仍然在那里。我已经尽了我所能在这里搜索问题,但这甚至没有给我反馈为什么失败。据我所知,df.mean应该在不使用Nan值的情况下进行计算,但df.mean不会为包含Nan的列返回值。read\u csv
那个“?”
把一切都绊倒了。当read\u csv
看到它时,它假定整个列是dtypeobject
并将其作为字符串读入。当然,您可以在事后解决此问题,但我建议在开始时使用na_values
参数来阻止此问题:
df = pd.read_csv(io.StringIO(s.decode('utf-8')), na_values=['?'])
pd.到数值
但如果您真的想在事后修复它,请执行此操作,而不是执行replace
df.A7 = pd.to_numeric(df.A7, errors='coerce')
在任何一种情况下,fillna
都应在之后按预期工作
df.fillna(df.mean())
Scn A2 A3 A4 A5 A6 A7 A8 A9 A10 CLASS
0 1002945 5 4 4 5 7 10.000000 3 2 1 2
1 1015425 3 1 1 1 2 2.000000 3 1 1 2
2 1016277 6 8 8 1 3 4.000000 3 7 1 2
3 1017023 4 1 1 3 2 1.000000 3 1 1 2
4 1017122 8 10 10 8 7 10.000000 9 7 1 4
5 1018099 1 1 1 1 2 10.000000 3 1 1 2
6 1018561 2 1 2 1 2 1.000000 3 1 1 2
7 1033078 2 1 1 1 2 1.000000 1 1 5 2
8 1033078 4 2 1 1 2 1.000000 2 1 1 2
9 1035283 1 1 1 1 1 1.000000 3 1 1 2
10 1036172 2 1 1 1 2 1.000000 2 1 1 2
11 1041801 5 3 3 3 2 3.000000 4 4 1 4
12 1043999 1 1 1 1 2 3.000000 3 1 1 2
13 1044572 8 7 5 10 7 9.000000 5 5 4 4
14 1047630 7 4 6 4 6 1.000000 4 3 1 4
15 1048672 4 1 1 1 2 1.000000 2 1 1 2
16 1049815 4 1 1 1 2 1.000000 3 1 1 2
17 1050670 10 7 7 6 4 10.000000 4 1 2 4
18 1050718 6 1 1 1 2 1.000000 3 1 1 2
19 1054590 7 3 2 10 5 10.000000 5 4 4 4
20 1054593 10 5 5 3 6 7.000000 7 10 1 4
21 1056784 3 1 1 1 2 1.000000 2 1 1 2
22 1057013 8 4 5 1 2 3.548387 7 3 1 4
23 1059552 1 1 1 1 2 1.000000 3 1 1 2
24 1065726 5 2 3 4 2 7.000000 3 6 1 4
你的错误是什么?您的输入、输出和预期输出是什么?我想这就是为什么我在尝试解决op时得到了“TypeError:只能将str(而不是“int”)连接到str:)有趣的一点,谢谢!