题目给了一个 csv 文件,读入文件得到一个 DataFrame 对象,该对象中有4个数据集,要对这4个数据集做一些操作。
如果不熟悉 python pandas,可以参考 pandas 入门教程
Exercise 1
题意
题解
用布尔索引的方式划分数据集,对每个数据集调用相应的函数求解。
求线性回归的API是OLS类。endog 参数是因变量, exog 参数是自变量。要先用 add_constant 函数修改自变量数组,再传入OLS。
import numpy import scipy import pandas import seaborn from statsmodels.api import add_constant, OLS anascombe = pandas.read_csv('.\\anscombe.csv') datasets = ['I', 'II', 'III', 'IV'] '''用boolean索引对每个数据集进行操作''' for dataset in datasets: data_frame = anascombe[anascombe['dataset'].isin([dataset])] print(data_frame, '\n') '''求平均数''' print('mean of x and y:') print(data_frame.mean(axis=0), '\n') '''求方差''' print('variance of x and y:') print(data_frame.var(axis=0), '\n') '''求相关系数''' print('correlation coefficient between x and y:') print(data_frame.corr(), '\n') '''求线性回归''' print('Beta0 and Beta1:') x = data_frame['x'].values y = data_frame['y'].values # print(x) # print(y) x = add_constant(x) model = OLS(y, x) result = model.fit() print(result.params, '\n')
数据集1的结果:
Exercise 2
题意
题解
题目给了提示,使用 FacetGrid 函数和 scatter 函数就行。
from seaborn import FacetGrid from matplotlib import pyplot import pandas anascombe = pandas.read_csv('.\\anscombe.csv') graph = FacetGrid(anascombe, col='dataset') graph = graph.map(pyplot.scatter, 'x', 'y') pyplot.show()