moocPython大数据分析_1课后答案(慕课2023课后作业答案)

moocPython大数据分析_1课后答案(慕课2023课后作业答案)

第二章 数据查询分析(基础篇)

单元小测试1

1、大数下面关于DataFrame中行索引说法中,据分错误 的析课是:
A、行索引默认是后答后作从0开始累加的整数
B、默认的案慕案行索引主要起到唯一区分数据行的作用
C、随着更新的课课进行,索引有可能不能区分出唯一的业答行
D、行号不同于索引,大数其取值是据分从1开始不断累加的序号,不论如何更改,析课行号始终保持着这种序列关系

2、后答后作有代码: print(frame.iloc[[3,案慕案 1], [0, 2]]) 它的含义是:
A、选择第4行和第2行并且第1列和第3列的课课表格数值
B、有错误,业答因为3不能放在1前面倒序来取
C、大数选择第4行和第2行并且第1列到第3列的表格数值
D、有错误,因为选择列要放在选择行前面

3、很多DataFrame方法中的inplace参数功能是:
A、用于设定记录排序的大小方向
B、用于设定是否强制更新原始数据
C、用于设定是否设置数据为只读模式
D、用于设定数据复制是否保留副本

4、有代码为: frame.loc[frame['height'] > 1.80, 'age'] = frame.loc[frame['height'] > 1.80, 'age'] + 1 该代码的功能为:
A、将所有身高大于1.80 m的学生身高增加1厘米
B、查询身高大于1.80 m的学生,并将不大于1.80 m的学生身高增加1厘米
C、将所有身高大于1.80 m的学生年龄增加1岁
D、代码有错误,因为loc选择后的数据不能更新

5、下面关于reset_index、sort_index和sort_values方法的说法中,错误 的是:
A、reset_index可以将当前索引还原复位为正常的数据列
B、sort_index表示按照索引排序当前数据
C、sort_values表示按照索引复位后的列来排序数据
D、sort_index无需参数而sort_values必须有参数

第三章 数据查询分析(高级篇)

测试1

1、下面关于PyCharm的说法中,正确的是哪一个?
A、安装完Python后,必须要安装PyCharm才能编写Python语句并运行
B、PyCharm和Python安装不分先后
C、PyCharm提供了一种更为方便的代码编辑功能,一站式进行编辑、运行和纠错
D、Pycharm有很多开发工具,我们这里使用的是一个非常著名而且好用的,称为Python

2、下面关于Python进行数据分析的特点中,哪一项错误?
A、Python支持大数据分析,海量数据处理更为方便和快捷
B、和Excel相比,虽然Python提供了更快的数据处理能力,但是在可视化展示方面却不如Excel
C、和Python相比,Excel虽然功能较为简单,但是在易用性方面更易于上手
D、数据分析往往涉及计算机、统计、数学等多方面的学科知识

3、很多Python代码第一行都有: # coding:utf-8 这个含义是:
A、表示要在国内发布代码
B、运行在中文电脑系统上
C、需要分析中文数据信息
D、代码中有中文信息

4、from pandas import DataFrame 这个语句的含义是:
A、从DataFrame类导入pandas类
B、从pandas库导入DataFrame类
C、从pandas库导入DataFrame库
D、从DataFrame库导入pandas类

5、frame = pd.DataFrame(data, index=[6, 5, 4, 3, 2, 1, 0]) index代码的含义是:
A、对现有数据按照倒序排列
B、重新对现有每一行设置新的index数值
C、设置每行的数值内容
D、对现有列按照index排序

6、print(frame[1:2]) 这里的1:2是指:
A、输出索引号为1和2的行
B、输出序号为1和2的行
C、输出索引号为1的行
D、输出第二行

7、print(frame[frame['age'].isin([16, 18])]) 含义是:
A、输出年龄为16到18的所有行
B、输出年龄为16或者18的所有行
C、输出年龄为16到17的所有行
D、输出年龄为17的所有行

8、round函数功能是:
A、最大值
B、四舍五入
C、大于该数值的最小整数
D、绝对值

9、下面关于rename的说法中,正确的是:
A、rename只能改变列的名称
B、rename只能改变行的名称
C、是pandas的方法
D、rename既能改变行也能改变列的名称

