Homework Pandas Statsmodels

Part 1

用Dataframe结构的groupby函数可以将整表依照某index分组为多个,这样对之进行mean(),var()就方便很多,但不方便作corrwith()操作,因为需要self为Dataframe,other为Serial。所以又建立一个列表,专门求相关系数和最小二乘。

import numpy as np
import scipy as sp
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import statsmodels.api as sm
import statsmodels.formula.api as smf

anascombe = pd.read_csv('anscombe.csv')
grouped=anascombe.groupby('dataset')
dgroup = [0]*5
for i in range(0,4):
    dgroup[i]=anascombe.ix[i*11:i*11+10,['x','y']]

print(" Mean:")
print(grouped.mean()) #平均
print("\n Variance:")
print(grouped.var()) #方差
print('\n Correlation coefficient:')
for i in range(0,4):
    print(i,'\t',dgroup[i][['x']].corrwith(dgroup[i]['y']),'\n') #相关系数

for i in range(0,4):   
    X = sm.add_constant(dgroup[i]['x'])
    Y = dgroup[i]['y']
    lin_model = sm.OLS(Y,X)
    result = lin_model.fit()
    print(result.summary())
    #最小二乘

结果表明,从统计数据上观测,这4组样本的特征几乎完全一致。


Part 2

若用lmplot绘制,则各组数据貌似相近;但若通过FacetGrid绘制plt.scatter子图,比对后会发现,四组数据本质差别极大:图一为正常的散点图,图二为抛物线,图三为带一异常值的直线,图四同理。通过这次作业我更加熟悉了python图表的绘制。

import numpy as np
import scipy as sp
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import statsmodels.api as sm
import statsmodels.formula.api as smf
sns.set()

anascombe = pd.read_csv('anscombe.csv')
g=sns.FacetGrid(anascombe, col="dataset",size=4) #以dataset为分割作子图
g.map(plt.scatter,"x","y") #用plt.scatter函数绘制
plt.show()

#g = sns.lmplot(x ='x',y ='y',data = anascombe,hue ='dataset')
#plt.show()


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值