Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Valor nan na saída

Boa tarde

Fiz todos os passos, mas na saída final foi gerado dois valores nan.

import numpy as np

dados.shape[0]

k = 1 + (10 / 3) * np.log10(dados.shape[0]) # n é o número de linhas do dataframe

k = int(k.round(0)) # arredondado e retirando o zero após a virgula

frequencia = pd.value_counts(pd.cut(x=dados['Renda'], bins=k, include_lowest=True), sort=False)

percentual = pd.value_counts(pd.cut(x=dados['Renda'], bins=k, include_lowest=False), sort=False, normalize=True) * 100

distribuicao_frequencia_amplitude_fixa = pd.DataFrame({'Frequência': frequencia, 'Percentual %': percentual})
distribuicao_frequencia_amplitude_fixa

    Frequência    Percentual %
(-200.001, 11764.706]        75594.0    NaN
(-200.0, 11764.706]            NaN    98.378449
(11764.706, 23529.412]        1022.0    1.330036
(23529.412, 35294.118]        169.0    0.219938
(35294.118, 47058.824]        19.0    0.024727
(47058.824, 58823.529]        16.0    0.020822
(58823.529, 70588.235]        5.0        0.006507
(70588.235, 82352.941]        4.0        0.005206
(82352.941, 94117.647]        1.0        0.001301
(94117.647, 105882.353]    6.0        0.007808
(105882.353, 117647.059]    0.0        0.000000
(117647.059, 129411.765]    1.0        0.001301
(129411.765, 141176.471]    0.0        0.000000
(141176.471, 152941.176]    0.0        0.000000
(152941.176, 164705.882]    0.0        0.000000
(164705.882, 176470.588]    0.0        0.000000
(176470.588, 188235.294]    0.0        0.000000
(188235.294, 200000.0]        3.0    0.003904
1 resposta
solução!

Olá Marcos. Tudo bem ? Espero que sim.

Sua frequência e percentual estão incompatíveis porque em um você está considerando o menor, include_lowest=True, e no outro não:

frequencia = pd.value_counts(pd.cut(x=dados['Renda'], bins=k, include_lowest=True), sort=False)

percentual = pd.value_counts(pd.cut(x=dados['Renda'], bins=k, include_lowest=False), sort=False, normalize=True) * 100

Para resolver basta escolher um dos dois caminhos, os dois True ou os dois False:

import numpy as np

dados.shape[0]

k = 1 + (10 / 3) * np.log10(dados.shape[0]) # n é o número de linhas do dataframe

k = int(k.round(0)) # arredondado e retirando o zero após a virgula

frequencia = pd.value_counts(pd.cut(x=dados['Renda'], bins=k, include_lowest=False), sort=False)

percentual = pd.value_counts(pd.cut(x=dados['Renda'], bins=k, include_lowest=False), sort=False, normalize=True) * 100

distribuicao_frequencia_amplitude_fixa = pd.DataFrame({'Frequência': frequencia, 'Percentual %': percentual})
distribuicao_frequencia_amplitude_fixa

Espero ter ajudado, qualquer duvida não hesite em perguntar.

Bons Estudos : )