2016-11-17 1 views
1

Пытается удалить строки с отсутствующими данными, которые есть? этот случай и преобразовать последний столбец (доход) в boolean. Последующие пары ответов на StackOverflow, но все равно не сработают. Вот код:Python (Pandas) - Опустить строки с NA и преобразовать значения в boolean

%pylab inline 
import numpy as np 
import pylab as pl 
import pandas as pd 
from sklearn.tree import DecisionTreeClassifier 

fileURL = 'http://archive.ics.uci.edu/ml/machine-learning-databases/adult/adult.data' 

df = pd.read_csv(fileURL, 
       names=['age','type_employer', 'fnlwgt', 'education', 
         'education_num', 'marital', 'occupation', 'relationship', 
         'race','sex','capital_gain', 'capital_loss', 'hr_per_week','country', 'income'], 
       na_values = ['?']) 

df = df.dropna(how='any') 
boolean = {'>50K': True, '<=50K': False} 
df['income'].map(boolean) 
df 

Спасибо.

+0

В каком виде это не работает? – mdurant

+0

строки с '?' все еще существуют, значения <=50K' and '> 50K 'все еще существуют вместо true/false –

ответ

1

Вы имели почти правильный метод, но вы улавливаете лишние пробела в разборе. CSV не должен иметь пробелов.

df = pd.read_csv(fileURL, 
      names=['age','type_employer', 'fnlwgt', 'education', 
        'education_num', 'marital', 'occupation', 
        'relationship', 
        'race','sex','capital_gain', 'capital_loss', 
        'hr_per_week','country', 'income'], 
      na_values = [' ?']) 

df = df.dropna(how='any') 
boolean = {' >50K': True, ' <=50K': False} 
df['income'] = df['income'].map(boolean) 
df 
2
1. df['income'] = df['income'].applymap(boolean) 
2. df.dropna(how='any', axis=1, inplace = True) 

примечание applymap и axis

+0

1. Строки, содержащие «?» все еще там 2. AttributeError: объект «Series» не имеет атрибута «applymap» –

+0

. Каково имя этих столбцов (которые содержат «?») –

+0

, как пример строки 14 имеет?? под «страной» –

Смежные вопросы