У меня есть pandas фрейм данных, содержащий 2 категориальных столбца и 2 столбца значений. Я хочу иметь возможность использовать аргумент «bottom» при использовании функции barplot в Seaborn, но я получаю ValueError и ConversionError, потому что он не обрабатывает «Min Value» так же, как аргументы x, y и hue.
Желаемым выходом для этого будет сгруппированная полоса, показывающая плавающую полосу с минимальными и максимальными значениями для указанной группировки.
Ниже показан пример нерабочего кода и мой желаемый вывод.
import seaborn as sns
import pandas as pd
df = pd.DataFrame.from_dict({"Category 1": ["A","A","A","B","B","B"],
"Category 2": ["Bad","Good","Good","Bad","Good","Good"],
"Min Value": [2,5,3,4,1,0],
"Max Value": [10,5,8,5,11,4]})
sns.barplot(x = "Category 1", y = "Max Value", hue="Category 2", data = df,
estimator = max,
ci = 0,
bottom = "Min Value")
Желаемый вывод ![image](https://i.stack.imgur.com/EgzX0.png)
Обновление Модификация принятого решения, чтобы сделать его более лаконичным.
# Group by the categories
df = df.groupby(["Category 1", "Category 2"])
# Columnwise aggregation
df = df.agg({"Min Value": min,"Max Value": max})
# Plot
sns.boxplot(data=df.T)