Pandas: Number of Rows in a Dataframe (6 Ways)

Pandas number of rows cover image

In this post, you’ll learn how to count the number of rows in a Pandas Dataframe, including counting the rows containing a value or matching a condition. You’ll learn why to use and why not to use certain methods (looking at you, .count()!) and which methods are the fastest.

Loading a Sample Dataframe

To follow along with the tutorial below, feel free to copy and paste the code below into your favourite text editor to load a sample Pandas Dataframe that we’ll use to count rows!

import pandas as pd

data = {
    'Level': ['Beginner', 'Intermediate', 'Advanced', 'Beginner', 'Intermediate', 'Advanced', 
        'Beginner', 'Intermediate', 'Advanced', 'Beginner', 'Intermediate', 'Advanced', 'Beginner', 
        'Intermediate', 'Advanced', 'Beginner', 'Intermediate', 'Advanced'], 
    'Students': [10.0, 20.0, 10.0, 40.0, 20.0, 10.0, None, 20.0, 20.0, 40.0, 10.0, 30.0, 30.0, 10.0, 10.0, 10.0, 40.0, 20.0]
    }

df = pd.DataFrame.from_dict(data)

print(df.head())

This returns the following dataframe:

          Level  Students
0      Beginner      10.0
1  Intermediate      20.0
2      Advanced      10.0
3      Beginner      40.0
4  Intermediate      20.0

Check out some other Python tutorials on datagy, including our complete guide to styling Pandas and our comprehensive overview of Pivot Tables in Pandas!

Pandas – Number of Rows in a Dataframe

Pandas provides a lot of different ways to count the number of rows in its dataframe.

Below you’ll learn about the Pandas len() function, the Pandas .shape property, and the Pandas .count() method.

Pandas Len Function to Count Rows

The Pandas len() function returns the length of a dataframe (go figure!). The safest way to determine the number of rows in a dataframe is to count the length of the dataframe’s index.

To return the length of the index, write the following code:

>> print(len(df.index))
18

Pandas Shape Attribute to Count Rows

The Pandas .shape attribute can be used to return a tuple that contains the number of rows and columns, in the following format (rows, columns). If you’re only interested in the number of rows (say, for a condition in a for loop), you can get the first index of that tuple.

>> print(df.shape[0])
18

Pandas Count Method to Count Rows in a Dataframe

The Pandas .count() method is, unfortunately, the slowest method of the three methods listed here. The .shape attribute and the len() function are vectorized and take the same length of time regardless of how large a dataframe is. The .count() method takes significantly longer with with larger dataframes.

One of the benefits of the .count() method is that it can ignore missing values.

>> print(df.count())
Level       18
Students    17
dtype: int64

The above output indicates that there are 18 values in the Level column, and only 17 in the Students column. This, really, counts the number of values, rather than the number of rows.

Number of Rows Containing a Value in a Pandas Dataframe

To count the rows containing a value, we can apply a boolean mask to the Pandas series (column) and see how many rows match this condition. What makes this even easier is that because Pandas treats a True as a 1 and a False as a 0, we can simply add up that array.

For an example, let’s count the number of rows where the Level column is equal to ‘Beginner’:

>> print(sum(df['Level'] == 'Beginner'))
6

Number of Rows Matching a Condition in a Pandas Dataframe

Similar to the example above, if we wanted to count the number of rows matching a particular condition, we could create a boolean mask for this.

In the example below, we count the number of rows where the Students column is equal to or greater than 20:

>> print(sum(df['Students'] >= 20))
10

Pandas Number of Rows in each Group

To use Pandas to count the number of rows in each group created by the Pandas .groupby() method, we can use the size attribute. This returns a series of different counts of rows belonging to each group.

print(df.groupby(['Level']).size())

This returns the following series:

Level
Advanced        6
Beginner        6
Intermediate    6
dtype: int64

To learn more about the Pandas .groupby() method, check out my video tutorial here:

Conclusion

In this post, you learned how to count the rows in a Pandas Dataframe. Specifically, you learned which methods are fastest, as well as how to count the number of rows in a dataframe containing a value, meeting a condition, and number of rows in different groups.

To learn more about the .shape property, check out the official documentation here.