1
resposta

erro de converter int - alguem sabe me dizer como arrumar esse erro, tentando e n consigo

import pandas as pd

pesq = pd.read_csv("PesFacul_2.csv", delimiter=",")

pesq['P3'] = pesq['3 - De acordo com sua experiência na utilização do Sistema Operacional, quais são as principais vantagens?'].map( {'Facilidade de uso': 0, 'Software disponível ilimitado': 1, 'Segurança': 2, 'Preço': 3, 'Outros': 4 }).astype(int)

====================

erro


ValueError Traceback (most recent call last) in () 4 5 pesq['P3'] = pesq['3 - De acordo com sua experiência na utilização do Sistema Operacional, quais são as principais vantagens?'].map( ----> 6 {'Facilidade de uso': 0, 'Software disponível ilimitado': 1, 'Segurança': 2, 'Preço': 3, 'Outros': 4 }).astype(int)

4 frames /usr/local/lib/python3.7/dist-packages/pandas/core/dtypes/cast.py in astype_nansafe(arr, dtype, copy, skipna) 966 967 if not np.isfinite(arr).all(): --> 968 raise ValueError("Cannot convert non-finite values (NA or inf) to integer") 969 970 elif is_object_dtype(arr):

ValueError: Cannot convert non-finite values (NA or inf) to integer

1 resposta

Olá Adriana, tudo bem? Espero que sim!

Desculpe pela demora em retornar.

Os seus dados estão com valores faltantes. Você precisa tratar esses valore de alguma forma, removendo os registros, ou preenchendo esses registros com algum valor a sua escolha.

Para preencher os valores com 0 por exemplo, pode usar a função:

pesq = pesq.fillna(0)

Nesse caso o seu DataFrame vai ser preenchido com 0s onde os registros estavam vazios.

Após isso você conseguirá usar a sua função map().

Como você pode preencher esses registros com o valor que desejar, acredito que seja mais conveniente substituir pelo valor 4, (usando o fillna(4) ) uma vez que será referente a 'Outros'. Ou você pode remover os registros usando dropna():

pesq.dropna(inplace=True)

O inplace=True é responsável por alterar o DataFrame sem a necessidade de reatribuição na mesma variável.

Bons estudos!