Предполагая, что у меня есть фрейм данных для выпечки
Pastry Flavor Qty
0 Cupcake Cheese 3
1 Cakeslice Chocolate 2
2 Tart Honey 2
3 Croissant Raspberry 1
И я получаю количество значений определенного c вкуса для каждого теста
df[df['Flavor'] == 'Cheese']['Pastry'].value_counts()
Cupcake 4
Tart 4
Cakeslice 3
Turnover 3
Creampie 2
Danish 2
Bear Claw 2
Затем, чтобы получить процентиль этого вкуса, я мог бы сделать это
df[df['Flavor'] == 'Cheese']['Pastry'].value_counts().describe(percentiles=[.75, .85, .95])
И я бы получил что-то вроде этого (из полного фрейма данных)
count 35.00000
mean 1.485714
std 0.853072
min 1.000000
50% 1.000000
75% 2.000000
85% 2.000000
95% 3.300000
max 4.000000
Где общее количество различных выпечок, которые являются сыром ароматизированный - 35, поэтому общее количество сыра распределяется между этими 35 пирожными. Среднее количество составляет 1,48, максимальное количество - 4 (кекс и пирог) et c, et c.
Я хочу уменьшить этот 95-й процентиль, подсчитав все остальные значения, которые являются не «Сыр» в столбце вкуса, однако value_counts () подсчитывает только те, которые являются «Сыром», потому что я отфильтровал фрейм данных. Как я могу также подсчитать строки без сыра, чтобы мои процентили были go вниз и представляли распределение общего количества сыра во всем фрейме данных?
Это пример вывода:
Cupcake 4
Tart 4
Cakeslice 3
Turnover 3
Creampie 2
Danish 2
Bear Claw 2
Swiss Roll 1
Baklava 0
Cannoli 0
Там, где выпечка без сырного вкуса включается с 0 в качестве количества, оттуда я могу просто получить процентили, и они будут уменьшены, поскольку теперь их разбавляет 0 значений.