profile

Learn Data Science from Data School 📊

Tuesday Tip #16: Smarter counting in Python 🤓

Published 11 months ago • 2 min read

Hi Reader!

My goal with Tuesday Tips is to help you get better at data science every week.

  1. Have the tips been helpful to you?
  2. What would make the tips even more helpful for you?

I look forward to hearing from you! 💬

Find past tips at tuesday.tips. (Yes, that’s a real URL!)


👉 Tip #16: Use Python’s Counter class

When I’m working with data in Python, I tend to use either built-in types (like lists and dictionaries) or third-party types (like NumPy arrays and pandas DataFrames), depending on the size and complexity of the data.

But occasionally, there are scenarios in which I use a more specialized type, such as “Counter” from the collections module. It solves a specific problem so well that creating my own solution would be wasted effort!

For example, let’s say that I need to count how many times a specific number appears in a dataset. Counter is the perfect tool for solving such a problem!

To start, we would import the Counter class from the collections module (which is part of Python’s standard library):

The basic usage of Counter is that you pass it an “iterable” and it counts the number of times each element appears.

Side note: An “iterable” is anything you can iterate through. If you can loop through an object using a “for loop”, you know it’s an iterable. Examples of iterables include strings, lists, tuples, dictionaries, and files.

For example, let’s pass the string ‘HELLO’ to Counter:

We get back a Counter object, which tells us that the ‘L’ appeared twice and the other letters each appeared once.

Let’s try creating a Counter object from a list of integers:

It counted how many times each integer appears in the list.

Let’s save it and check the type:

This confirms that c has the type Counter (or more formally, “c is an instance of the Counter class”). However, it looks very similar to a dictionary since it’s actually a “subclass” of dict.

As such, it acts like a dictionary, meaning when you pass it a key, it returns a value:

This tells us that the integer 7 appeared 4 times.

If you want the Counter to count more things, you pass another iterable to its update() method:

7 has now appeared 5 times, and 6 has appeared 2 times.

If you want to list the elements from most common to least common, you use the most_common() method, which returns a list of tuples:

7 is the most common, followed by 1, then 6, then 3.

Finally, you can pass this list to the sorted() function to sort it by the first element in each tuple, which is how we might prefer to see the results:

To see more examples and use cases, I recommend checking out the Counter class in Python’s official documentation.


If you enjoyed this week’s tip, please forward it to a friend! Takes only a few seconds, and it truly helps me out! 🙌

See you next Tuesday!

- Kevin

P.S. This is your Machine Learning system?

Did someone awesome forward you this email? Sign up here to receive data science tips every week!

Learn Data Science from Data School 📊

Kevin Markham

Join 25,000+ aspiring Data Scientists and receive Python & Data Science tips every Tuesday!

Read more from Learn Data Science from Data School 📊

Hi Reader, I'm so excited to share this week's tip with you! It has been in my head for months, but I finally put it in writing ✍️ It's longer than usual, so if you prefer, you can read it as a blog post instead: Jupyter & IPython terminology explained 🔗 Link of the week Python Problem-Solving Bootcamp (April 1-21) Want to improve your Python skills quickly? There's no better way than solving problems, reviewing alternative solutions, and exchanging ideas with others. That's the idea behind...

9 days ago • 3 min read

Hi Reader, I just published a new blog post, Get started with conda environments. If you’re new to virtual environments in Python, give it a read! Once you start using virtual environments, you’ll wonder how you ever got along without them! 🔗 Link of the week Yann LeCun on the future of AI (Lex Fridman interview) Yann LeCun is one of the “godfathers of Deep Learning”, the Chief AI Scientist at Meta, and (in my opinion) one of the clearest and most convincing thinkers on the future of AI. It’s...

16 days ago • 1 min read

Hi Reader, In case you missed it, I launched a free, 7-hour pandas course! 800+ students have enrolled, and a few have already earned their certificate of completion 👩🎓 🔗 Link of the week Data Internships Looking for an internship in Data Science or Analytics? This site curates the latest internship postings and emails them to you each week! 👉 Tip #40: Build a DataFrame from multiple files Let’s say that your dataset is spread across multiple files, but you want to read the dataset into a...

23 days ago • 1 min read
Share this post