# Count the Frequency a Value Occurs in Pandas Dataframe

Ahmed Waheed Jan 30, 2023 Apr 07, 2020 Pandas Pandas DataFrame

Sometimes when you are working with dataframe you might want to count how many times a value occurs in the column or in other words to calculate the frequency. Majorly three methods are used for this purpose. Two out of them are from the `DataFrame.groupby()` methods. Let us take a look at them one by one.

1. `df.groupby().count()`
2. `Series.value_counts()`
3. `df.groupby().size()`

We will use the same `DataFrame` in the next sections as follows,

``````import pandas as pd

df = pd.DataFrame({
'A': [
'jim',
'jim',
'jim',
'jim',
'sal',
'tom',
'tom',
'sal',
'sal'],
'B': [
'a',
'b',
'a',
'b',
'b',
'b',
'a',
'a',
'b']
})
``````

## `df.groupby().count()` Method

If you want to calculate the frequency over a single column then this method is best.

``````import pandas as pd

df = pd.DataFrame({
'A': [
'jim',
'jim',
'jim',
'jim',
'sal',
'tom',
'tom',
'sal',
'sal'],
'B': [
'a',
'b',
'a',
'b',
'b',
'b',
'a',
'a',
'b']
})

freq = df.groupby(['A']).count()
print(freq)

freq = df.groupby(['B']).count()
print(freq)
``````

The following will be output.

``````     B
A
jim  4
sal  3
tom  2
A
B
a  4
b  5
``````

## `Series.value_counts()` Method

As every dataframe object is a collection of `Series` objects, this method is best used for `pandas.Series` object.

Now use `Series.values_counts()` function

``````import pandas as pd

df = pd.DataFrame({
'A': [
'jim',
'jim',
'jim',
'jim',
'sal',
'tom',
'tom',
'sal',
'sal'],
'B': [
'a',
'b',
'a',
'b',
'b',
'b',
'a',
'a',
'b']
})

freq = df['A'].value_counts()
print(freq)

freq = df['B'].value_counts()
print(freq)
``````

The following will be output.

``````jim    4
sal    3
tom    2
Name: A, dtype: int64
b    5
a    4
Name: B, dtype: int64
``````

## `df.groupby().size()` Method

The above two methods cannot be used to count the frequency of multiple columns but we can use `df.groupby().size()` for multiple columns at the same time.

``````import pandas as pd

df = pd.DataFrame({
'A': [
'jim',
'jim',
'jim',
'jim',
'sal',
'tom',
'tom',
'sal',
'sal'],
'B': [
'a',
'b',
'a',
'b',
'b',
'b',
'a',
'a',
'b']
})

freq = df.groupby(['A', 'B']).size()
print(freq)
``````

The following will be output.

``````A    B
jim  a    2
b    2
sal  a    1
b    2
tom  a    1
b    1
dtype: int64
``````

## Related Article - Pandas DataFrame

• Get Pandas DataFrame Column Headers as a List
• Delete Pandas DataFrame Column
• Convert Pandas Column to Datetime
• Convert a Float to an Integer in Pandas DataFrame
• Sort Pandas DataFrame by One Column's Values
• Get the Aggregate of Pandas Group-By and Sum