版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2026年国企Python数据分析笔试试题(含答案)一、选择题(每题2分,共20题,共40分)(一)单项选择题(每题2分,共15题,共30分)1.在Python中,用于创建空集合的语法是()。A.`{}`B.`[]`C.`set()`D.`()`答案:C解析:在Python中,`{}`表示空字典,`[]`表示空列表,`()`表示空元组。要创建一个空集合,必须使用`set()`函数。2.已知`df`是一个PandasDataFrame,要查看其前3行数据,应使用的正确方法是()。A.`df.head()`B.`df.head(3)`C.`df.tail(3)`D.`df.iloc[:3]`答案:B解析:`df.head()`默认显示前5行,`df.head(3)`显示前3行。`df.tail(3)`显示后3行。`df.iloc[:3]`通过位置索引也能实现,但`head(3)`是更常用和直观的方法。3.NumPy中,用于计算数组元素标准差的函数是()。A.`np.mean()`B.`np.var()`C.`np.std()`D.`np.median()`答案:C解析:`np.mean()`计算均值,`np.var()`计算方差,`np.std()`计算标准差,`np.median()`计算中位数。4.使用Matplotlib绘图时,`plt.subplot(2,2,3)`表示()。A.创建一个2行2列的子图网格,并选择第3个子图(从左到右,从上到下计数)。B.创建一个2行2列的子图网格,并选择第3个子图(从右到左,从下到上计数)。C.创建一个2行3列的子图网格,并选择第2个子图。D.创建一个3行2列的子图网格,并选择第2个子图。答案:A解析:`plt.subplot(nrows,ncols,index)`中,`nrows`和`ncols`定义网格的行列数,`index`指定当前激活的子图位置,索引从1开始,按行优先(从左到右,从上到下)递增。5.在Pandas中,`df.dropna(axis=1,how='all')`语句的作用是()。A.删除所有包含缺失值的行。B.删除所有包含缺失值的列。C.删除所有值均为缺失值的行。D.删除所有值均为缺失值的列。答案:D解析:`axis=1`表示操作对象是列(axis=0为行)。`how='all'`表示只有当该列所有值都是缺失值(NaN)时才删除。6.SQL查询语句中,用于对结果集进行分组的子句是()。A.`ORDERBY`B.`WHERE`C.`GROUPBY`D.`HAVING`答案:C解析:`ORDERBY`用于排序,`WHERE`用于过滤行,`GROUPBY`用于分组,`HAVING`用于过滤分组。7.使用`scikit-learn`库的`train_test_split`函数分割数据集时,参数`test_size=0.2`表示()。A.测试集占整个数据集的20%。B.训练集占整个数据集的20%。C.测试集样本数量为20个。D.训练集样本数量为20个。答案:A解析:`test_size`参数可以接收浮点数(如0.2)表示测试集占总数据集的比例,也可以接收整数表示测试集的绝对样本数。8.在Python中,以下哪个库主要用于处理日期和时间数据?()A.`datetime`B.`time`C.`calendar`D.`pandas.tseries`答案:A解析:`datetime`模块是Python标准库中处理日期和时间的核心模块。`pandas`有更强大的时间序列处理能力,但`datetime`是基础。9.对于PandasSeries对象`s`,执行`s.value_counts()`返回的结果类型是()。A.DataFrameB.SeriesC.ndarrayD.List答案:B解析:`value_counts()`方法返回一个Series,其索引是原Series中的唯一值,值是对应唯一值的出现次数,按次数降序排列。10.使用`scikit-learn`的`StandardScaler`进行数据标准化时,其目标是使数据()。A.均值变为0,标准差变为1。B.最小值变为0,最大值变为1。C.中位数变为0,四分位距变为1。D.服从标准正态分布。答案:A解析:`StandardScaler`通过减去均值再除以标准差来进行标准化(Z-score标准化),处理后数据的均值为0,标准差为1。11.在Python中,用于从JSON格式字符串解析出Python对象的函数是()。A.`json.dumps()`B.`json.loads()`C.`json.dump()`D.`json.load()`答案:B解析:`json.loads()`用于将JSON字符串解码为Python对象。`json.dumps()`用于将Python对象编码为JSON字符串。`json.load()`和`json.dump()`用于处理文件。12.在Pandas中,`df.merge(df1,df2,on='key',how='left')`表示执行的是()。A.内连接(innerjoin)B.左连接(leftjoin)C.右连接(rightjoin)D.外连接(outerjoin)答案:B解析:`how`参数指定连接方式。`'left'`表示左连接,以左边`df1`的`'key'`列为基准,保留所有行,匹配`df2`中对应的行。13.以下哪种数据结构在Python中是不可变的(immutable)?()A.列表(list)B.字典(dict)C.集合(set)D.元组(tuple)答案:D解析:列表、字典、集合都是可变数据类型。元组一旦创建,其元素不能被修改、添加或删除,是不可变的。14.使用`scikit-learn`的`LinearRegression`模型进行训练后,用于获取模型截距(intercept)的属性是()。A.`model.coef_`B.`ercept_`C.`model.score_`D.`model.params_`答案:B解析:在`scikit-learn`的线性回归模型中,`coef_`存储系数(斜率),`intercept_`存储截距。15.在NumPy中,`np.linspace(0,10,5)`生成的数组是()。A.`[02.557.510]`B.`[012345678910]`C.`[01020304050]`D.`[0,2,4,6,8,10]`答案:A解析:`np.linspace(start,stop,num)`在指定的区间`[start,stop]`内生成`num`个均匀间隔的样本。`(10-0)/(5-1)=2.5`,所以数组为`[0,2.5,5,7.5,10]`。(二)多项选择题(每题2分,共5题,共10分。全部选对得2分,漏选得1分,错选或不选得0分)16.以下关于Pandas中数据清洗方法的描述,正确的有()。A.`df.fillna(method='ffill')`可以用前一个有效值填充缺失值。B.`df.replace(to_replace=0,value=np.nan)`可以将所有0替换为缺失值。C.`df.duplicated()`可以检测并标记重复的行。D.`df.drop_duplicates(inplace=True)`可以直接在原DataFrame上删除重复行。答案:A,C,D解析:B选项错误在于,`df.replace(to_replace=0,value=np.nan)`会将所有等于0的值替换为NaN,但DataFrame中可能包含其他类型的0(如字符串'0')或0.0,且默认不是全部替换所有0。更精确的表述是“将数值0替换为缺失值”。A、C、D描述均正确。17.在数据可视化中,以下哪些图表适合展示两个连续变量之间的关系?()A.散点图(ScatterPlot)B.折线图(LineChart)C.热力图(Heatmap,用于相关性矩阵)D.箱线图(BoxPlot)答案:A,B,C解析:散点图直接展示两个连续变量的分布关系;折线图常用于展示一个连续变量随另一个连续变量(通常是时间或顺序)的变化趋势;相关性热力图通过颜色深浅展示两个变量间相关系数的大小。箱线图主要用于展示单个连续变量的分布,或比较不同类别下连续变量的分布,不直接展示两个连续变量的具体关系。18.以下属于`scikit-learn`中常用的模型评估指标的有()。A.准确率(Accuracy)B.精确率(Precision)C.召回率(Recall)D.F1分数(F1-Score)E.均方误差(MeanSquaredError)答案:A,B,C,D,E解析:准确率、精确率、召回率、F1分数是分类问题的常用评估指标。均方误差(MSE)是回归问题的常用评估指标。它们都可以在`sklearn.metrics`模块中找到。19.关于Python的`with`语句,以下说法正确的有()。A.用于简化资源管理(如文件操作)的代码。B.可以确保即使在发生异常时,资源也能被正确释放(如关闭文件)。C.其管理的对象必须实现上下文管理器协议(`__enter__`和`__exit__`方法)。D.只能用于文件操作。答案:A,B,C解析:`with`语句的核心优势是资源管理,确保退出代码块时执行清理操作。它适用于任何实现了上下文管理器协议的对象,如文件、锁、数据库连接等,并非仅限于文件操作。20.在NumPy中,以下哪些操作可以用于改变数组的形状?()A.`arr.reshape()`B.`arr.resize()`C.`arr.flatten()`D.`arr.T`或`arr.transpose()`答案:A,B,C,D解析:`reshape`返回新形状的视图(如果可能);`resize`直接修改数组本身形状;`flatten`将数组展平为一维;`.T`或`transpose()`进行数组转置,改变轴的顺序,也是一种形状改变。二、填空题(每空1分,共10空,共10分)21.在Python中,使用`open('file.txt','______')`模式打开文件可以进行读写,且不会清空原文件内容,文件指针置于开头。答案:r+22.在Pandas中,`df.______`属性可以查看DataFrame的索引、列名和非空值数量等基本信息。答案:info()23.假设有一个列表`lst=[1,2,3,4,5]`,使用列表推导式生成其平方列表的代码是`[x**2forxinlst]`,结果是`______`。答案:[1,4,9,16,25]24.在SQL中,用于从表`employees`中查询`salary`字段最大值的关键字函数是`______`。答案:MAX(salary)25.使用`scikit-learn`构建机器学习流程时,通常将数据集分为训练集和测试集,其目的是为了评估模型的`______`能力。答案:泛化26.在Matplotlib中,`plt.______()`函数用于在图表上添加图例。答案:legend27.Pandas中,`df.groupby('department')['salary'].______()`可以计算每个部门的平均工资。答案:mean28.在Python正则表达式模块`re`中,`______`方法用于在字符串中搜索匹配正则表达式的第一个位置。答案:re.search()或`search`29.在NumPy中,`np.______`函数用于创建所有元素为1的数组。答案:ones30.数据预处理中,将分类变量(如“男”、“女”)转换为数值型变量(如0,1)的常用技术称为`______`。答案:编码(Encoding),常见具体方法如“独热编码(One-HotEncoding)”或“标签编码(LabelEncoding)”也可算对,但“编码”是更通用的术语。三、简答题(每题5分,共4题,共20分)31.简述Pandas中`loc`和`iloc`索引器的区别。答案:`loc`是基于标签(label-based)的索引器,使用行和列的索引名称(indexlabelsandcolumnnames)进行数据选取。其切片范围包含起始和结束位置,例如`df.loc['a':'c']`。`iloc`是基于整数位置(integerposition-based)的索引器,使用行和列的整数位置(从0开始)进行数据选取。其切片范围遵循Python的切片规则,包含起始位置,不包含结束位置,例如`df.iloc[0:3]`选取第0,1,2行。32.什么是过拟合(Overfitting)?列举两种在机器学习中防止过拟合的常用方法。答案:过拟合是指模型在训练数据上表现非常好,但在未见过的测试数据或新数据上表现显著下降的现象。模型过于复杂,学习了训练数据中的噪声和细节,导致泛化能力差。防止过拟合的常用方法包括:(1)获取更多的训练数据。(2)使用正则化技术(如L1,L2正则化)。(3)降低模型复杂度(如减少树模型的深度、减少神经网络的层数或神经元数量)。(4)使用交叉验证(Cross-Validation)进行模型选择。(5)集成方法,如随机森林(RandomForest)通过Bagging减少方差。(6)早停法(EarlyStopping,用于神经网络等迭代训练模型)。(答出任意两种即可)33.简述在Pandas中读取一个包含中文的CSV文件时,可能遇到的编码问题及解决方法。答案:问题:直接使用`pd.read_csv('file.csv')`读取包含中文的CSV文件时,可能会因编码不匹配导致中文字符显示为乱码。原因:CSV文件可能使用非UTF-8编码保存,如GBK,GB2312等。解决方法:在`read_csv`函数中指定正确的编码参数`encoding`。例如,如果文件是GBK编码,则使用`pd.read_csv('file.csv',encoding='gbk')`。常见的编码还有`'utf-8'`,`'gb2312'`,`'ansi'`等。若不确定编码,可尝试使用`'utf-8'`,`'gbk'`,或用文本编辑器(如Notepad++)查看文件编码。34.解释SQL中`WHERE`子句和`HAVING`子句的区别。答案:`WHERE`子句用于在分组(`GROUPBY`)之前过滤行(记录)。它不能包含聚合函数(如SUM,COUNT),作用于单个行。`HAVING`子句用于在分组(`GROUPBY`)之后过滤分组。它通常与聚合函数一起使用,用于筛选满足特定条件的组。简单来说,`WHERE`过滤行,`HAVING`过滤组。四、应用题(共3题,共30分)35.【计算/分析题】(10分)给定一个PandasDataFrame`df_sales`,包含以下字段:`date`(日期,datetime类型),`product_id`(产品ID),`sales_volume`(销量),`revenue`(收入)。(1)请写出计算每个产品总销量的代码。(2)请写出计算2025年第一季度(1月1日至3月31日)日均收入的代码。(3)请写出按月份统计每月总收入,并按收入降序排列的代码。答案:```python#(1)计算每个产品总销量total_volume_per_product=df_sales.groupby('product_id')['sales_volume'].sum()#(2)计算2025年第一季度日均收入#首先筛选出2025年第一季度的数据q1_2025_mask=(df_sales['date']>='2025-01-01')&(df_sales['date']<='2025-03-31')df_q1_2025=df_sales.loc[q1_2025_mask]#计算日均收入daily_avg_revenue_q1=df_q1_2025['revenue'].sum()/df_q1_2025['date'].nunique()#方法1:总收入/唯一天数#或使用重采样方法(如果日期是索引)#daily_avg_revenue_q1=df_q1_2025.set_index('date')['revenue'].resample('D').sum().mean()#(3)按月统计总收入并降序排列#方法1:使用dt访问器提取月份年份,然后分组聚合df_sales['year_month']=df_sales['date'].dt.to_period('M')#或dt.strftime('%Y-%m')monthly_revenue=df_sales.groupby('year_month')['revenue'].sum().sort_values(ascending=False)#方法2:将日期设为索引后重采样#monthly_revenue=df_sales.set_index('date').resample('M')['revenue'].sum().sort_values(ascending=False)```36.【分析/综合题】(10分)你手头有一个关于某电商平台用户消费行为的数据集`df_users`,包含字段:`user_id`,`age`,`gender`,`city_level`(城市等级),`avg_order_value`(平均订单金额),`purchase_freq`(购买频率,次/月),`is_churned`(是否流失,1表示流失)。业务部门希望分析影响用户流失的关键因素。(1)从数据探索性分析(EDA)的角度,你会通过哪些步骤和可视化方法来初步了解数据与流失率的关系?(至少列出3种方法或图表)(2)假设你发现`avg_order_value`和`purchase_freq`与`is_churned`可能存在非线性关系,你计划建立一个预测用户流失的分类模型。除了逻辑回归,请再列举两种适合此场景的分类模型,并简要说明其可能优势。答案:(1)EDA步骤和可视化方法:单变量与目标关系分析:分别绘制`age`,`avg_order_value`,`purchase_freq`等连续变量在流失用户与非流失用户上的分布对比图,如使用箱线图或小提琴图。分类变量与目标关系分析:计算并可视化`gender`,`city_level`等分类变量在不同取值下的流失率,使用柱状图(每个柱子代表一个类别,高度代表该类别流失率)。相关性分析:计算数值型特征与`is_churned`标签之间的相关系数(如点二列相关),并绘制热力图。或使用`pandas_profiling`进行快速整体分析。多变量交叉分析:例如,使用散点图(可加入颜色维度表示是否流失)观察`avg_order_value`和`purchase_freq`两个变量与流失的关系。(答出任意三种即可,需结合具体字段描述)(2)两种分类模型及其可能优势:随机森林(RandomForest):优势:能自动处理非线性关系,不需要复杂的特征工程(如对非线性关系的显式转换)。对异常值和缺失值不敏感。能评估特征重要性,有助于业务解释。梯度提升树(如XGBoost,LightGBM,CatBoost):优势:通常具有更高的预测精度。能有效处理非线性关系。LightGBM和CatBoost对类别特征处理友好,训练速度快,适合表格数据。支持向量机(SVMwithRBFKernel):优势:在高维空间中可以有效处理复杂的非线性决策边界。(答出任意两种即可,需简要说明优势)37.【综合/分析题】(10分)阅读以下Python代码片段,该代码旨在从一个模拟的销售数据列表中提取信息并计算指标。请分析代码,回答后续问题。```pythonsales_data=[{'region':'North','product':'A','amount':100},{'region':'North','product':'B','amount':150},{'region':'South','product':'A','amount':200},{'region':'South','product':'A','amount':120},{'region':'East','product':'C','amount':300},]#目标:计算每个区域(region)的总销售额(amount)region_total={}forrecordinsales_data:region=record.get('region')amount=record.get('amount',0)#假设amount字段可能缺失,默认为0ifregionnotinregion_total:region_total[region]=0region_total[region]+=amountprint("区域总销售额:",region_total)#问题:找出销售额最高的区域ifregion_total:top_region=max(region_total,key=region_total.get)print(f"销售额最高的区域是:{top_region},销售额为:{region_total[top_region]}")else:print("无销售数据")```(1)如果`sales_data`列表中添加一条新记录:`{'region':'North','product':'A','amount':None}`,上述代码在运行时可能会遇到什么问题?如何修改代码以稳健地处理这种情况?(2)除了使用循环和字典手动聚合,请使用Pandas库重写上述功能,实现相同的计算目标(计算各区域总销售额并找出最高区域)。答案:(1)问题:当`amount`为`None`时,`record.get('amount',0)`会返回`None`(因为`get`方法只对键不存在时返回默认值,而键存在但值为`None`时仍返回`None`)。在`region_total[region]+=amount`这一行,尝试将`None`与整数相加会导致`TypeError:unsuppo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 五大类专业男生就业前景
- 健康宣教动画设计参考
- 人工智能发展加速中
- 太原健康宣教
- 空管自动化系统机务员安全行为考核试卷含答案
- 溶解乙炔生产工操作规范强化考核试卷含答案
- 鼓风炉工标准化模拟考核试卷含答案
- 生活垃圾处理工安全意识测试考核试卷含答案
- 真空制盐工操作规程竞赛考核试卷含答案
- 中央空调系统运行操作员岗中实操测试考核试卷含答案
- 手术体位相关性周围神经损伤预防专家共识
- 普通地质学教材
- 教师资格证幼儿教育真题及答案近五年合集
- 书信礼仪课件
- HY/T 0330-2022海滩养护与修复工程验收技术方法
- JJG 1029-2007涡街流量计
- GA/T 850-2021城市道路路内停车位设置规范
- 中医方剂学教材在线阅读
- UCP600-ISBP745及案例专题培训课件
- 燃机三菱控制系统简述课件
- 《固定式压力容器安全技术监察规程》
评论
0/150
提交评论