10、下面关于数据更新的说法中,错误的是:
A、append只能在最后一行后添加新行
B、insert可以在任何行前后添加新行
C、drop可以删除行,也可以删除列
D、update可以更新数据行

11、print(frame.sort_values(by=['age'], ascending=False)) 含义是:
A、按照年龄降序输出所有数据
B、按照年龄升序输出所有数据
C、按照年龄降序,相同元素按照索引号排序
D、按照年龄升序,相同元素按照索引号排序

12、下面关于排序和选择的说法中,错误的是:
A、排序和选择功能各不一样,选择重点在于挑选所有满足条件的行,而排序重点关注首尾行
B、先排序再选择和先选择后排序效果并不一样,比如先排序再选择会导致排序失效
C、先排序再选择和先选择后排序效果一样,因为选择不会改变排序的次序
D、排序和选择都可以根据索引号来进行

13、print(frame['age'].groupby(frame['age']).count().sort_index()) 含义是:
A、对年龄分组并统计年龄的种类数,并按照升序来排列
B、统计年龄的种类数,并分组和按照升序来排列
C、对年龄分组并统计各组人数,并按照升序来排列
D、语法错误

14、下面关于分组聚合的说法中,正确的是:
A、聚合函数不能单用,只能结合分组使用
B、分组后聚合和先聚合后分组效果一样
C、分组聚合的结果行数量与组的个数一样
D、为了更快的分组聚合,我们必须首先排序数据

15、print(pd.merge(students, scores)) 下面关于该语句的说法中,正确的是:
A、自动根据索引号建立连接
B、自动去除一个多余的同名连接列
C、默认采用左外连接
D、可以按照任意两个列进行连接,并自动添加_x和_y后缀

第五章 时间数据分析(高级篇)

单元小测试2

1、从datetime类型的数据列 birthday 中获取年份,正确 的方法是:
A、frame['birthday'].dt.year
B、frame['birthday'].year
C、datetime.now().year
D、pd.to_datetime(frame['birthday'])

2、有代码为: frame.loc['2019-12':'2020-1'] 下面说法中,错误 的是:
A、功能是选择2019年12月到2020年1月的全部记录
B、如果写成print(frame.loc['2020-1':'2019-12'])则没有结果,但是不会报错
C、如果支持这种写法,就必须设定 datetime 类型的索引
D、print(frame.iloc['2019-12':'2020-1']) 功能一样

3、时间序列方法中的 freq 参数为 MS 时含义是:
A、表示从每月第一个星期一开始取时间
B、表示从月底开始取时间
C、表示从月初开始取时间
D、表示以整个月来取时间

4、有代码为: frame = frame.to_period(freq='M') print(frame.asfreq(freq='A')) 下面的说法中,正确 的是:
A、这表示向细粒度时间单位的转换,即月到日
B、这表示向细粒度时间单位的转换,即双月到月
C、这表示向粗粒度时间单位的转换,即月到季度
D、这表示向粗粒度时间单位的转换,即月到年

5、有代码为:import pandas as pd from datetime import datetime data = { 'ID': ['000001', '000002', '000003', '000004', '000005', '000006', '000007'], 'name': ['黎明', '赵怡春', '张富平', '白丽', '牛玉德', '姚华', '李南'], 'gender': [True, False, True, False, True, False, True], 'age': [16, 20, 18, 18, 17, 18, 16], 'height': [1.88, 1.78, 1.81, 1.86, 1.74, 1.75, 1.76]} dates = [datetime(2019, 11, 29), datetime(2019, 12, 5), datetime(2019, 12, 17), datetime(2019, 12, 30), datetime(2020, 1, 1), datetime(2020, 1, 3), datetime(2020, 1, 4)] frame = pd.DataFrame(data, index=dates) print(frame['height'].resample('A', kind='period').ohlc()) 下面的说法中,错误 的是:
A、O 表示开盘价,C 表示收盘价
B、H 和 L 分别表示最大值和最小值
C、最后输出表示按照月份汇总,并输出该月份中所有学生身高的OHLC四个值
D、虽然身高并不是股票数据,但是也可以使用该方法来取值

