《Python数据分析与实战》测试题及答案_第1页
《Python数据分析与实战》测试题及答案_第2页
《Python数据分析与实战》测试题及答案_第3页
《Python数据分析与实战》测试题及答案_第4页
《Python数据分析与实战》测试题及答案_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

《Python数据分析与实战》测试题及答案一、单项选择题(每题2分,共20分)1.以下关于Pandas中Series和DataFrame的描述,错误的是()A.Series是一维数组结构,DataFrame是二维表格结构B.Series的索引可以自定义,DataFrame的行索引和列索引均可自定义C.DataFrame的每一列都是一个Series对象D.创建Series时无法指定name参数,而DataFrame可以指定columns参数2.执行以下NumPy代码后,输出结果正确的是()```pythonimportnumpyasnparr=np.array([[1,2,3],[4,5,6]])print(arr[:,1:].shape)```A.(2,2)B.(2,3)C.(3,2)D.(1,3)3.某DataFrame的“年龄”列存在缺失值(NaN),若要使用该列的均值填充缺失值,应使用()A.df['年龄'].fillna(df['年龄'].mode())B.df['年龄'].fillna(df['年龄'].mean())C.df['年龄'].dropna()D.df['年龄'].replace(np.nan,df['年龄'].median())4.以下哪条语句可以实现对DataFrame“sales_df”按“销售额”列降序排序?()A.sales_df.sort_values(by='销售额',ascending=True)B.sales_df.sort_index(by='销售额',ascending=False)C.sales_df.sort_values(by='销售额',ascending=False)D.sales_df.sort_index(axis=1,ascending=False)5.关于Matplotlib绘图,以下说法错误的是()A.plt.subplots()函数可用于创建多个子图B.折线图通常用于展示数据随时间的变化趋势C.柱状图适合比较不同类别的数据大小D.散点图无法反映两个变量之间的相关性6.若要计算两个变量的皮尔逊相关系数,应使用()A.df.corr(method='pearson')B.df.cov()C.df.describe()D.df.groupby()7.以下哪项操作不会改变原DataFrame的结构?()A.df.drop(columns='冗余列')B.df.fillna(0,inplace=True)C.df.query('销售额>1000')D.df.rename(columns={'旧名':'新名'},inplace=True)8.对于NumPy数组arr=np.array([1,2,3,4,5]),执行arr[1:4:2]的结果是()A.[2,4]B.[2,3,4]C.[3]D.[2,3]9.读取CSV文件时,若文件中列名行位于第3行(前两行是注释),应使用()参数?A.header=2B.header=3C.skiprows=2D.skiprows=310.在Seaborn中,绘制两个连续变量的分布及相关性,最适合的图形是()A.箱线图(boxplot)B.热力图(heatmap)C.散点图矩阵(pairplot)D.柱状图(barplot)二、填空题(每空2分,共20分)1.Pandas中用于读取Excel文件的函数是__________。2.NumPy中生成3行4列全0数组的函数是__________。3.若DataFrame的索引存在重复值,可使用__________方法检测。4.数据清洗中,处理异常值的常用方法包括__________、__________(任意两种)。5.在Matplotlib中,设置图表标题的函数是__________。6.计算DataFrame各列的非空值数量,应使用__________方法。7.若要将两个DataFrame按行合并(纵向拼接),应使用__________函数。8.对分组后的数据进行聚合时,若需要同时计算均值和标准差,可使用__________方法传入列表。三、编程题(每题10分,共30分)1.NumPy基础操作:请使用NumPy完成以下任务:(1)生成一个包含10个元素的一维数组,元素为0到9的整数(包含9);(2)将该数组转换为2行5列的二维数组;(3)计算该二维数组的对角线元素之和(主对角线)。2.Pandas数据清洗:现有一个DataFrame“df”,包含以下字段:姓名(str)年龄(int,存在缺失值NaN)性别(str,取值为“男”“女”,存在“Male”“Female”等错误值)收入(float,存在异常值:小于0或大于50000)请编写代码完成以下操作:(1)用年龄列的中位数填充缺失值;(2)将性别列的错误值统一为“男”“女”(“Male”→“男”,“Female”→“女”);(3)筛选收入在[0,50000]范围内的记录。3.数据可视化:根据某电商平台2023年1-6月的销售数据(虚构数据如下),绘制折线图展示各月销售额变化,并添加以下元素:横坐标:月份(1-6月)纵坐标:销售额(单位:万元)图表标题:“2023年1-6月销售额趋势图”横坐标标签:“月份”纵坐标标签:“销售额(万元)”数据点标记(如圆圈)虚构数据:月份:[1,2,3,4,5,6]销售额:[120,150,135,180,200,190]四、综合分析题(30分)背景:某零售公司提供了2022年的销售数据集(sales_data.csv),字段包括:订单ID(唯一标识)日期(格式:YYYY-MM-DD)产品类别(A、B、C)销售额(元)销量(件)任务:请根据以下要求完成分析,并用Python代码实现。1.读取数据:读取sales_data.csv文件,指定“日期”列为日期类型。2.数据清洗:(1)检查是否存在重复订单(订单ID重复),若有则删除重复项;(2)检查销售额和销量是否存在非数值型数据,若有则删除对应行。3.特征工程:(1)从“日期”列中提取“月份”字段;(2)计算“客单价”(客单价=销售额/销量,保留2位小数)。4.分析与可视化:(1)统计各产品类别(A、B、C)的总销售额和平均客单价;(2)绘制柱状图,展示各月份(1-12月)的总销量,要求横坐标为月份(1-12),纵坐标为总销量,添加图表标题和坐标轴标签;(3)分析产品类别与销售额的相关性(提示:使用相关系数或交叉表),并给出结论。答案与解析一、单项选择题1.答案:D解析:Series可以通过name参数指定名称(如pd.Series([1,2],name='数据')),因此D错误。2.答案:A解析:arr[:,1:]表示取所有行,第1列及之后的列(索引从0开始)。原数组为2行3列,取第1、2列后,形状为(2,2)。3.答案:B解析:均值填充用mean(),mode()是众数,dropna()是删除缺失值,replace()需指定替换值,因此选B。4.答案:C解析:sort_values用于按值排序,ascending=False表示降序,故选C。sort_index是按索引排序,与题意不符。5.答案:D解析:散点图可通过点的分布反映变量间的相关性(如正相关、负相关),因此D错误。6.答案:A解析:corr()函数默认计算皮尔逊相关系数,cov()是协方差,describe()是描述统计,groupby()是分组,故选A。7.答案:C解析:query()返回新DataFrame,不修改原数据;drop()、fillna(inplace=True)、rename(inplace=True)均会修改原数据,故选C。8.答案:A解析:arr[1:4:2]表示从索引1到3(不包含4),步长2,即索引1和3的元素,对应值为2和4。9.答案:A解析:header参数指定列名行的索引(从0开始),前两行是注释,列名在第3行(索引2),因此header=2。10.答案:C解析:pairplot用于展示多个连续变量的两两分布和相关性,故选C。二、填空题1.pd.read_excel()2.np.zeros((3,4))3.df.index.duplicated()4.基于统计方法(如Z-score)、基于分位数(如IQR)(或删除、替换等)5.plt.title()6.df.count()7.pd.concat()(axis=0)8.agg([‘mean’,‘std’])三、编程题1.NumPy基础操作```pythonimportnumpyasnp(1)生成一维数组arr1=np.arange(10)#结果:[0123456789](2)转换为2行5列arr2=arr1.reshape(2,5)#形状:(2,5)(3)计算主对角线之和(第0行0列,第1行1列)diag_sum=arr2[0,0]+arr2[1,1]#0+5=5print("对角线之和:",diag_sum)```答案:对角线之和为5。2.Pandas数据清洗```pythonimportpandasaspdimportnumpyasnp(1)填充年龄缺失值(中位数)df['年龄']=df['年龄'].fillna(df['年龄'].median())(2)统一性别值df['性别']=df['性别'].map({'男':'男','女':'女','Male':'男','Female':'女'})或使用replace:df['性别']=df['性别'].replace({'Male':'男','Female':'女'})(3)筛选收入范围df=df[(df['收入']>=0)&(df['收入']<=50000)]```3.数据可视化```pythonimportmatplotlib.pyplotasplt数据months=[1,2,3,4,5,6]sales=[120,150,135,180,200,190]绘制折线图plt.figure(figsize=(8,5))plt.plot(months,sales,marker='o',linestyle='-',color='b')添加标签和标题plt.xlabel('月份')plt.ylabel('销售额(万元)')plt.title('2023年1-6月销售额趋势图')设置横坐标刻度(确保显示1-6月)plt.xticks(months)plt.show()```四、综合分析题```pythonimportpandasaspdimportmatplotlib.pyplotasplt1.读取数据(假设文件路径为'./sales_data.csv')sales_data=pd.read_csv('sales_data.csv',parse_dates=['日期'])2.数据清洗(1)删除重复订单duplicate_orders=sales_data[sales_data['订单ID'].duplicated()]ifnotduplicate_orders.empty:sales_data=sales_data.drop_duplicates(subset='订单ID')(2)删除非数值型销售额/销量行转换为数值类型,非数值转为NaN,再删除sales_data['销售额']=pd.to_numeric(sales_data['销售额'],errors='coerce')sales_data['销量']=pd.to_numeric(sales_data['销量'],errors='coerce')sales_data=sales_data.dropna(subset=['销售额','销量'])3.特征工程(1)提取月份sales_data['月份']=sales_data['日期'].dt.month(2)计算客单价(保留2位小数)sales_data['客单价']=(sales_data['销售额']/sales_data['销量']).round(2)4.分析与可视化(1)各产品类别的总销售额和平均客单价category_analysis=sales_data.groupby('产品类别').agg({'销售额':'sum','客单价':'mean'}).rename(columns={'销售额':'总销售额','客单价':'平均客单价'})print("各产品类别分析结果:\n",category_analysis)(2)各月份总销量柱状图monthly_sales=sales_data.groupby('月份')['销量'].sum().reset_index()确保包含1-12月(可能存在无数据的月份)monthly_sales=monthly_sales.set_index('月份').reindex(ran

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论