O documento de ajuda para pandas.Series.nbytes mostra o seguinte exemplo:
s = pd.Series(['Ant', 'Bear', 'Cow'])
s
0 Formiga
1 Urso
2 Vaca
dtype: objeto
s.nbytes
24
<< fim do exemplo >>
Como são esses 24 bytes?
Tentei olhar para três codificações diferentes, nenhuma delas pareceu produzir esse total.
print(s.str.encode('utf-8').str.len().sum())
print(s.str.encode('utf-16').str.len().sum())
print(s.str.encode('ascii').str.len().sum())
10
26
10
Pandas
nbytes
não se refere aos bytes necessários para armazenar os dados de string codificados em formatos específicos comoUTF-8
,UTF-16
, ouASCII
. Ele se refere ao número total de bytes consumidos pelo array subjacente dos dados Series na memória.O Pandas armazena uma matriz NumPy de ponteiros para esses objetos Python ao usar o objeto
dtype
.Em um sistema de 64 bits, cada ponteiro/referência ocupa 8 bytes.
3 × 8 bytes = 24 bytes.
Link: código fonte nbyte
Link: documentação do ndarray