第六章 可视化分析(基础篇)

单元小测试3

1、有代码为: plt.plot(frame['收盘价']) 下面的说法中,错误 的是:
A、plot为绘制线形图,必须要有表示X和Y两个轴的数据,因此此时报错
B、绘制必须后面添加 plt.show() 才能真正绘制并显示出来
C、由于该列数据很多,会在屏幕上生成很多点,这些由很多很短的直线连接起来的完整线条甚至可以呈现出曲线的效果
D、plt.plot(frame['开盘价'], frame['收盘价'], 'ro') 这并不表示三维线形图的绘制,只是改变绘制样式

2、有代码为: plt.scatter(frame['A'], frame['B'], c='r', s=10, alpha=0.6) 下面的说法中,错误 的是:
A、散点图中的点为红色
B、散点图中点的透明度为0.6
C、散点图中点之间的边宽度为10像素
D、散点图中x轴为A数据列,y轴为B数据列

3、假设有2015-2020年共计六年所有的交易记录,有代码为:results = frame[['收盘价']].groupby(frame.index.month).mean() plt.bar(results.index, results['收盘价']) plt.show() 下面的说法中,正确 的是:
A、柱状图的x轴有6个方柱
B、柱状图的y轴有12个不同刻度
C、柱状图的x轴有12个方柱
D、柱状图的y轴有6个不同刻度

4、下面的哪个颜色最接近浅黄色?
A、#FFFFFF
B、#FF0000
C、#EEEE00
D、#111111

5、饼状图中设置每个饼块的占比数值及其格式的参数是:
A、autopct
B、textprops
C、explode
D、wedgeprops

第七章 可视化分析(高级篇)

测试2

1、print(datetime.now()) 上述代码单独运行结果是:
A、错误,不能直接输出到屏幕
B、错误,没有导入正确的类型
C、正确,但是没有显示内容
D、正确,显示今天的日期

2、利用pd.to_datetime转换日期,下面哪种格式的日期不能正常转换?
A、2020/10/01
B、10/01/2020
C、Oct,1,2004
D、2020年10月1日

3、下面关于strptime和strftime方法的说明中,错误的是哪一项?
A、strptime可以将日期字符串转换为日期类型
B、strptime可以处理带有中文格式的日期
C、strftime可以将日期类型转换为特定格式的字符串
D、两个函数都使用m、d、Y等符号表示月份、日期和年份

4、print(frame.truncate(before='2019-12-1')) 代码含义是:
A、输出2019年12月1日前的所有记录
B、输出2019年12月1日后的所有记录
C、输出2019年11月30日后的所有记录
D、输出2019年11月30日前的所有记录

5、values = ['2019Q4'] frame = pd.DataFrame(data, pd.PeriodIndex(values, freq='M')) print(frame) 输出的时间索引值是:
A、2019-10
B、2019-12-31
C、2019-12
D、2019-10-1

6、对于freq属性,它为'A-AUG'时含义为:
A、以每年八月一日作为一年开始
B、以每年九月一日作为一年开始
C、以每年八月一日作为一年结束
D、以每年九月一日作为一年结束

7、print(frame['height'].resample('M', kind='period').mean()) 写成分组的方法中,错误的是:
A、print(frame['height'].groupby(frame.index.dt.month).mean())
B、print(frame['height'].groupby(frame.index.month).mean())
C、print(frame['height'].groupby(frame.index.to_period(freq='M')).mean())
D、print(frame.groupby(frame.index.to_period(freq='M'))['height'].mean())

8、下面关于线性图的说法中,正确的说法是:
A、它只能绘制折线,不能绘制散点和方柱
B、既可以接收有一个数据列,也可以接收两个数据列
C、当一张图绘制不同的线性图时,彼此的颜色自动设置为一样
D、绘制的点可以改变形状,如加号,但是不能修改大小

9、当设置为完全不透明时,alpha属性值是:
A、1
B、0.5
C、0
D、-1

10、下面的那个颜色最偏向浅红色:
A、#9999FF
B、#009999
C、#999900
D、#FF9999

