gpt4 book ai didi

python - python中的"fillna"命令不返回意味着使用 Pandas

转载 作者:太空宇宙 更新时间:2023-11-04 00:08:55 24 4
gpt4 key购买 nike

我正在尝试在 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).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_csv 中的

na_values

那个 '?' 把一切都搞砸了。当 read_csv 看到它时,它假定整个列都是 dtype object 并将其作为字符串读入。当然,您可以事后解决此问题,但我建议在开始时使用 na_values 参数来阻止此问题:

df = pd.read_csv(io.StringIO(s.decode('utf-8')), na_values=['?'])

pd.to_numeric

但如果你真的想在事后修复它,请执行此操作而不是 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

关于python - python中的"fillna"命令不返回意味着使用 Pandas ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53162886/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com