我正在使用熊猫阅读csv,以对其进行一些分析。我在哪里遇到这个错误
ValueError: could not convert string to float: 'none'
我检查了一下,由于shift_zip
参数,我收到此错误。我手动转到csv文件和openoffce,并将此列转换为数字。但是仍然会出现此错误。
数据看起来像这样
我手动检查了shift_zip
列,但找不到任何值。
我还尝试打印此列数据及其数据类型,该数据类型为<class int>
。
for val in data['nurse_zip']:
# print((val))
if type(val) != 'int':
print(type((val)))
输出
<class 'int'>
<class 'int'>
<class 'int'>
如何正确识别此列中没有哪个值导致此问题?
编辑1:添加更多代码以更好地理解:
dataset = pd.read_csv("model__newdata.csv",header = 0)
#Data Pre-processing
data = dataset.drop('shift_location_id',1)
data = data.drop('status',1)
data = data.drop('city',1)
data = data.drop('open_positions',1)
# data = data.drop('shift_id',1)
# data = data.drop('role_id',1)
# data = data.drop('specialty_id',1)
# data = data.drop('years_of_experience',1)
# data = data.drop('shifts_zip',1)
# data = data.drop('nurse_zip',1)
# data = data.drop('shift_department_id',1)
# data = data.drop('shift_organization_id',1)
# data = data.drop('user_id',1)
#Find median for features having NaN
median_role_id, median_specialty_id = data['role_id'].median(),data['specialty_id'].median()
median_shift_id = data['shift_id'].median()
median_specialty_id = data['specialty_id'].median()
data['shift_id'].fillna(median_shift_id, inplace=True)
data['role_id'].fillna(median_role_id, inplace=True)
data['specialty_id'].fillna(median_specialty_id, inplace=True)
data['years_of_experience'].fillna(0, inplace=True)
data['shifts_zip'].fillna(0, inplace=True) #Gives none value error
data['nurse_zip'].fillna(0, inplace=True)
data['shift_department_id'].fillna(0, inplace=True)
data['shift_organization_id'].fillna(0, inplace=True)
data['user_id'].fillna(0, inplace=True)
print (data[data['nurse_zip'] == 'none'])
输出
Empty DataFrame
Columns: [shift_id, user_id, shift_organization_id, shift_department_id, role_id, specialty_id, years_of_experience, nurse_zip, shifts_zip]
Index: []
编辑1
jezrael答案的结果
它根据条件给出False
或True
。无法检查哪个特定行为空或为空。
答案 0 :(得分:2)
如果找到Na或null值是目标,则只需使用
df.info()
,您将能够看到该列的数据类型以及“无”值计数。
但是我认为,在您的数据集中,产生噪声的值不是null格式。
您可以尝试以下几点。
1:更好地使用历史图或任何其他图来可视化特定列。
2:使用df [column] .astype强制更改列的dtype
答案 1 :(得分:1)
您可以尝试:
#check string none
print (data[data['nurse_zip'] == 'none'])
#check non integer values
print (data[data['nurse_zip'].apply(type) != int])
#check strings values
print (data[data['nurse_zip'].apply(type) == str])
#check missing values values
print (data[data['nurse_zip'].isnull()])