簡體   English   中英

在seaborn圖中分組和均值

[英]Group by and mean inside seaborn plot

我想知道如何group bymean 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM