[英]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.