11、colorbar方法的作用是:
A、绘制彩色柱状图
B、给横轴和纵轴添加颜色上下限
C、设置图像的背景色
D、添加颜色的数值指示条

12、下面关于饼状图的说法中,正确的是:
A、font设置标签文字大小和颜色
B、distance设置饼块与中心的分离距离
C、autopct设置数值标签的位置
D、wedgeprops设置饼图收缩

13、下面关于seaborn的说法中,错误的是:
A、它是可视化工具包,提供了更为方便的科学计算可视化功能
B、它比matplotlib功能更多,可以独立于matplotlib使用
C、clustermap功能可以提供分类的热力图
D、countplot功能可以显示属性特征各个数值及其个数统计

14、pyecharts是如何绘制地图内容的?
A、绘制在matplotlib图形界面上
B、绘制在seaborn图形界面上
C、绘制在网页文件中
D、绘制在控制台输出中

15、networkx中可以直接将DataFrame转换为网络图的方法是:
A、draw
B、from_pandas_edgelist
C、add_nodes_from
D、add

第八章 机器学习分析

单元小测试4

1、下面的说法中,错误 的是:
A、特征列是指用于预测目标数据的数据列
B、测试集是用来评估模型效果的数据行
C、训练集数量一般要大于测试集
D、即使测试集数量大于训练集,测试集也不能当成训练集

2、有代码为: train_test_split(X, y, test_size=0.1) 此时的test_size及其数值的含义是:
A、将训练集和测试集分别设为全部数据行的10%和90%
B、将训练集设为全部数据行的90%
C、将测试集设为全部数据列的10%
D、将训练集和测试集分别设为全部数据列的99.9%和0.1%

3、下面关于分类和回归的说法中,正确 的是:
A、回归通常用于连续变量预测,分类一般用于离散变量预测。
B、分类和回归的区别在于输出变量的类型,因此分类和回归问题不能相互转换,并且同时构成了两大类常见机器学习任务
C、评价分类和回归方法可以使用同样的命中准确度指标
D、决策树算法是分类算法而不是回归算法

4、下面关于交叉验证的说法中,正确 的是:
A、由于是交叉选择,因此在一次验证计算时,同一数据行可以被同时多次作为训练集和测试集
B、交叉验证意味着在利用训练集评估测试集后,再使用测试集评估训练集
C、交叉验证最终结果高,并不意味着其中每一次验证结果都很高
D、不同于一次单一验证,交叉验证因为进行多次平均,因此验证结果的指标值通常相同

5、下面关于文本类型数据的说法中,错误 的是:
A、通常文本类型数据需要转换为数值型数据后,再参与分类和回归计算
B、独热编码的取值要根据文本类型数据的数据种类,如果有三种,则独热编码取值分别为0、1、2
C、可以利用DataFrame的astype将文本类型数据转换为数值型
D、LabelEncoder可以将文本类型数据转换为整数类型

期末

客观考查

1、有代码: # coding:utf-8 import pandas as pd data = { 'ID': ['000001', '000002', '000003', '000004', '000005', '000006', '000007'], 'name': ['黎明', '赵怡春', '张富平', '白丽', '牛玉德', '姚华', '李南'], 'gender': [True, False, True, False, True, False, True], 'age': [16, 20, 18, 18, 17, 18, 16], 'height': [1.88, 1.78, 1.81, 1.86, 1.74, 1.75, 1.76]} frame = pd.DataFrame(data, index=[1, 2, 1, 2, 1, 2, 1]) print(frame.loc[1]) 请问下面的说法正确的有:
A、输出为第一条记录,loc函数表示按照行号选择记录,1表示第一条,因此为第一条
B、输出为所有记录的第一列,loc默认一个参数表示列的选择
C、输出为第二条记录,loc函数表示按照行号选择记录,0表示第一条,因此1为第二条
D、输出为四条记录,即索引值为1的四条行记录
E、代码不会报错,但是如果输出语句改为: print(frame[1]) 就会报错,因为默认为行的选择,此时索引为1的有多个,会导致系统出现选择判断不清而出错
F、代码不会报错,但是如果输出语句改为: print(frame[1]) 就会报错,因为选择行不允许使用单一的序号,正确的写法是: print(frame[1:2])

