1766 votes

Comment obtenir le nombre de lignes d'un DataFrame Pandas ?

Comment obtenir le nombre de lignes d'un dataframe pandas ? df ?

21 votes

Ok j'ai trouvé, j'aurais dû appeler la méthode et non vérifier la propriété, donc ça devrait être df.count() et non df.count

97 votes

^ Dangereux ! Prenez garde que df.count() retournera uniquement le nombre de lignes non-NA/NaN pour chaque colonne. Vous devez utiliser df.shape[0] à la place, qui vous indiquera toujours correctement le nombre de lignes.

6 votes

Notez que df.count ne retournera pas un int lorsque le dataframe est vide (par exemple, pd.DataFrame(columns=["Blue", "Red").count n'est pas 0)

24voto

Nik Points 188

En dehors des réponses précédentes, vous pouvez utiliser df.axes pour obtenir le tuple avec les index des lignes et des colonnes, puis utiliser la fonction len() fonction :

total_rows = len(df.axes[0])
total_cols = len(df.axes[1])

14voto

debo Points 113

...en s'appuyant sur La réponse de Jan-Philip Gehrcke .

La raison pour laquelle len(df) o len(df.index) est plus rapide que df.shape[0] :

Regardez le code. df.shape est une @property qui exécute une méthode DataFrame appelant len deux fois.

df.shape??
Type:        property
String form: <property object at 0x1127b33c0>
Source:
# df.shape.fget
@property
def shape(self):
    """
    Return a tuple representing the dimensionality of the DataFrame.
    """
    return len(self.index), len(self.columns)

Et sous le capot de len(df)

df.__len__??
Signature: df.__len__()
Source:
    def __len__(self):
        """Returns length of info axis, but here we use the index """
        return len(self.index)
File:      ~/miniconda2/lib/python2.7/site-packages/pandas/core/frame.py
Type:      instancemethod

len(df.index) sera légèrement plus rapide que len(df) puisqu'il y a un appel de fonction en moins, mais c'est toujours plus rapide que df.shape[0]

10voto

Catbuilts Points 746

Je suis venu à Pandas d'une R et je constate que Pandas est plus compliqué lorsqu'il s'agit de sélectionner des lignes ou des colonnes.

J'ai dû lutter contre ça pendant un moment, puis j'ai trouvé des moyens de le gérer :

Obtenir le nombre de colonnes :

len(df.columns)
## Here:
# df is your data.frame
# df.columns returns a string. It contains column's titles of the df.
# Then, "len()" gets the length of it.

Obtenir le nombre de lignes :

len(df.index) # It's similar.

7voto

Allen Points 8723

Dans le cas où vous voulez obtenir le nombre de lignes au milieu d'une opération chaînée, vous pouvez utiliser :

df.pipe(len)

Exemple :

row_count = (
      pd.DataFrame(np.random.rand(3,4))
      .reset_index()
      .pipe(len)
)

Cela peut être utile si vous ne voulez pas placer une longue déclaration à l'intérieur d'un fichier de type len() fonction.

Vous pourriez utiliser __len__() mais __len__() a l'air un peu bizarre.

7voto

Saurav Points 77

Vous pouvez également le faire :

Disons que df est votre cadre de données. Ensuite, df.shape vous donne la forme de votre cadre de données, c'est à dire (row,col)

Ainsi, assignez la commande ci-dessous pour obtenir les données requises.

 row = df.shape[0], col = df.shape[1]

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X