[Python Fennel Bean Series] PANDAS Obtém o número de linhas no DataFrame
Ao programar em Python, às vezes é interessante usar métodos diferentes para atingir o mesmo objetivo. Isso me lembra Kong Yiji de Lu Xun. Kong Yiji pesquisou bastante sobre as quatro maneiras de escrever a palavra erva-doce para feijão de erva-doce. Não me atrevo a me comparar com Kong Yiji, então aqui coleciono alguns grãos de erva-doce Python para a diversão de todos os programadores.
Quantos dados existem no total? Este é provavelmente o conteúdo mais básico do trabalho de análise de dados.
Aqui, vamos falar sobre como obter o número de linhas do DataFrame no Pandas.
Primeiro prepare um DataFrame para teste. Este DataFrame possui 3 colunas denominadas a, b e c:
>>> import numpy as np
>>> import pandas as pd
>>> df = pd.DataFrame({
'a':[None,2,3], 'b':[4,5,6], 'c':[7,8,9]})
>>> df
a b c
0 NaN 4 7
1 2.0 5 8
2 3.0 6 9
Uma contagem de grãos de erva-doce:
Existe uma instrução SQL SELECT count (*) FROM some_table
e
o DataFrame também possui uma count
função que pode ser usada para contagem. O exemplo é o seguinte:
>>> df['a'].count()
2
Espere, como pode ser 2? O resultado deve ser três! Acontece count
que será NaN
removido e está presente na coluna a NaN
, então o resultado está incorreto. Vejamos a coluna b e estará correto:
>>> df['b'].count()
3
No entanto, não podemos garantir que toda vez que encontrarmos a coluna b, não haverá valor nulo, então nós mesmos criamos uma coluna:
>>> df['aa'] = 1
>>> df
a b c aa
0 NaN 4 7 1
1 2.0 5 8 1
2 3.0 6 9 1
>>> df['aa'].count()
3
Bem, até agora, missão cumprida, mas... um pouco feia.
Formato de feijão de erva-doce:
Após um estudo minucioso, descobri que o DataFrame tem uma função de forma. Esta é uma função fantástica, um exemplo é o seguinte:
>>> df.shape
(3, 3)
Então, você pode obter o resultado assim:
>>> df.shape[0]
3
É incrível, é incrível.
Mas a forma recebe dois números e só precisamos de um número. Não é um desperdício aqui?
Feijão de erva-doce três len:
Python possui um len integrado e, de modo geral, as coisas integradas são sempre mais avançadas. Vamos tentar:
>>> len(df)
3
Então, o que está por trás dessa lente? Confira no IPython:
In [1]: df.__len__??
Signature: df.__len__() -> int
Source:
def __len__(self) -> int:
"""
Returns length of info axis, but here we use the index.
"""
return len(self.index)
Qual é a forma acima?
In [2]: df.shape??
Type: property
Source:
# df.shape.fget
@property
def shape(self) -> Tuple[int, int]:
"""
Return a tuple representing the dimensionality of the DataFrame.
......
"""
return len(self.index), len(self.columns)
Índice de quatro grãos de erva-doce:
Como pode ser visto nos dois códigos-fonte acima, devemos usar len assim:
>>> len(df.index)
3
Feijão de erva-doce cinco e mais três:
Fora das montanhas e das montanhas verdes, sempre há feijão de erva-doce em Python. Mais três:
df.index.size
len(df.axes[0])
df.pipe(len)