2026年Python数据分析能力提升培训试卷(含答案)_第1页
2026年Python数据分析能力提升培训试卷(含答案)_第2页
2026年Python数据分析能力提升培训试卷(含答案)_第3页
2026年Python数据分析能力提升培训试卷(含答案)_第4页
2026年Python数据分析能力提升培训试卷(含答案)_第5页
已阅读5页,还剩20页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

2026年Python数据分析能力提升培训试卷(含答案)一、单项选择题(本大题共15小题,每小题2分,共30分。在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填在题后的括号内。)1.在Python的数据分析生态系统中,用于提供高性能多维数组对象及其相关工具的基础库是()。A.PandasB.NumPyC.MatplotlibD.Scikit-learn2.使用Pandas库读取CSV文件时,默认返回的数据结构类型是()。A.SeriesB.DataFrameC.ndarrayD.Panel3.若要查看DataFrame对象df的前5行数据,应使用的方法是()。A.df.head(5)B.df.top(5)C.df.first(5)D.df.preview(5)4.在NumPy中,创建一个3行4列的所有元素都为0的数组,正确的代码是()。A.np.zeros(3,4)B.np.zeros((3,4))C.np.zeros([3,4])D.np.zero(3,4)5.Pandas中用于处理时间序列的主要对象是()。A.DatetimeIndexB.PeriodIndexC.TimedeltaD.Timestamp6.在进行数据清洗时,若要删除DataFrame中包含缺失值的行,通常使用的参数配置是()。A.df.dropna(axis=0)B.df.dropna(axis=1)C.df.fillna(0)D.df.isnull()7.下列关于DataFrame中`loc`和`iloc`索引器的描述,正确的是()。A.loc是基于位置的索引,iloc是基于标签的索引B.loc是基于标签的索引,iloc是基于位置的索引C.两者都可以混合使用标签和位置D.两者在性能上没有区别8.使用Matplotlib绘制折线图时,用于设置图表标题的函数是()。A.plt.xlabel()B.plt.ylabel()C.plt.title()D.plt.legend()9.在Pandas中,两个DataFrame进行横向拼接(按列合并)时,通常使用的函数是()。A.merge()B.join()C.concat()D.append()10.若要计算DataFrame中某列数据的标准差,默认使用的方法是()。A.mean()B.median()C.std()D.var()11.在Seaborn库中,用于绘制单变量分布图的常用函数是()。A.sns.scatterplot()B.sns.barplot()C.sns.histplot()D.sns.heatmap()12.Pandas中`groupby`操作后,若要对分组数据进行多个聚合计算(如同时求和与均值),应使用的方法是()。A..agg()B..apply()C..transform()D..filter()13.在NumPy数组运算中,广播机制的核心规则是()。A.所有数组的维度必须完全相同B.维度从尾部开始对齐,维度为1或缺失的可以扩展C.维度必须从头部开始对齐D.只有一维数组可以广播14.使用Scikit-learn进行数据预处理时,用于将数值特征标准化到0均值和单位方差的是()。A.MinMaxScalerB.StandardScalerC.NormalizerD.RobustScaler15.下列哪种情况适合使用`pd.pivot_table`而不是`pd.groupby`?()A.只需要简单的分组求和B.需要计算多重索引的分组统计C.需要将长格式数据转换为宽格式数据,并指定特定的行列索引及填充值D.需要对时间序列进行重采样二、多项选择题(本大题共10小题,每小题3分,共30分。在每小题列出的五个备选项中至少有两个是符合题目要求的,请将其代码填在题后的括号内。多选、少选、错选均不得分。)1.下列属于Python数据分析常用第三方库的有()。A.SciPyB.StatsmodelsC.TensorFlowD.PyTorchE.Requests2.Pandas的DataFrame对象可以由以下哪些数据结构创建?()A.字典B.列表C.NumPy数组D.另一个DataFrameE.Series对象3.处理缺失值时,常见的策略包括()。A.删除缺失值B.均值/中位数填充C.众数填充D.前向填充或后向填充E.插值法填充4.关于Matplotlib的pyplot模块,下列说法正确的有()。A.是Matplotlib的基于状态的接口B.通常别名为pltC.可以自动创建Figure和Axes对象D.无法在JupyterNotebook中直接显示图片E.plt.subplots()可以创建包含多个子图的图表5.Pandas中进行数据合并时,merge函数的how参数支持的模式包括()。A.leftB.rightC.outerD.innerE.cross6.NumPy数组的切片操作与Python列表的切片操作相比,具有哪些特点?()A.返回的是原数组的视图而非副本B.支持多维切片C.切片操作不会占用额外的内存空间D.修改切片会影响原数组E.切片语法完全不同7.在使用Seaborn绘制热力图时,通常需要关注的参数或属性有()。A.data(传入的数据矩阵)B.annot(是否显示数值)C.cmap(对颜色映射)D.linewidths(格线宽度)E.orient(方向,注意heatmap通常不需要此参数)8.下列关于时间序列数据处理的描述,正确的有()。A.pd.to_datetime()可以将字符串转换为时间戳B.resample()用于时间频率的重采样C.rolling()用于计算滚动窗口统计量D.shift()用于数据滞后或超前移动E.时间序列索引必须是唯一的9.Scikit-learn库的主要模块包含()。A.sklearn.cluster(聚类)B.sklearn.decomposition(降维)C.sklearn.linear_model(线性模型)D.sklearn.model_selection(模型选择)E.sklearn.datasets(数据集)10.在进行数据特征工程时,常见的操作有()。A.特征二值化B.独热编码C.特征离散化D.特征交叉E.异常值检测与处理三、填空题(本大题共10小题,每小题2分,共20分。请将答案填在题中的横线上。)1.在JupyterNotebook中,若要使Matplotlib绘制的图形直接嵌入在单元格下方显示,通常需要使用魔法命令:________。2.Pandas中,用于将宽格式数据转换为长格式数据的函数是________。3.NumPy中,用于计算两个数组的点积(内积)的函数是________。4.若要获取DataFrame的列名列表,可以通过访问其________属性来实现。5.在正则表达式处理中,Pandas的Series对象提供了________方法,用于提取匹配到的字符串组。6.Matplotlib中,若要保存当前图形为图片文件,应使用________函数。7.在Pandas中,若要根据列值的大小将数据分为不同的区间,可以使用________函数或________函数。8.Seaborn是基于Matplotlib开发的,它主要提供了更高级的API和更美观的________。9.使用Scikit-learn划分训练集和测试集的函数位于sklearn.model_selection模块中,该函数名为________。10.四分位距(IQR)是描述数据离散程度的指标,计算公式为上四分位数(Q3)减去________。四、简答题(本大题共5小题,每小题6分,共30分。)1.请简述Pandas中`apply`函数与`map`函数的主要区别及适用场景。2.在数据分析中,什么是数据泄露?请举例说明在特征工程或模型训练中如何避免数据泄露。3.解释NumPy中的视图与副本的概念,并说明它们在内存管理上的影响。4.请列举至少三种评估回归模型性能的指标,并简要说明其含义。5.在使用Matplotlib进行绘图时,什么是面向对象绘图?它与Pyplot状态机接口相比有什么优势?五、应用题(本大题共5小题,共80分。请写出详细的代码或分析步骤。)1.(15分)数据加载与基础分析。假设有一个名为`sales_data.csv`的文件,包含以下列:`Date`(日期字符串),`Product`(产品名称),`Region`(地区),`Amount`(销售额)。请编写Python代码完成以下任务:(1)读取数据,并将`Date`列转换为Pandas的时间格式,将其设为索引。(2)计算每个地区的总销售额,并找出销售额最高的地区。(3)计算每个产品的平均销售额,并按降序排列。2.(15分)数据清洗与预处理。给定一个DataFrame`df`,其中包含数值型列`Age`和`Salary`,以及类别型列`City`。数据中存在以下问题:(1)`Age`列中存在负值,显然是异常值。(2)`Salary`列存在缺失值。(3)`City`列存在大小写不统一的情况(如"Beijing","beijing")。请编写代码进行清洗:将`Age`列中的负值替换为该列的中位数。使用`Salary`列的均值填充缺失值。将`City`列统一转换为首字母大写格式。3.(15分)数据合并与重塑。有两个DataFrame:`df1`包含员工信息:`EmpID`,`Name`,`DeptID`。`df2`包含部门信息:`DeptID`,`DeptName`,`Location`。另外有一个`df3`包含员工薪资:`EmpID`,`Year`,`Salary`。请编写代码:(1)将`df1`和`df2`进行左连接,保留所有员工信息,匹配部门名称。(2)将(1)的结果与`df3`进行合并,要求保留所有员工的所有年份薪资记录(即使某些员工没有部门信息)。(3)使用透视表将最终结果重塑为:行是员工姓名,列是年份,值是薪资。4.(15分)数据可视化。某电商网站拥有用户行为日志数据,包含`User_ID`,`Action_Time`,`Action_Type`(浏览、收藏、加购、购买)。请利用Matplotlib和Seaborn编写代码:(1)统计每种行为类型的次数,并绘制水平条形图。(2)提取`Action_Time`的小时信息,统计一天24小时内用户活跃度(总行为次数)的变化趋势,并绘制折线图,标记出活跃度最高的时间点。(3)绘制一个2x2的子图布局,分别展示四种行为类型在24小时内的分布曲线。5.(20分)综合分析案例。现有一份`tips`数据集(Seaborn内置),包含餐厅小费数据,字段为:`total_bill`(总账单),`tip`(小费),`sex`(性别),`smoker`(是否吸烟),`day`(星期几),`time`(午餐/晚餐),`size`(就餐人数)。请完成以下分析任务:(1)加载数据,并添加一列`tip_rate`(小费率=tip/total_bill)。(2)分析吸烟者与非吸烟者在小费率上是否有差异(计算分组均值)。(3)分析不同就餐人数与小费金额之间的关系,使用相关系数进行度量。(4)使用`groupby`和`agg`函数,统计每天、每顿饭的平均账单金额和小费金额。(5)筛选出账单金额超过90%分位数的“高消费”记录,分析这部分记录中,性别和吸烟情况的分布。参考答案一、单项选择题1.B2.B3.A4.B5.A6.A7.B8.C9.C10.C11.C12.A13.B14.B15.C二、多项选择题1.AB2.ABCDE3.ABCDE4.ABCE5.ABCDE6.ABCD7.ABCD8.ABCDE9.ABCDE10.ABCDE三、填空题1.%matplotlibinline2.pd.melt3.np.dot4.columns5.str.extract6.plt.savefig(或savefig)7.pd.cut,pd.qcut8.默认样式9.train_test_split10.下四分位数(Q1)四、简答题1.答:`map`:主要用于Series对象,它将元素到元素的映射应用于整个Series,通常用于替换值或应用单参数函数。`apply`:既可以用于Series也可以用于DataFrame。用于Series时,它既可以接受元素级函数也可以接受返回聚合值的函数;用于DataFrame时,默认是对列进行操作(axis=0),也可以对行操作(axis=1),灵活性更高,适合处理复杂的逻辑。区别:`map`仅限于Series,且主要是逐元素操作;`apply`更通用,支持更复杂的自定义逻辑,且在DataFrame上可按轴操作。2.答:数据泄露是指在模型训练过程中,使用了在预测时无法获取的数据信息,导致评估指标虚高,但模型在实际应用中效果很差。举例:在数据划分之前,对整个数据集进行了缺失值填充(用全局均值)或标准化处理,这导致测试集的信息通过统计量泄露到了训练集中。避免方法:必须先划分训练集和测试集,然后仅利用训练集的统计量(如均值、标准差)对训练集进行拟合,并将同样的变换应用到测试集上。例如使用Scikit-learn的Pipeline。3.答:视图:是原数据的引用,不占用新的内存空间。对视图的修改会直接反映到原数组上。切片操作通常返回视图。副本:是原数据的完整拷贝,占用新的内存空间。对副本的修改不会影响原数组。使用`.copy()`方法显式生成副本。影响:使用视图可以节省内存和提高性能,但在不希望修改原数据的场景下容易引入Bug;使用副本更安全,但在处理大数据时内存开销大。4.答:均方误差(MSE):预测值与真实值差值的平方和的平均值,衡量预测误差的大小。均方根误差(RMSE):MSE的平方根,单位与原数据一致,更直观。平均绝对误差(MAE):预测值与真实值差值绝对值的平均,对异常值不敏感。R平方(R²):决定系数,衡量模型对数据变动的解释比例,越接近1拟合越好。5.答:面向对象绘图:显式地创建Figure(画布)和Axes(坐标系)对象,然后在这些对象上调用绘图方法(如`ax.plot()`)。优势:更精细的控制:可以精确控制每个子图的位置、大小和属性。适合复杂图表:在绘制包含多个子图的复杂图表时,代码结构更清晰,不易混淆。可扩展性:便于封装成函数进行复用。五、应用题1.解题代码:```pythonimportpandasaspd#(1)读取数据并处理日期df=pd.read_csv('sales_data.csv')df['Date']=pd.to_datetime(df['Date'])df.set_index('Date',inplace=True)#(2)计算地区总销售额并找最大region_sales=df.groupby('Region')['Amount'].sum()top_region=region_sales.idxmax()print(f"销售额最高的地区:{top_region},金额:{region_sales.max()}")#(3)计算产品平均销售额并排序product_avg_sales=df.groupby('Product')['Amount'].mean().sort_values(ascending=False)print(product_avg_sales)```2.解题代码:```pythonimportpandasaspdimportnumpyasnp#假设df已存在#(1)处理Age负值age_median=df['Age'].median()#将负值替换为NaN,再填充中位数,或者直接使用where/locdf.loc[df['Age']<0,'Age']=np.nandf['Age'].fillna(age_median,inplace=True)#(2)填充Salary缺失值salary_mean=df['Salary'].mean()df['Salary'].fillna(salary_mean,inplace=True)#(3)City列首字母大写#使用str.title()会将每个单词首字母大写,str.capitalize()仅第一个单词首字母大写#这里假设城市名单词,使用str.capitalize()或自定义处理df['City']=df['City'].str.capitalize()print(df.head())```3.解题代码:```pythonimportpandasaspd#构造示例数据#df1=...#df2=...#df3=...#(1)df1左连接df2merged_dept=pd.merge(df1,df2,on='DeptID',how='left')#(2)结果与df3合并,保留所有薪资记录#df3中可能有EmpID不在df1中的,或者df1中没有DeptID的#题目要求保留所有员工的所有年份薪资记录#第一步已经保留了所有员工,现在合并薪资full_data=pd.merge(merged_dept,df3,on='EmpID',how='outer')#注意:如果要求保留所有员工(包括没薪资的),how='left'相对于merged_dept#如果还要保留df3中存在但df1不存在的(即孤儿薪资),用how='outer'#此处假设基于(1)的结果继续保留所有员工信息,匹配薪资full_data=pd.merge(merged_dept,df3,on='EmpID',how='left')#(3)透视表pivot_result=full_data.pivot_table(index='Name',columns='Year',values='Salary',aggfunc='sum')print(pivot_result)```4.解题代码:```pythonimportpandasaspdimportmatplotlib.pyplotaspltimportseabornassns#假设df已加载,Action_Time已转为datetime#df['Action_Time']=pd.to_datetime(df['Action_Time'])#(1)行为类型水平条形图action_counts=df['Action_Type'].value_counts()plt.figure(figsize=(10,6))sns.barplot(x=action_counts.values,y=action_counts.index,orient='h')plt.title('UserActionCounts')plt.xlabel('Count')plt.show()#(2)24小时活跃度折线图df['Hour']=df['Action_Time'].dt.hourhourly_counts=df.groupby('Hour').size()plt.figure(figsize=(12,6))plt.plot(hourly_counts.index,hourly_counts.values,marker='o')max_hour=hourly_counts.idxmax()plt.scatter([max_hour],[hourly_counts[max()],color='red')plt.annotate(f'Peak:{max_hour}:00',xy=(max_hour,hourly_counts[max()]),xytext=(max_hour+1,hourly_counts[max()]),arrowprops=dict(facecolor='black',shrink=0.05))plt.title('UserActivitybyHour')plt.xlabel('HourofDay')plt.ylabel('ActivityCount')plt.grid(True)plt.show()#(3)2x2子图展示四种行为分布actions=df['Action_Type'].unique()fig,axes=plt.subplots(2,2,figsize=(15,10))axes=axes.ravel()fori,actioninenumerate(actions):subset=df[df['Action_Type']==action]counts=subset.groupby('Hour').size()sns.lineplot(x=counts.index,y=counts.values,ax=axes[i])axes[i].set_title(f'{action}TrendbyHour')axes[i].set_xlabel('Hour')axes[i].set_ylabel('Count')plt.tight_layout()plt.show()```5.综合分析代码:```pythoni

温馨提示

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

评论

0/150

提交评论