Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] duvidas extra aula

  1. no dataset usado nos vídeos, é tranquilo de ver os valores nulos, o index no array e tudo mais. mas em situações em que temos milhares de entradas e vários valores nulos, existe alguma função (seja do python ou de bibliotecas externas) que identifique e retorne direto o index desses valores?
  2. nessa mesma situação, como fariamos para calcular a média para "substituir" o valor nulo? existe algum método de fazer direto? (acredito que fazer a mão um por um seja inviável, né?)
2 respostas
solução!

Olá Ana Carolina.

Realmente, em arrays maiores precisamos de algo para identificar a posição dos valores nulos. Aqui vai um exemplo com o método where:

import numpy as np

# Criando um array com alguns valores NaN
array = np.array([1, 2, np.nan, 4, np.nan, 6])

# Identificando os índices dos valores NaN
nan_indices = np.where(np.isnan(array))[0]

print("Índices dos valores NaN:", nan_indices)

Em relação à média dos valores anterior e posterior ao valor nulo para fazer o preenchimento é um pouco mais complicado e teríamos que fazer uma função para percorrer o array encontrando valores nulos. Exemplo de função que encontra valores nulos isolados e realiza o preenchimento com a média do valor anterior e posterior ao nulo:

def interpolate_nan(arr):
    for i in range(1, len(arr) - 1):
        if np.isnan(arr[i]):
            arr[i] = (arr[i - 1] + arr[i + 1]) / 2
    return arr

Mas pode ficar tranquila porque, na verdade, é pouco provável que você que implementar coisas do tipo. A ideia do curso foi passar que existe a numpy e que essa biblioteca pode ser usada para calcular coisas quando você não encontrar uma função pronta para a tarefa. Porém, seguindo na formação de Python para Data Science, você vai usar a pandas, construída sobre a numpy e que tem muitas funções que facilitam o processo. Por exemplo, a Pandas tem o método interpolate que faz a mesma tarefa da função aí em cima:

import pandas as pd

# Criando um DataFrame com alguns valores NaN
data = {'A': [1, 2, np.nan, 4, np.nan, 6]}
df = pd.DataFrame(data)

# Realizando a interpolação linear
df['A'] = df['A'].interpolate()

print("DataFrame após interpolação dos valores NaN:")
print(df)

obrigada!!