örnek verilerin Bir yıl:Yan yana boxplot
import pandas as pd
import numpy.random as rnd
import seaborn as sns
n = 365
df = pd.DataFrame(data = {"A":rnd.randn(n), "B":rnd.randn(n)+1},
index=pd.date_range(start="2017-01-01", periods=n, freq="D"))
Ben bu veriler yan yana ayda (yani iki kutu başına göre gruplandırılmış Boxplot istiyorum ay, bir A
için ve bir tane B
için). Tek bir sütun için sns.boxplot(df.index.month, df["A"])
düzgün çalışıyor. Ancak, sns.boxplot(df.index.month, df[["A", "B"]])
bir hata atar (ValueError: cannot copy sequence with size 2 to array axis with dimension 365
). Bir geçici çözüm olarak denizaltının hue
özelliğini kullanmak için verileri indeksle (pd.melt(df, id_vars=df.index, value_vars=["A", "B"], var_name="column")
) eritmek de işe yaramıyor (TypeError: unhashable type: 'DatetimeIndex'
).
(. Sade matplotlib kullanarak daha kolay ise bir çözüm mutlaka Seaborn kullanmaya gerek yoktur)
/düzenle: Ben temelde ne istiyorum üretir geçici bir çözüm buldu. Bununla birlikte, DataFrame, çizmek istediğimden daha fazla değişken içerdiğinde, birlikte çalışmak biraz garip hale gelir. Yani daha zarif/doğrudan bir yolu varsa, lütfen paylaşın!
df_stacked = df.stack().reset_index()
df_stacked.columns = ["date", "vars", "vals"]
df_stacked.index = df_stacked["date"]
sns.boxplot(x=df_stacked.index.month, y="vals", hue="vars", data=df_stacked)
Teşekkür
matplotlib
'ın ödeme isteyebilirsiniz. Üzgünüm, ana mesajım açık değilse. İyileştirmeme yardım edersen memnun olurum. Ben ne demek istediğimi açıklığa kavuşturmak için bir dakika içinde orijinal yazıya bulduğum bir geçici çözümü/çözümü düzenleyeceğim. –