Коробка и усы на нескольких столбцах - PullRequest
0 голосов
/ 02 марта 2020

Я пытаюсь создать график Box and Whisker на моем наборе данных, который выглядит примерно так -

Dataset

и график, который я пытаюсь сделать

Intended Chart

Мои текущие строки кода ниже -

import seaborn as sns
import matplotlib.pyplot as plt
d = df3.boxplot(column = ['Northern California','New York','Kansas','Texas'], by = 'Banner')
d

Спасибо

1 Ответ

1 голос
/ 02 марта 2020

Я воссоздал фиктивную версию вашего набора данных:

import numpy as np
import pandas as pd
dictionary = {'Banner':['Type1']*10+['Type2']*10,
              'Northen_californina':np.random.rand(20),
              'Texas':np.random.rand(20)}
df = pd.DataFrame(dictionary)

Вам нужно только растопить ваш фрейм данных (unpivot), чтобы информация о географической зоне сохранялась в столбце, а не как имя столбца Вы можете использовать метод pandas .melt и указать все столбцы, которые вы хотите поместить в свой блок-блок, в аргументе value_vars.

С моим фиктивным набором данных вы можете сделать это:

df = pd.melt(df,id_vars=['Banner'],value_vars=['Northen_californina','Texas'],
             var_name='zone', value_name='amount')

Теперь вы можете применить блокпост, используя аргумент оттенка:

import seaborn as sns
import matplotlib.pyplot as plt
plt.figure(figsize=(9,9)) #for a bigger image
sns.boxplot(x="Banner", y="amount", hue="zone", data=df, palette="Set1")

output image

...