我有一个df
包含两列x
的DataFrame y
,我想将其绘制为线图,如下所示:
import matplotlib.pyplot as plt
import seaborn as sns
fig = plt.figure(figsize=(9, 7))
ax = plt.subplot(111)
df = df.groupby(x, as_index=False).mean()
df = df.sort_values(x)
df[y] = df[y].rolling(1000).mean()
df = df.dropna()
sns.lineplot(data=df, x=x, y=y)
plt.tight_layout()
结果图如下所示:
可以看出,具有较低x值的数据点要多得多,即随着x值的增加,数据点越来越少。因此,使用固定窗口大小为 1000 的滚动平均值会为大 x 值平均太多数据点,而为低 x 值平均数据点太少。
是否有可能使滚动平均值的窗口随着更大的 x 值而减小或适应数据点的数量?或者对于这种数据是否存在比滚动平均值更好的方法?