从列中识别无值

时间:2019-03-20 07:39:00

标签: python pandas

我正在使用熊猫阅读csv,以对其进行一些分析。我在哪里遇到这个错误

ValueError: could not convert string to float: 'none'

我检查了一下,由于shift_zip参数,我收到此错误。我手动转到csv文件和openoffce,并将此列转换为数字。但是仍然会出现此错误。

数据看起来像这样

enter image description here

我手动检查了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答案的结果

它根据条件给出FalseTrue。无法检查哪个特定行为空或为空。

2 个答案:

答案 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()])