[英]Group by and mean inside seaborn plot
我想知道如何group by
並mean
seaborn 圖中的值。 是否有一個選項來做這個df.groupby('month')['temperature'].mean().index
df.groupby('month')['temperature'].mean().values
在一個seaborn圖中沒有生成一個新的數據df2 = df.groupby('month')['temperature'].mean()
如df2 = df.groupby('month')['temperature'].mean()
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
d = {'id': [1, 2, 3, 4, 5], 'month': [1, 2, 3, 4, 2], 'temperature': [20, 40, 50, 60, 20]}
df = pd.DataFrame(data=d)
x = df.groupby('month')['temperature'].mean().index
y = df.groupby('month')['temperature'].mean().values
plt.plot(x,y)
plt.show()
# With the below code I got the desired output
df2 = df.groupby('month')['temperature'].mean()
sns.lineplot(x=df2.index, y=df2.values, data=df2)
我不確定您所說的“分組依據並表示 seaborn 圖中的值”是什么意思。
您可能的意思是“我想做那個操作,但不想將其輸出分配給變量”,在這種情況下,您可以將其與分配給 seaborn 的data
參數內聯,並通過他們的索引/列引用名稱。 但是要做到這一點,您需要將 groupby 的輸出(pandas Series
)轉換回數據幀:
sns.lineplot(
x="month", y="temperature",
data=df.groupby('month')['temperature'].mean().to_frame(), # or .reset_index()
)
但是,如果您想從 x 變量獲取索引而 y 變量獲取值的系列中繪制線圖,您可以將Series
傳遞給data=
而不必費心分配x=
, y=
:
sns.lineplot(data=df.groupby('month')['temperature'].mean(), linestyle="--")
你可能會問的另一件事是“如果我給 seaborn 原始數據框,我可以讓它為我做 groupby/aggregation 嗎?” 在這種情況下,答案是肯定的,這是默認行為/最簡單的調用:
sns.lineplot(data=df, x="month", y="temperature", ci=None, linestyle=":")
這些都產生相同的結果:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.