It describes the distribution of your data: 50 should be a value that describes „the middle“ of the data, also known as median. 25, 75 is the border of the upper/lower quarter of the data. You can get an idea of how skew your data is. Note that the mean is higher than the median, which means your data is right skewed.

Try:

import pandas as pd
x=[1,2,3,4,5]
x=pd.DataFrame(x)
x.describe()
Answer from Peter on Stack Exchange
🌐
Pandas
pandas.pydata.org › docs › reference › api › pandas.DataFrame.describe.html
pandas.DataFrame.describe — pandas 3.0.1 documentation
For numeric data, the result’s index will include count, mean, std, min, max as well as lower, 50 and upper percentiles. By default the lower percentile is 25 and the upper percentile is 75.
🌐
Statology
statology.org › home › pandas: how to use describe() with specific percentiles
Pandas: How to Use describe() with Specific Percentiles
March 8, 2023 - You can use the describe() function to generate descriptive statistics for variables in a pandas DataFrame. By default, pandas calculates the 25th, 50th and 75th percentiles for variables.
🌐
datagy
datagy.io › home › pandas tutorials › data analysis in pandas › pandas describe: descriptive statistics on your dataframe
Pandas Describe: Descriptive Statistics on Your Dataframe • datagy
December 15, 2022 - By default, Pandas assigns the percentiles of [.25, .5, .75] meaning that we get values for the 25th, 50th, and 75th percentiles. We can pass in any array of numbers, as long as the values are all between 0 and 1. Let’s see how we can change this to identify percentiles, namely 10%, 50% and 90%: print(df.describe(percentiles=[.1, .5, .9])) # Returns # bill_length_mm bill_depth_mm flipper_length_mm body_mass_g # count 342.000000 342.000000 342.000000 342.000000 # mean 43.921930 17.151170 200.915205 4201.754386 # std 5.459584 1.974793 14.061714 801.954536 # min 32.100000 13.100000 172.000000 2700.000000 # 10% 36.600000 14.300000 185.000000 3300.000000 # 50% 44.450000 17.300000 197.000000 4050.000000 # 90% 50.800000 19.500000 220.900000 5400.000000 # max 59.600000 21.500000 231.000000 6300.000000
🌐
Apache
spark.apache.org › docs › latest › api › python › reference › pyspark.pandas › api › pyspark.pandas.DataFrame.describe.html
pyspark.pandas.DataFrame.describe — PySpark 4.1.1 documentation
>>> df = ps.DataFrame({'numeric1': [1, 2, 3], ... 'numeric2': [4.0, 5.0, 6.0] ... }, ... columns=['numeric1', 'numeric2']) >>> df.describe(percentiles = [0.85, 0.15]) numeric1 numeric2 count 3.0 3.0 mean 2.0 5.0 std 1.0 1.0 min 1.0 4.0 15% 1.0 4.0 50% 2.0 5.0 85% 3.0 6.0 max 3.0 6.0
🌐
W3Schools
w3schools.com › python › pandas › ref_df_describe.asp
Pandas DataFrame describe() Method
The describe() method returns description of the data in the DataFrame. If the DataFrame contains numerical data, the description contains these information for each column: count - The number of not-empty values. mean - The average (mean) value. ...
🌐
GitHub
github.com › pandas-dev › pandas › issues › 11866
DataFrame.describe(percentiles=[]) still returns 50% percentile. · Issue #11866 · pandas-dev/pandas
December 18, 2015 - The DataFrame.describe() method docs seem to indicate that you can pass percentiles=None to not compute any percentiles, however by default it still computes 25%, 50% and 75%. The best I can do is pass an empty list to only compute the 50% ...
Author   dragoljub
🌐
Note.nkmk.me
note.nkmk.me › home › python › pandas
pandas: Get summary statistics for each column with describe() | note.nkmk.me
January 20, 2024 - By default, describe() calculates the minimum value (0th percentile), median (50th percentile), and maximum value (100th percentile), along with the 25th and 75th percentiles.
Top answer
1 of 1
15

Is that what you want?

In [19]: df = pd.DataFrame(np.arange(15).reshape(5,3)).add_prefix('col')

In [20]: df
Out[20]:
   col0  col1  col2
0     0     1     2
1     3     4     5
2     6     7     8
3     9    10    11
4    12    13    14

In [21]: df.describe([.01,.1,.2,.3,.4,.5,.6,.7,.8,.9,.99])
Out[21]:
            col0       col1       col2
count   5.000000   5.000000   5.000000
mean    6.000000   7.000000   8.000000
std     4.743416   4.743416   4.743416
min     0.000000   1.000000   2.000000
1%      0.120000   1.120000   2.120000
10%     1.200000   2.200000   3.200000
20%     2.400000   3.400000   4.400000
30%     3.600000   4.600000   5.600000
40%     4.800000   5.800000   6.800000
50%     6.000000   7.000000   8.000000
60%     7.200000   8.200000   9.200000
70%     8.400000   9.400000  10.400000
80%     9.600000  10.600000  11.600000
90%    10.800000  11.800000  12.800000
99%    11.880000  12.880000  13.880000
max    12.000000  13.000000  14.000000

UPDATE:

d = {'col1': [1, 2, 3, 2, 1], 'col2': [3, 4, 5, 6, 7], 'country': ['TR', 'UK', 'UK' , 'TR', 'TR']};

df = pd.DataFrame(data=d)

