GFG App
Open App
Browser
Continue

# Python | Find most frequent element in a list

Given a list, find the most frequent element in it. If there are multiple elements that appear maximum number of times, print any one of them.

Examples:

```Input : [2, 1, 2, 2, 1, 3]
Output : 2

Input : ['Dog', 'Cat', 'Dog']
Output : Dog```

Approach #1 : Naive Approach
This is a brute force approach in which we make use of for loop to count the frequency of each element. If the current frequency is greater than the previous frequency, update the counter and store the element.

## Python3

 `# Program to find most frequent ` `# element in a list`   `def` `most_frequent(``List``):` `    ``counter ``=` `0` `    ``num ``=` `List``[``0``]` `    `  `    ``for` `i ``in` `List``:` `        ``curr_frequency ``=` `List``.count(i)` `        ``if``(curr_frequency> counter):` `            ``counter ``=` `curr_frequency` `            ``num ``=` `i`   `    ``return` `num`   `List` `=` `[``2``, ``1``, ``2``, ``2``, ``1``, ``3``]` `print``(most_frequent(``List``))`

Output:

`2`

Approach #2 : Pythonic Naive approach
Make a set of the list so that the duplicate elements are deleted. Then find the highest count of occurrences of each element in the set and thus, we find the maximum out of it.

## Python3

 `# Program to find most frequent ` `# element in a list` `def` `most_frequent(``List``):` `    ``return` `max``(``set``(``List``), key ``=` `List``.count)`   `List` `=` `[``2``, ``1``, ``2``, ``2``, ``1``, ``3``]` `print``(most_frequent(``List``))`

Output:

`2`

Approach #3 : Using Counter
Make use of Python Counter which returns count of each element in the list. Thus, we simply find the most common element by using most_common() method.

## Python3

 `# Program to find most frequent ` `# element in a list`   `from` `collections ``import` `Counter`   `def` `most_frequent(``List``):` `    ``occurence_count ``=` `Counter(``List``)` `    ``return` `occurence_count.most_common(``1``)[``0``][``0``]` `  `  `List` `=` `[``2``, ``1``, ``2``, ``2``, ``1``, ``3``]` `print``(most_frequent(``List``))`

Output:

`2`

Approach #4 : By finding mode
Finding most frequent element means finding mode of the list. Hence, we use mode method from statistics.

## Python3

 `import` `statistics` `from` `statistics ``import` `mode`   `def` `most_common(``List``):` `    ``return``(mode(``List``))` `  `  `List` `=` `[``2``, ``1``, ``2``, ``2``, ``1``, ``3``]` `print``(most_common(``List``))`

Output:

`2`

Approach #5 : Using Python dictionary
Use python dictionary to save element as a key and its frequency as the value, and thus find the most frequent element.

## Python3

 `# Program to find most frequent ` `# element in a list`   `def` `most_frequent(``List``):` `    ``dict` `=` `{}` `    ``count, itm ``=` `0``, ''` `    ``for` `item ``in` `reversed``(``List``):` `        ``dict``[item] ``=` `dict``.get(item, ``0``) ``+` `1` `        ``if` `dict``[item] >``=` `count :` `            ``count, itm ``=` `dict``[item], item` `    ``return``(itm)`   `List` `=` `[``2``, ``1``, ``2``, ``2``, ``1``, ``3``]` `print``(most_frequent(``List``))`

Output:

`2`

Approach #6 : Using pandas library.
Incase of multiple values getting repeated. Print all values.

## Python3

 `import` `pandas as pd` `List` `=` `[``2``, ``1``, ``2``, ``2``, ``1``, ``3``, ``1``]`   `# Create a panda DataFrame using the list` `df``=``pd.DataFrame({``'Number'``: ``List``})`   `# Creating a new dataframe to store the values` `# with appropriate column name` `# value_counts() returns the count based on` `# the grouped column values ` `df1 ``=` `pd.DataFrame(data``=``df[``'Number'``].value_counts(), columns``=``[[``'Number'``,``'Count'``]])`   `# The values in the List become the index of the new dataframe.` `# Setting these index as a column` `df1[``'Count'``]``=``df1[``'Number'``].index`   `# Fetch the list of frequently repeated columns ` `list``(df1[df1[``'Number'``]``=``=``df1.Number.``max``()][``'Count'``])`

Output:

`[2,1]`

Approach #7: Using numpy library

## Note: Install numpy module using command “pip install numpy”

Use numpy library to create an array of unique elements and their corresponding counts. Then, find the index of the maximum count and return the corresponding element from the unique array.

## Python

 `import` `numpy as np` `# Program to find most frequent` `# element in a list` `def` `most_frequent(``List``):` `    ``unique, counts ``=` `np.unique(``List``, return_counts``=``True``)` `    ``index ``=` `np.argmax(counts)` `    ``return` `unique[index]`   `List` `=` `[``2``, ``1``, ``2``, ``2``, ``1``, ``3``]` `print``(most_frequent(``List``))`

Output:

`2`

Time complexity: O(n) for numpy unique function and argmax
Space complexity: O(n) for storing unique values

My Personal Notes arrow_drop_up