2、有代码: # coding:utf-8 import pandas as pd data = { 'ID': ['000001', '000002', '000003', '000004', '000005', '000006', '000007'], 'name': ['黎明', '赵怡春', '张富平', '白丽', '牛玉德', '姚华', '李南'], 'gender': [True, False, True, False, True, False, True], 'age': [16, 20, 18, 18, 17, 18, 16], 'height': [1.88, 1.78, 1.81, 1.86, 1.74, 1.75, 1.76]} frame = pd.DataFrame(data) print(frame['age' > 17] & (frame['height' > 1.80])) 请问下面的说法正确的有:
A、语句有错误,可以使用条件范围限定: print(frame[frame[(frame['age'] > 17)].isin(frame[(frame['height'] > 1.80)])])
B、语句有错误,选择条件使用并且应该写为: print(frame['age' > 17 & 'height' > 1.80])
C、语句有错误,列名称需要使用方括号标识,应该写为: print(frame[(['age'] > 17) & (['height'] > 1.80)])
D、语句有错误,选择条件使用并且应该写为: print(frame[frame['age'] > 17 & frame['height'] > 1.80])
E、语句有错误,列名称需要使用明确所在DataFrame,应该写为: print(frame[(frame['age'] > 17) & (frame['height'] > 1.80)])
F、语句有错误,可以使用条件范围限定: print(frame[(frame['age'] > 17)].isin(frame[(frame['height'] > 1.80)]))

3、有代码:# coding:utf-8 import pandas as pd data = { 'ID': ['000001', '000002', '000003', '000004', '000005', '000006', '000007'], 'name': ['黎明', '赵怡春', '张富平', '白丽', '牛玉德', '姚华', '李南'], 'gender': [True, False, True, False, True, False, True], 'age': [16, 20, 18, 18, 17, 18, 16], 'height': [1.88, 1.78, 1.81, 1.86, 1.74, 1.75, 1.76]} frame = pd.DataFrame(data) frame = frame.drop(index=(frame.loc[(frame['age'] >=19)].index)) print(frame) 请问下面的说法正确的有:
A、该功能为删除所有年龄大于等于19岁的行记录
B、也可以更改为: frame = frame.drop(frame[frame['age'] >= 19].index) 效果一样
C、也可以更改为: frame.drop(index=(frame.loc[(frame['age'] >= 19)].index), inplace=True) 效果一样
D、也可以更改为: frame = frame.drop(frame['age'] >= 19) 效果一样
E、也可以更改为: frame = frame.drop(frame['age'] >= 19) 效果一样
F、也可以更改为: frame = frame.drop(frame.loc[(frame['age'] >= 19)]) 效果一样

4、有代码: # coding:utf-8 import pandas as pd data = { 'ID': ['000001', '000002', '000003', '000004', '000005', '000006', '000007'], 'name': ['黎明', '赵怡春', '张富平', '白丽', '牛玉德', '姚华', '李南'], 'gender': [True, False, True, False, True, False, True], 'age': [16, 20, 18, 18, 17, 18, 16], 'height': [1.88, 1.78, 1.81, 1.86, 1.74, 1.75, 1.76]} frame = pd.DataFrame(data) frame.loc[frame['gender'] == False, 'age'] = frame.loc[frame['gender'] == False, 'age'] + 1 print(frame) 请问下面的说法正确的有:
A、该功能为将现有性别为False的学生年龄增加1岁
B、代码出错,应该改为: frame.loc[~frame['gender'], 'age'] = frame.loc[~frame['gender'], 'age'] + 1
C、代码没有错误,也可以改为: frame.loc[frame['gender'] = False, 'age'] = frame.loc[frame['gender'] = False, 'age'] + 1
D、代码没有错误,也可以改为: frame.loc[frame['gender'] == False, 'age'] += 1
E、代码没有错误,也可以改为: import numpy as np frame['age'] = np.where(frame['gender'] == False, frame['age'] + 1, frame['age'])