In [29]: df.groupby('country').apply(lambda x: x.describe([.01,.1,.2,.3,.4,.5,.6,.7,.8,.9,.99]))
Out[29]:
                   col1      col2
country
TR      count  3.000000  3.000000
        mean   1.333333  5.333333
        std    0.577350  2.081666
        min    1.000000  3.000000
        1%     1.000000  3.060000
        10%    1.000000  3.600000
        20%    1.000000  4.200000
        30%    1.000000  4.800000
        40%    1.000000  5.400000
        50%    1.000000  6.000000
        60%    1.200000  6.200000
        70%    1.400000  6.400000
        80%    1.600000  6.600000
        90%    1.800000  6.800000
        99%    1.980000  6.980000
        max    2.000000  7.000000
UK      count  2.000000  2.000000
        mean   2.500000  4.500000
        std    0.707107  0.707107
        min    2.000000  4.000000
        1%     2.010000  4.010000
        10%    2.100000  4.100000
        20%    2.200000  4.200000
        30%    2.300000  4.300000
        40%    2.400000  4.400000
        50%    2.500000  4.500000
        60%    2.600000  4.600000
        70%    2.700000  4.700000
        80%    2.800000  4.800000
        90%    2.900000  4.900000
        99%    2.990000  4.990000
        max    3.000000  5.000000
Find elsewhere
🌐
Machine Learning Plus
machinelearningplus.com › blog › pandas describe
Pandas Describe - machinelearningplus
March 8, 2022 - The pandas.describe function is used to get a descriptive statistics summary of a given dataframe. This includes mean, count, std deviation, percentiles, and min-max values of all the features.
Top answer
1 of 3
1

Pandas' describe function internally uses the quantile function. The interpolation parameter of the quantile function determines how the quantile is estimated. The output below shows how you can get 3.75 or 3.5 as the 0.75 quantile based on the interpolation used. linear is the default setting. Please take a look at Pandas' quantile function source code here 1

test = pd.Series([1,2,3,4,5,1,1,1,1,9])
test_series = test[0]

quantile_linear = test.quantile(0.75, interpolation='linear')
print(f'quantile based on linear interpolation: {quantile_linear}')

quantile based on linear interpolation: 3.75

quantile_midpoint = test.quantile(0.75, interpolation='midpoint')
print(f'quantile based on midpoint interpolation: {quantile_midpoint}')

quantile based on midpoint interpolation: 3.5

2 of 3
1

Percentiles indicate the percentage of scores that fall below a particular value. They tell you where a score stands relative to other scores.

For example: a person height 215 cm is at the 91st percentile, which indicates that his hight is higher than 91 percent of other scores.

Percentiles are a great tool to use when you need to know the position of a value/score respect to a population/data distribution you're considering. Where does a value fall within a distribution of values? While the concept behind percentiles is straight forward, there are different mathematical methods for calculating them.

In your example 50% correspond to the median of the ordered values distribution. In this case the median is calculated between two values: 1 and 2 so the median is calculated (in this case 'cause the number of values is even so the median as to be calculated between the fifth and sixth ordered values ) as the mean between them 1.5.

🌐
Pandas
pandas.pydata.org › pandas-docs › stable › reference › api › pandas.DataFrame.describe.html
pandas.DataFrame.describe — pandas 3.0.2 documentation
For numeric data, the result’s index will include count, mean, std, min, max as well as lower, 50 and upper percentiles. By default the lower percentile is 25 and the upper percentile is 75.
🌐
EDUCBA
educba.com › home › software development › software development tutorials › pandas tutorial › pandas dataframe.describe()
Pandas DataFrame.describe() | Parameters and Examples in detail
April 12, 2023 - The describe() function offers the capability to flexibly calculate the count, mean, std, minimum value, the 25% percentile value, the 50% percentile value, the 75% percentile value and the maximum value from the given dataframe.
Address   Unit no. 202, Jay Antariksh Bldg, Makwana Road, Marol, Andheri (East),, 400059, Mumbai
🌐
Saturn Cloud
saturncloud.io › blog › how-to-find-percentile-stats-of-a-given-column-using-pandas
How to Find Percentile Stats of a Given Column Using Pandas | Saturn Cloud Blog
December 26, 2023 - Use the quantile() function to find the percentile statistics. Let’s dive into each step in detail. To use Pandas, we first need to import the library.
🌐
GeeksforGeeks
geeksforgeeks.org › pandas › python-pandas-dataframe-describe-method
Pandas DataFrame describe() Method - GeeksforGeeks
July 26, 2025 - Default is None means no types are excluded. The describe() method returns a statistical summary of the DataFrame or Series which helps to understand the key characteristics of our data quickly.
🌐
Spark By {Examples}
sparkbyexamples.com › home › pandas › pandas dataframe describe() method
Pandas DataFrame describe() Method - Spark By {Examples}
July 29, 2024 - In pandas, the describe() method is used to generate descriptive statistics of a DataFrame. This method provides a quick overview of the main statistics for each column of numerical data, such as count, mean, standard deviation, minimum, maximum, ...
🌐
Medium
medium.com › @amit25173 › understanding-percentiles-in-pandas-369166d19e76
Understanding Percentiles in Pandas | by Amit Yadav | Medium
March 6, 2025 - This might surprise you: when calculating percentiles, the exact value you’re looking for might not exist in the data. In these cases, pandas interpolates (estimates) the value.