(2025年)python数据分析期末考试题及答案_第1页
(2025年)python数据分析期末考试题及答案_第2页
(2025年)python数据分析期末考试题及答案_第3页
(2025年)python数据分析期末考试题及答案_第4页
(2025年)python数据分析期末考试题及答案_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

(2025年)python数据分析期末考试题及答案一、单项选择题(每题2分,共20分)1.以下关于Pandas中`DataFrame`的操作,说法错误的是()A.`df.rename(columns={'old':'new'})`会直接修改原DataFrame的列名B.`df.drop_duplicates(subset=['col1'])`会删除`col1`列中值重复的行(保留第一个)C.`df['col'].str.split('-',expand=True)`可以将字符串列按分隔符拆分为多列D.`df.sample(n=5,random_state=42)`会从DataFrame中随机抽取5行,结果可复现2.对某电商用户年龄数据(存在缺失值)进行处理时,若数据分布右偏(均值>中位数),更合理的缺失值填充方法是()A.用均值填充B.用中位数填充C.用众数填充D.直接删除缺失行3.已知`importnumpyasnp`,执行`np.arange(1,10).reshape(3,3)`后,输出的数组中第2行第3列元素是()A.5B.6C.8D.94.用Seaborn绘制分类变量的箱线图时,若要按`category`列分组显示`value`列的分布,应使用的函数是()A.`sns.lineplot(x='category',y='value',data=df)`B.`sns.boxplot(x='category',y='value',data=df)`C.`sns.histplot(x='value',hue='category',data=df)`D.`sns.scatterplot(x='category',y='value',data=df)`5.对某数据集执行`df.describe()`后,输出结果中的`25%`分位数表示()A.数据中25%的数值小于等于该值B.数据中25%的数值大于等于该值C.数据中50%的数值在该值与中位数之间D.数据中75%的数值大于该值6.以下关于`pandas.merge()`函数的描述,正确的是()A.`how='inner'`表示保留两个DataFrame中所有匹配的行B.`on='key'`要求两个DataFrame必须有完全相同的列名`key`C.`left_on`和`right_on`不能同时使用D.默认合并方式为`how='outer'`7.若要计算两个变量的Pearson相关系数,需满足的前提条件是()A.两个变量均为分类变量B.两个变量呈线性关系且服从正态分布C.其中一个变量为分类变量,另一个为连续变量D.数据中无缺失值且样本量小于308.执行以下代码后,输出结果是()```pythonimportpandasaspds=pd.Series([1,2,3,4],index=['a','b','c','d'])s.iloc[1:3]```A.`a1``b2`(索引a和b)B.`b2``c3`(索引b和c)C.`c3``d4`(索引c和d)D.`b2``c3``d4`(索引b、c、d)9.处理时间序列数据时,若要将`'2023-12-3123:59:59'`格式的字符串转换为`datetime`类型,应使用的函数是()A.`pd.to_datetime('2023-12-3123:59:59')`B.`pd.Timestamp('2023-12-3123:59:59')`C.`datetime.strptime('2023-12-3123:59:59','%Y-%m-%d%H:%M:%S')`D.以上均可10.对某样本数据进行Z-score标准化后,某一数据点的Z值为2.5,说明该数据点()A.比均值低2.5个标准差B.比均值高2.5个标准差C.是异常值(需结合具体场景判断)D.标准化后的范围在[0,1]之间二、填空题(每题2分,共20分)1.在Pandas中,若要将DataFrame的行索引重置为从0开始的连续整数,需使用的方法是______。2.已知`arr=np.array([[1,2],[3,4],[5,6]])`,`arr[:,1]`的结果是______(用数组表示)。3.若要统计DataFrame中各列缺失值的数量,可使用的代码是______。4.绘制散点图时,若要通过颜色区分不同类别的数据,Seaborn中可通过______参数实现。5.对分组后的数据进行聚合时,若要同时计算均值和标准差,可使用`agg()`方法并传入______(示例格式)。6.在假设检验中,原假设`H0`为“总体均值等于50”,若实际总体均值为50,但检验结果拒绝了`H0`,则犯了______错误。7.若要将DataFrame按`'category'`列分组,并计算`'sales'`列的总和,代码为______。8.计算两个数组的点积(内积)时,NumPy中应使用______函数。9.时间序列数据中,`df['date'].dt.month`可以提取日期的______信息。10.若某特征的方差接近0,说明该特征的______极低,对模型预测几乎无贡献。三、编程题(每题15分,共45分)1.数据读取与基础处理现有一份电商用户行为数据`user_behavior.csv`,包含以下字段:`user_id`:用户ID(整数)`item_id`:商品ID(整数)`behavior_type`:行为类型(1-点击,2-收藏,3-加购,4-购买)`timestamp`:行为时间戳(Unix时间戳,单位秒)`age`:用户年龄(部分缺失)要求:(1)读取该CSV文件,指定`user_id`和`item_id`为整数类型(默认可能被误读为浮点数);(2)将`timestamp`列转换为`datetime`类型,并提取月份(`month`)和小时(`hour`)作为新列;(3)统计各行为类型(`behavior_type`)的出现次数,按次数降序排列;(4)对`age`列的缺失值进行处理:若缺失比例小于10%,则用中位数填充;否则删除缺失行(需先计算缺失比例)。2.分组分析与可视化基于上一题处理后的DataFrame(记为`df`),完成以下任务:(1)按`month`和`behavior_type`分组,计算每组的用户数(去重的`user_id`);(2)筛选出`behavior_type=4`(购买行为)的数据,按`hour`分组统计购买次数,绘制柱状图(横轴为小时,纵轴为次数,标题为“各小时购买次数分布”);(3)计算不同年龄区间(0-18岁,19-30岁,31-50岁,51岁以上)的用户在购买行为(`behavior_type=4`)中的占比,结果保留2位小数。3.相关分析与假设检验某新能源汽车公司收集了2023年各月份的销售数据`car_sales.csv`,字段包括:`month`:月份(1-12)`sales`:销量(辆)`advertising`:广告投入(万元)`avg_temp`:当月平均气温(℃)要求:(1)计算`sales`与`advertising`、`sales`与`avg_temp`的Pearson相关系数,输出相关系数矩阵;(2)检验`advertising`与`sales`是否存在显著线性相关关系(α=0.05),需写出原假设、备择假设及检验结论(已知数据满足正态性假设);(3)绘制`advertising`与`sales`的散点图,并添加趋势线。四、综合应用题(15分)背景:某在线教育平台记录了2023年用户的学习行为数据`study_data.csv`,字段如下:`user_id`:用户ID`study_duration`:单次学习时长(分钟,连续变量)`video_views`:视频观看次数(整数)`quiz_score`:测验得分(0-100分)`is_pay`:是否为付费用户(0=免费,1=付费)任务:(1)数据清洗:检查并处理异常值(`study_duration`超过300分钟或小于0的视为异常);(2)特征工程:创建新特征`study_efficiency`(学习效率)=`quiz_score`/`study_duration`(若`study_duration=0`则置为0);(3)对比分析:比较付费用户与免费用户的学习效率(`study_efficiency`)、视频观看次数(`video_views`)的差异,要求输出均值、标准差,并绘制箱线图;(4)结论推断:根据分析结果,推测付费用户与免费用户的学习行为差异可能的原因(需结合业务场景)。答案一、单项选择题1.A(`rename`默认不修改原DataFrame,需设置`inplace=True`或重新赋值)2.B(右偏分布时中位数更稳健)3.B(数组为[[1,2,3],[4,5,6],[7,8,9]],第2行第3列即索引[1,2]为6)4.B(箱线图函数为`boxplot`)5.A(分位数定义)6.A(`inner`取交集)7.B(Pearson相关要求线性关系和正态性)8.B(`iloc`按位置索引,1:3取索引1和2,对应值2和3)9.D(三种方法均可转换)10.B(Z值=(x-μ)/σ,2.5表示高于均值2.5个标准差)二、填空题1.`df.reset_index(drop=True)`2.`array([2,4,6])`3.`df.isnull().sum()`4.`hue`5.`['mean','std']`(或字典形式`{'col':'mean','col':'std'}`)6.第一类(或α)7.`df.groupby('category')['sales'].sum()`8.`np.dot()`(或`@`运算符)9.月份10.离散程度(或方差、变异程度)三、编程题1.数据读取与基础处理```pythonimportpandasaspd(1)读取数据并指定类型df=pd.read_csv('user_behavior.csv',dtype={'user_id':int,'item_id':int})(2)转换时间戳并提取月份、小时df['timestamp']=pd.to_datetime(df['timestamp'],unit='s')df['month']=df['timestamp'].dt.monthdf['hour']=df['timestamp'].dt.hour(3)统计行为类型次数behavior_count=df['behavior_type'].value_counts().sort_values(ascending=False)print("行为类型次数统计:\n",behavior_count)(4)处理age缺失值missing_rate=df['age'].isnull().mean()ifmissing_rate<0.1:df['age']=df['age'].fillna(df['age'].median())else:df=df.dropna(subset=['age'])```2.分组分析与可视化```pythonimportmatplotlib.pyplotasplt(1)分组计算去重用户数grouped=df.groupby(['month','behavior_type'])['user_id'].nunique().reset_index()grouped.columns=['month','behavior_type','user_count'](2)绘制各小时购买次数柱状图purchase_data=df[df['behavior_type']==4]hour_purchase=purchase_data['hour'].value_counts().sort_index()plt.bar(hour_purchase.index,hour_purchase.values)plt.xlabel('小时')plt.ylabel('购买次数')plt.title('各小时购买次数分布')plt.xticks(range(24))plt.show()(3)计算年龄区间购买占比bins=[0,18,30,50,100]labels=['0-18岁','19-30岁','31-50岁','51岁以上']df['age_group']=pd.cut(df['age'],bins=bins,labels=labels,right=True)purchase_group=df[df['behavior_type']==4]['age_group'].value_counts(normalize=True).round(4)100print("各年龄区间购买占比:\n",purchase_group)```3.相关分析与假设检验```pythonimportnumpyasnpfromscipyimportstatsimportseabornassns(1)计算相关系数矩阵df=pd.read_csv('car_sales.csv')corr_matrix=df[['sales','advertising','avg_temp']].corr()print("相关系数矩阵:\n",corr_matrix)(2)假设检验H0:ρ=0(广告投入与销量无显著线性相关)H1:ρ≠0(存在显著线性相关)r,p_value=stats.pearsonr(df['advertising'],df['sales'])ifp_value<0.05:print(f"检验结论:拒绝原假设,广告投入与销量存在显著线性相关(r={r:.2f},p={p_value:.4f})")else:print("检验结论:不拒绝原假设")(3)绘制散点图与趋势线sns.regplot(x='advertising',y='sales',data=df)plt.title('广告投入与销量的关系')plt.show()```四、综合应用题```pythonimportpandasaspdimportmatplotlib.pyplotaspltimportseabornassns(1)数据清洗:处理study_duration异常值df=pd.read_csv('study_data.csv')df=df[(df['study_duratio

温馨提示

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

最新文档

评论

0/150

提交评论