5、查询哪些学生身高一样,给出代码如下:# coding:utf-8 import pandas as pd data = { 'ID': ['000001', '000002', '000003', '000004', '000005', '000006', '000007'], 'name': ['黎明', '赵怡春', '张富平', '白丽', '牛玉德', '姚华', '李南'], 'gender': [True, False, True, False, True, False, True], 'age': [16, 20, 18, 18, 17, 18, 16], 'height': [1.88, 1.78, 1.81, 1.86, 1.74, 1.75, 1.76]} frame = pd.DataFrame(data) results = pd.merge(frame, frame, left_on='age_x', right_on='age_y') results = results[results['name_x'] < results['name_y']] print(results[['name_x', 'name_y']]) 运行出错,请问下面的说法正确的有:
A、两个DataFrame建立连接的条件错了
B、对于学生姓名列的获取方式错了,应该使用: results = results[results['name'] > results['name']]
C、可以将: results = results[results['name_x'] < results['name_y']] 写成: results = results[results['name_x'] > results['name_y']]
D、对于学生姓名列的获取方式错了,应该使用:print(results[['name', 'name']])
E、对于学生姓名列的获取方式错了,应该使用:print(results['name_x', 'name_y'])
F、merge应该写成join

6、统计男女各有多少种不同的身高,给出代码如下: # coding:utf-8 import pandas as pd data = { 'ID': ['000001', '000002', '000003', '000004', '000005', '000006', '000007'], 'name': ['黎明', '赵怡春', '张富平', '白丽', '牛玉德', '姚华', '李南'], 'gender': [True, False, True, False, True, False, True], 'age': [16, 20, 18, 18, 17, 18, 16], 'height': [1.88, 1.78, 1.81, 1.86, 1.74, 1.75, 1.76]} frame = pd.DataFrame(data) records1 = frame.groupby(['gender', 'age']).count() print(records1.groupby(['gender'])[['age']].count().sort_values(by=['age'], ascending=False)) 请问下面的说法正确的有:
A、代码正确,输出为: age gender True 3 False 2
B、代码不正确,需要在最后输出结果前增加: records1.reset_index(inplace=True)
C、代码不正确,需要在最后输出结果前增加: records1 = records1.reset_index()
D、代码不正确,最后输出可以改为: print(records1.groupby([records1.index.levels[0]])[[records1.index.levels[1]]].count().sort_values( by=[records1.index.levels[1]], ascending=False))
E、代码不正确,最后输出可以改为: print(records1.groupby(['gender', 'age']).count().sort_values(by=['age'], ascending=False))

7、绘制不同身高的分布饼图,身高以小数点后一位来统计,给出代码如下: # coding:utf-8 import pandas as pd import matplotlib.pyplot as plt data = { 'ID': ['000001', '000002', '000003', '000004', '000005', '000006', '000007'], 'name': ['黎明', '赵怡春', '张富平', '白丽', '牛玉德', '姚华', '李南'], 'gender': [True, False, True, False, True, False, True], 'age': [16, 20, 18, 18, 17, 18, 16], 'height': [1.88, 1.78, 1.81, 1.86, 1.74, 1.75, 1.76]} frame = pd.DataFrame(data) records1 = frame.groupby('height').count() plt.pie(records1['ID']) plt.show() 请问下面的说法正确的有:
A、无法显示任何图形
B、显示的饼图为7等分
C、为了正确显示身高分组,需要增加修改: frame['heightRange'] = round(frame['height'], 1) records1 = frame.groupby('heightRange').count()
D、为了正确显示身高分组,需要增加修改: frame['heightRange'] = round(frame['height'], -1) records1 = frame.groupby('heightRange').count()
E、为了正确显示身高字符提示,需要增加修改: plt.pie(records1['ID'], labels=records1.index)
F、为了正确显示身高比例,需要增加修改: plt.pie(frame.groupby('height').count())

