"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Por que as strings nos DataFrames do Pandas aparecem como objetos mesmo após a conversão?

Por que as strings nos DataFrames do Pandas aparecem como objetos mesmo após a conversão?

Publicado em 2024-11-08
Navegar:105

 Why do Strings in Pandas DataFrames Appear as Objects Even After Conversion?

Por que as strings em um DataFrame são armazenadas como objetos?

Apesar de converter explicitamente colunas do DataFrame contendo strings para o tipo de dados string, a biblioteca Pandas do Python ainda pode denunciá-los como objetos. Essa discrepância surge devido às estruturas de dados subjacentes do NumPy.

NumPy usa ndarrays para armazenar matrizes de dados, com cada elemento em um ndarray tendo um número fixo de bytes. Para inteiros (int64) e números de ponto flutuante (float64), cada elemento ocupa 8 bytes. No entanto, as strings têm comprimentos variáveis, tornando impraticável armazená-las diretamente em um ndarray.

Para acomodar isso, o Pandas usa ndarrays de objetos para armazenar ponteiros para objetos. Esses objetos contêm os valores reais da string. Como resultado, os ndarrays de objeto têm um tamanho indeterminado e são representados como o tipo de dados "objeto".

Exemplo:

Considere um array int64 contendo quatro arrays de 64 bits inteiros e uma matriz de objetos contendo quatro ponteiros para três objetos string:

int64 array: | 1 | 2 | 3 | 4 |
object array: | pointer to "hello" | pointer to "world" | pointer to "!" |

Visualization:

 --------- ----------- 
| int64    |  object   |
|--------- -----------|
| 1        | hello     |
| 2        | world     |
| 3        | !         |
| 4        | null      |
 --------- ----------- 

Nesta representação, o array int64 ocupa uma quantidade fixa de espaço, com cada elemento tendo 8 bytes. Por outro lado, a matriz de objetos armazena ponteiros para objetos de tamanhos variados, daí o tipo de dados "objeto".

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3