How to Calculate Deciles in Python (With Examples)

Deciles are a type of percentile that divides a dataset into 10 equal parts. In Python, you can calculate deciles using the numpy.percentile() function. This function takes the dataset and the desired percentile as input and returns the corresponding value. For example, you can use numpy.percentile() to calculate the deciles of a dataset by passing the numbers 0, 10, 20, 30, 40, 50, 60, 70, 80, and 90 as input. This will return the 10th, 20th, 30th, 40th, 50th, 60th, 70th, 80th, and 90th percentiles of the dataset respectively.


In statistics, deciles are numbers that split a dataset into ten groups of equal frequency.

The first decile is the point where 10% of all data values lie below it. The second decile is the point where 20% of all data values lie below it, and so on.

We can use the following syntax to calculate the deciles for a dataset in Python:

import numpy as np

np.percentile(var, np.arange(0, 100, 10))

The following example shows how to use this function in practice.

Example: Calculate Deciles in Python

The following code shows how to create a fake dataset with 20 values and then calculate the values for the deciles of the dataset:

import numpy as np

#create data
data = np.array([56, 58, 64, 67, 68, 73, 78, 83, 84, 88,
                 89, 90, 91, 92, 93, 93, 94, 95, 97, 99])

#calculate deciles of data
np.percentile(data, np.arange(0, 100, 10))

array([56. , 63.4, 67.8, 76.5, 83.6, 88.5, 90.4, 92.3, 93.2, 95.2])

The way to interpret the deciles is as follows:

  • 10% of all data values lie below 63.4
  • 20% of all data values lie below 67.8.
  • 30% of all data values lie below 76.5.
  • 40% of all data values lie below 83.6.
  • 50% of all data values lie below 88.5.
  • 60% of all data values lie below 90.4.
  • 70% of all data values lie below 92.3.
  • 80% of all data values lie below 93.2.
  • 90% of all data values lie below 95.2.

Note that the first value in the output (56) simply denotes the minimum value in the dataset.

Example: Place Values into Deciles in Python

To place each data value into a decile, we can use the qcut pandas function.

Here’s how to use this function for the dataset we created in the previous example:

import pandas as pd

#create data frame
df = pd.DataFrame({'values': [56, 58, 64, 67, 68, 73, 78, 83, 84, 88,
                              89, 90, 91, 92, 93, 93, 94, 95, 97, 99]})

#calculate decile of each value in data frame
df['Decile'] = pd.qcut(df['values'], 10, labels=False)

#display data frame
df

	values	Decile
0	56	0
1	58	0
2	64	1
3	67	1
4	68	2
5	73	2
6	78	3
7	83	3
8	84	4
9	88	4
10	89	5
11	90	5
12	91	6
13	92	6
14	93	7
15	93	7
16	94	8
17	95	8
18	97	9
19	99	9

The way to interpret the output is as follows:

  • The data value 56 falls between the percentile 0% and 10%, thus it falls in decile 0.
  • The data value 58 falls between the percentile 0% and 10%, thus it falls in decile 0.
  • The data value 64 falls between the percentile 10% and 20%, thus it falls in decile 1..
  • The data value 67 falls between the percentile 10% and 20%, thus it falls decile 1.
  • The data value 68 falls between the percentile 20% and 30%, thus it falls decile 2.

x