8、绘制不同出生年学生人数的柱状图,给出代码如下: # coding:utf-8 import pandas as pd import matplotlib.pyplot as plt from datetime import datetime data = { 'ID': ['000001', '000002', '000003', '000004', '000005', '000006', '000007'], 'name': ['黎明', '赵怡春', '张富平', '白丽', '牛玉德', '姚华', '李南'], 'gender': [True, False, True, False, True, False, True], 'birthday': [datetime(2004, 10, 1), datetime(2000, 11, 27), datetime(2002, 1, 29), datetime(2002, 8, 27), datetime(2003, 3, 14), datetime(2002, 12, 17), datetime(2004, 4, 12)], 'height': [1.88, 1.78, 1.81, 1.86, 1.74, 1.75, 1.76]} frame = pd.DataFrame(data) frame.set_index('birthday', inplace=True) results1 = frame.groupby(frame.index.year).count() plt.bar(results1.index, results1['ID']) plt.show() 请问下面的说法正确的有:
A、修改创建results1的语句为: frame = pd.DataFrame(data) results1 = frame.groupby(frame['birthday'].dt.year).count() plt.bar(results1.index, results1['ID']) plt.show() 功能不变
B、修改创建results1的语句为: frame = pd.DataFrame(data) results1 = frame.groupby(frame['birthday'].dt.year).count() results1.reset_index(inplace=True) plt.bar(results1['birthday'].dt.year, results1['ID']) plt.show() 运行有问题,原因在于绘制柱状图获取生日列时无法区分是索引生日还是列生日
C、修改创建results1的语句为: frame = pd.DataFrame(data) results1 = frame.groupby(frame['birthday'].dt.year).count() results1.reset_index(inplace=True) plt.bar(results1['birthday'].dt.year, results1['ID']) plt.show() 运行有问题,原因在于还原results1索引时产生了两个生日列(重名)
D、修改创建results1的语句为: frame = pd.DataFrame(data) frame = frame.set_index('birthday') results1 = frame.groupby(frame['birthday'].dt.year).count() results1.reset_index(inplace=True) plt.bar(results1['birthday'].dt.year, results1['ID']) plt.show() 运行有问题,原因在于获取frame生日列时无法访问生日列
E、修改创建results1的语句为: frame = pd.DataFrame(data) frame = frame.set_index('birthday') results1 = frame.groupby(frame.index.year).count() results1.reset_index(inplace=True) plt.bar(results1['birthday'].year, results1['ID']) plt.show() 运行有问题,原因在于绘制柱状图时无法获取生日列的年份

9、根据企业信息进行风险等级预测,有代码如下:import pandas as pd from sklearn.model_selection import train_test_split from sklearn.neighbors import KNeighborsClassifier import numpy as np frame = pd.read_csv('C:\\temp\\audit_risk.csv', header=0) y = frame[frame.columns[len(frame.columns) - 1]] frame.drop(frame.columns[len(frame.columns) - 1], axis=1, inplace=True) X = frame X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.9, random_state=1) estimator = KNeighborsClassifier() estimator.fit(X_test, y_test) y_predicted = estimator.predict(X_train) print(np.mean(y_train == y_predicted)) 请问下面的说法正确的有:
A、代码虽然可以运行,但是有错误,不能把测试集合作为训练集合使用
B、代码虽然可以运行,而且也有没有很好的理解训练集合和测试集合,但是结果其实是正确的
C、代码有错误,不可能正确运行
D、代码有错误,但是可以运行,但是过少的训练集合会导致训练效果非常差
E、训练集合和测试集合是人为的划分,只要保证训练的数据量大于测试的数量,问题不是很大,结果也没本质的区别,因此上述代码除了增加阅读难度外,其实效果正确

10、根据订单基本信息预测金额,有代码如下:import pandas as pd from sklearn.model_selection import train_test_split from sklearn.linear_model import LinearRegression import sklearn.metrics as sm frame = pd.read_csv('C:\\temp\\Daily_Demand_Forecasting_Orders.csv', sep=';') y = frame['Target (Total orders)'] X = frame X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=7) regressor = LinearRegression() regressor.fit(X_train, y_train) y_test_pred = regressor.predict(X_test) print(round(sm.r2_score(y_test, y_test_pred), 2)) 请问下面的说法正确的有:
A、代码有逻辑错误,无法运行
B、代码有逻辑错误,但是可以运行,结果也正确
C、代码有逻辑错误,但是可以运行,结果并不正确
D、代码混淆了训练集合和测试集合,不能拿训练集合来预测训练集合
E、代码没有错误,结果也正确,较高的准确度来自于数据量较少,拟合程度较好