#python #pandas
#python #pandas
Вопрос:
Я читаю csv, используя pandas для выполнения некоторого анализа. Откуда я получаю эту ошибку
ValueError: could not convert string to float: 'none'
Я проверил, я получаю эту ошибку из-за shift_zip
параметра. Я вручную перешел к файлу csv и openoffce и преобразовал этот столбец в числовой. Но все равно это выдает эту ошибку.
Данные выглядят следующим образом
Я вручную проверил shift_zip
столбец, но не могу найти в нем значения none.
Я также попытался напечатать данные этого столбца и его тип данных, который выдает <class int>
.
for val in data['nurse_zip']:
# print((val))
if type(val) != 'int':
print(type((val)))
вывод
<class 'int'>
<class 'int'>
<class 'int'>
Как мне правильно определить, какое значение none в этом столбце вызывает эту проблему?
Правка 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
в соответствии с условием. Не удается проверить, какая конкретная строка является none или пустой.
Комментарии:
1. Пожалуйста, вставьте выходные данные
data['shifts_zip'].dtypes
2. @hacker315: это дает
object
Ответ №1:
Если целью является нахождение значения Na или null, тогда просто используйте
df.info()
и вы сможете увидеть тип данных столбца, а также количество значений None.
Но я думаю, что в вашем наборе данных значение, которое создает шум, не находится в формате null. Вы можете попробовать приведенные ниже пункты. 1: Лучше визуализировать конкретный столбец, используя исторический график или любой другой график.
2: Используйте df[column].astype для принудительного изменения dtype столбца
Комментарии:
1. это дает
AttributeError: 'Series' object has no attribute 'info'
, когда я попыталсяata['nurse_zip'].info()
2. Использовать data.info () или вы также можете использовать data[‘feature_name’].describe() и предоставить общий доступ к выводам.
Ответ №2:
Вы можете попробовать:
#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()])
Комментарии:
1. @JhonPatric — являются ли данные конфиденциальными?
2. @JhonPatric — Вы тестируете все 3 моих решения?
3. @JhonPatric — Так необходимо ли проверять пропущенные значения?
print (data[data['nurse_zip'].isnull()])
?4. @JhonPatric — да, но мой код отличается, не
print (data['nurse_zip'].isnull())
, аprint (data[data['nurse_zip'].isnull()])
— фильтрация поboolean indexing
5. @JhonPatric — Значит, все мои решения возвращают пустой df?