一、实验目的
- 使用R软件对车辆重量与油耗之间关系的数据集mtcars,说明数据进行可视化的操作。
- 使用Python pandas程序包的函数pd.read_csv(),进行数据导入操作。
- 使用Python matplotlib.pyplot程序包的函数plot(),进行数据可视化操作。
- 数据可视化的进阶操作:合倂使用Python sklearn.linear_model 程序包的函数LinearRegression()进行绘图操作。
- 列出实验结果包含绘图或截图以及完整代码包含注解。
二、实验内容
说明 1: 举一个R软件对车辆重量与油耗之间关系的数据集mtcars进行可视化说明,共有32个车型,即32笔纪录,字段有mpg(油耗)、cyl(汽缸数)、disp、hp、drat、wt(质量)、qsec、vs、am、gear和 carb,内容如下:
说明 4: 使用R函数attach()将原始数据集mtcars,导入R工作空间。
说明 5: 使用R函数write.table()将数据集mtcars 导出至工作目录。
说明 6: 使用Python pandas程序包的函数pd.read_csv(),进行数据导入操作。
说明 7: 使用Python matplotlib.pyplot程序包的函数plot(),进行数据可视化操作。
说明 8: 使用Python sklearn.linear_model 程序包的函数LinearRegression()进行进阶的数据可视化操作,合倂绘图 操作。
说明 9: 列出实验结果包含绘图以及完整代码包含注解。
扩展:(选做)
扩展说明 1: 增加变量cyl(汽缸数),将数据集mtcars依据汽缸数分三个子类,再依据说明6到9做一遍。参考Python代码如下:
carsdata1=carsdata[carsdata[‘cyl’]==4]
carsdata2=carsdata[carsdata[‘cyl’]==6]
carsdata3=carsdata[carsdata[‘cyl’]==8]
三、实验报告
1. 实验环境:
2. 实验内容与完成情况:
1)实验参考代码
参考R代码导出数据集mtcars如下:
attach(mtcars)
write.table(mtcars, “mtcars.txt”, quote=F, row.names=T)
参考Python代码
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
from sklearn.linear_model import LinearRegression
data_url = (“Add your working path/mtcars.txt”)
carsdata = pd.read_csv(data_url,delimiter=’ ‘)
print(carsdata.head(n=10))
print(carsdata.tail(n=10))
summary = carsdata.describe()
print(summary)
model = LinearRegression(fit_intercept=True)
x=carsdata[‘wt’]
y=carsdata[‘mpg’]
model.fit(x[:, np.newaxis], y)
xfit = np.linspace(1, 6, 32)
yfit = model.predict(xfit[:, np.newaxis])
plt.plot(x,y,”go”)
plt.plot(xfit,yfit,”r—“)
plt.title(‘The relationship between car weight and fuel consumption’)
plt.xlabel(‘wt’)
plt.ylabel(‘mpg’)
plt.savefig(‘mtcars.plot.png’)
plt.savefig(‘mtcars.plot.pdf’)
plt.show()
2)原始数据集的导出
使用函数attach()将原始数据集mtcars导出至R工作目录,并使用write.table()函数将数据集mtcars导入R工作目录下,完整代码及注释:
运行后R工作台显示数据集mtcars(截图部分数据):
转至R工作目录下,查看数据集mtcars是否成功导出:
3)实验完整代码及注释
4)原始数据集的导入
使用Python pandas程序包的函数pd.read_csv(),进行数据导入操作。源程序如下所示:
打印出前十列和后十列的数据集:
5)数据特征
查看数据特征(包含每一项数据最大值,最小值和均值等),源代码展示:
成功运行,显示数据特征:
6)数据可视化
使用Python matplotlib.pyplot程序包的函数plot(),进行数据可视化操作。源代码展示:
运行结果即对选取的数据集制作散点图,顺利运行如下所示:
7)数据可视化(进阶)
使用Python sklearn.linear_model 程序包的函数LinearRegression()进行进阶的数据可视化操作,并且与散点图进行合并。源代码展示:
绘制拟合曲线的同时与散点图进行合并,运行结果如下所示:
8)图片保存(.png和.pdf格式)
将所绘制的图片保存至工作目录下,分别保存为.png和.pdf格式。源代码展示:
保存成功如下所示:
拓展
以汽车的不同汽缸数进行分类,分为四缸,六缸和八钢。对不同缸数进行回归,并以不同的颜色呈现在同一个图框里。
1)数据集划分
数据读取等和上述实验相同,不同的在于绘制图形时数据的选取和划分部分,第一步需要划分新的数据集,主要代码展示及注释如下所示:
划分数据集结果显示(部分):
2)线性拟合
3)图形注释
将三部分的数据集拟合在一个图中,用不同的颜色表示,并且设置图形注释:
进阶版线性拟合展示:
4)图片保存(.png和.pdf格式)
将进阶版拟合图保存起来,同样保存两种格式(.png和.pdf):
返回工作目录查看保存结果:
3. 出现的问题
4. 解决方案
1)检查语法,查看pandas文档,发现都没问题。最终发现是数据集出现错误,导入excel表格整理一下数据,程序顺利通过。