In this article, we are talking about the common methods to measure the central tendency of the data, that is a way to explain our data in some manner. Although these measurements are quite simple, they are a foundation for a lot of other more complex measurements.
We will use this fake list of grades of a class below to demonstrate the concepts:
We create a Python variable to store the grades:
grades = [9.2, 7.5, 8, 9, 8.5, 8, 2.5]
Mean
The first one is the mean, which is the arithmetic average of the data. To calculate the mean of a set of numeric data, we take the sum of all observations divided by the number of observations.
In Python:
from typing import List def mean(xs: List[float]) -> float: return sum(xs)/len(xs)
So, applying in our grades data:
mean(grades) gives us
~7.52.
Median
The second one is the median, which gives us something more positional. The median is the exact central value of a data, so to calculate it we need to:
- Sort data from smaller to largest, and
- If ODD length: pick up the middle value
- If EVEN length: calculate the mean of the two middle values
So, in Python could be like this:
def median(xs: List[float]) -> float: s = sorted(xs) # If odd lenght, just pick up the middle value if len(xs) % 2: p = len(xs)//2 return xs[p] # If even lenght, take the mean of the left and right middle values else: l_p = (len(xs) // 2) - 1 r_p = len(xs) // 2 mid_values = [l_p, r_p] return mean(mid_values)
This way, the grades sorted looks like this:
[2.5, 7.5, 8, 8, 8.5, 9, 9.2] and their median,
median(grades), is
8.
Mode
Finally, we have the mode, i.e., the observation that occurs the most in a dataset. Thus, a dataset may have one, multiple, or even none mode.
Python mode function:
from collections import Counter def mode(xs: List[float]) -> List[float]: counter = Counter(xs) return [x_i for x_i, count in counter.items() if count == max(counter.values())]
The grade that occurs the most in our dataset is
[8] as we can see calling
mode(grades)
Python mean, median, and mode
In this article, we made some Python code to illustrate our measurements, just as didactic purposes. By the way, we already have functions in Python libraries that make the job. Bellow, some of them:
- Mean: numpy.mean
- Median: numpy.median
- Mode: statistics.mode
Discussion
Thanks. This is good.
I am glad you liked it!