from __future__ import division
import numpy as np
import pandas as pd
from pandas import Series, DataFrame
x=np.linspace(0,3.14*3,100)
y=np.sin(x) + np.random.normal(loc=0.0,scale=0.1,size=len(x))
# statsmodels.api
import statsmodels.api as sm
lowess=sm.nonparametric.lowess
y_sm=lowess(y,x,frac=0.1)
plt.plot(x,y,lw=1,color='gray',label='y')
plt.plot(y_sm[:,0],y_sm[:,1],lw=1,color='g',label='sm')
# Python seaborn.lmplot()
import seaborn as sns
d=np.hstack((x.reshape(-1,1),y.reshape(-1,1)))
df=DataFrame(d,columns=['xdata','ydata'])
sns.lmplot(x='xdata', y='ydata', data=df,lowess=True) # 实际是调用 statsmodels,且使用默认参数 frac=0.667
# 自定义函数 np.convolve