Процентильная функция Python

1

Есть ли удобный способ вычисления процентиля столбца на основе значений других столбцов в кадре данных. т.е. 10-й процентиль цен на каждый тип игрушек

У меня есть метод, с помощью которого я могу получить ответ, но он очень длинный и не будет работать на больших наборах данных

import pandas as pd
import numpy as np

data = {'Toy': ['Truck', 'Truck', 'Truck', 'Barbie', 'Snake', 'Barbie'], 
    'Colour': ['Blue', 'Orange', 'Green', 'Pink','Green','Red'], 
    'Price': [4, 6, 8, 5, 9, 4]}
df = pd.DataFrame(data)
df

df2 = df.groupby(['Toy'])['Price'].agg([np.sum,np.mean, lambda x:np.percentile(x,q= 10)]).reset_index()
df2

df_result = pd.merge(df,df2, on= 'Toy', how='left')
df_result

Какие выходы - (лямбда - представляющая интерес переменная) Изображение 174551

Теги:
pandas
python-3.x
percentile

1 ответ

1
Лучший ответ

Я бы сказал, что вам не нужно делать это настолько сложным (создавая другой df, используя merge т.д.).

Вы можете просто сделать

res = df.groupby("Toy").Price.apply(np.percentile, 10)

И используйте индексы для соответствия результатам

df = df.set_index("Toy")
df.loc[:, "Percentile"] = res
df.reset_index()

Ещё вопросы

Сообщество Overcoder
Наверх
Меню