2017-07-31 1 views
0

J'essaie de récupérer des données spécifiques à partir d'une trame de données avec une condition particulière, mais elle affiche une trame de données vide. Je suis nouveau à la science des données, en essayant d'apprendre la science des données. Voici mon code.Impossible de récupérer les données à partir de l'image

file = open('/home/jeet/files1/files/ch03/adult.data', 'r') 
def chr_int(a): 
    if a.isdigit(): return int(a) 
    else: return 0 

data = [] 
for line in file: 
    data1 = line.split(',') 
    if len(data1) == 15: 
     data.append([chr_int(data1[0]), data1[1], 
        chr_int(data1[2]), data1[3], 
        chr_int(data1[4]), data1[5], 
        data1[6], data1[7], data1[8], 
        data1[9], chr_int(data1[10]), 
        chr_int(data1[11]), 
        chr_int(data1[12]), 
        data1[13], data1[14]]) 

import pandas as pd 
df = pd.DataFrame(data) 
df.columns = ['age', 'type-employer', 'fnlwgt', 'education','education_num', 'marital','occupation', 'relationship','race','sex','capital_gain','capital_loss','hr_per_week','country','income'] 

ml = df[(df.sex == 'Male')] # here i retrive data who is male 
ml1 = df[(df.sex == 'Male') & (df.income == '>50K\n')] 
print(ml1.head()) # here i printing that data 
fm =df[(df.sex == 'Female')] 
fm1 = df [(df.sex == 'Female') & (df.income =='>50K\n')] 

sortie:

Empty DataFrame 
Columns: [age, type-employer, fnlwgt, education, education_num, marital, occupation, relationship, race, sex, capital_gain, capital_loss, hr_per_week, country, income] 
Index: [] 

ce qui ne va pas avec le code. pourquoi la trame de données est vide.

+1

Êtes-vous sûr que les valeurs dans la colonne 'revenu' sont des chaînes et contiennent '\ n'? –

+0

oui, ils sont en chaîne. –

+0

Ensuite, essayez ceci: print (df.income.unique()). Les valeurs imprimées ont-elles '\ n' dans celles-ci? –

Répondre

0

Si vous vérifiez les valeurs attentivement, vous pouvez voir le problème:

print(df.income.unique()) 
>>> [' <=50K\n' ' >50K\n'] 

Il y a des espaces devant chaque valeur. Donc les valeurs devraient être soit traitées pour se débarrasser de ces espaces, ou le code devrait être modifié comme ceci:

ml1 = df[(df.sex == 'Male') & (df.income == ' >50K\n')] 
fm1 = df [(df.sex == 'Female') & (df.income ==' <=50K\n')]