版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2025年python数据分析试题及答案一、单项选择题(每题2分,共20分)1.以下关于Pandas中DataFrame的描述,错误的是()A.可通过df.reset_index(drop=True)将索引重置为默认整数索引并删除原索引B.df.loc[:,['col1','col2']]表示选取所有行的col1和col2列C.df['col3'].astype('category')会将col3列转换为数值类型D.df.groupby('category').agg({'sales':'sum'})可按category分组并计算sales总和答案:C2.某数据集中"price"列存在异常值(大于均值3倍标准差),最合理的处理方式是()A.直接删除所有异常值所在行B.用均值替换异常值C.用中位数替换异常值D.结合业务场景判断异常值合理性后再处理答案:D3.对时间序列数据进行滚动窗口计算时,若需计算过去30天的移动平均,且要求窗口包含当前行,应使用()A.df.rolling(window=30,closed='right')B.df.rolling(window=30,closed='left')C.df.rolling(window=30,closed='both')D.df.rolling(window=30,closed='neither')答案:A4.用Seaborn绘制分组箱线图时,若需按"region"分组展示"profit"的分布,正确的代码是()A.sns.boxplot(x='profit',y='region',data=df)B.sns.boxplot(x='region',y='profit',data=df)C.sns.boxplot(hue='region',y='profit',data=df)D.sns.boxplot(x='profit',hue='region',data=df)答案:B5.某DataFrame的"date"列格式为"2024-05-1514:30:00",需提取月份信息,正确的操作是()A.df['date'].dt.monthB.df['date'].str.split('-')[1]C.pd.to_datetime(df['date']).dt.monthD.df['date'].apply(lambdax:x[5:7])答案:A(假设"date"列已为datetime类型,若未转换则选C)6.对包含10万条记录的数据集进行缺失值处理时,发现某列"customer_type"缺失率为65%,最优处理方式是()A.删除该列B.用众数填充C.用KNN算法预测填充D.构建新特征标记缺失状态后删除该列答案:A7.计算两个变量的Spearman相关系数时,适用的场景是()A.两个变量均为正态分布的连续变量B.一个变量为分类变量,另一个为连续变量C.两个变量为有序分类变量或非正态连续变量D.需衡量线性相关程度答案:C8.以下NumPy操作中,不会改变原数组的是()A.arr.resize((2,3))B.arr[:,1]=0C.np.concatenate((arr1,arr2))D.arr.astype('float32')答案:C9.用Pandas读取CSV文件时,若文件中某些行的列数不一致,正确的处理参数是()A.error_bad_lines=FalseB.on_bad_lines='skip'C.skiprows=3D.usecols=[0,1,2]答案:B(Pandas2.0+版本使用on_bad_lines参数)10.对用户行为数据进行RFM分析时,"Recency"指标通常指()A.用户最近一次购买至今的时间B.用户总购买次数C.用户最近一次购买的金额D.用户平均购买间隔时间答案:A二、编程题(每题15分,共45分)1.现有电商订单数据集order.csv(字段:order_id,user_id,order_date,product_id,category,amount,is_refund),要求:(1)读取数据并将order_date转换为datetime类型;(2)筛选2024年1月1日至2024年6月30日期间未退款(is_refund=0)的订单;(3)计算每个用户(user_id)的总消费金额、订单数量及购买过的不同品类数量(category去重计数)。答案:```pythonimportpandasaspd(1)读取数据并转换日期格式df=pd.read_csv('order.csv')df['order_date']=pd.to_datetime(df['order_date'])(2)筛选时间范围和未退款订单start_date=pd.to_datetime('2024-01-01')end_date=pd.to_datetime('2024-06-30')filtered_df=df[(df['order_date']>=start_date)&(df['order_date']<=end_date)&(df['is_refund']==0)](3)用户维度聚合计算user_stats=filtered_df.groupby('user_id').agg(total_amount=('amount','sum'),order_count=('order_id','nunique'),category_count=('category','nunique')).reset_index()print(user_stats.head())```2.某新能源汽车销售数据集sales.csv(字段:date,region,model,sales_volume,price),要求:(1)按"region"和"model"分组,计算2024年各季度的平均价格(price)和总销量(sales_volume);(2)绘制各区域(region)2024年各季度总销量的堆积柱状图(x轴为季度,y轴为销量,不同颜色代表不同region)。答案:```pythonimportpandasaspdimportmatplotlib.pyplotasplt数据预处理df=pd.read_csv('sales.csv')df['date']=pd.to_datetime(df['date'])df=df[df['date'].dt.year==2024]筛选2024年数据df['quarter']='Q'+df['date'].dt.quarter.astype(str)提供季度字段(1)分组聚合grouped=df.groupby(['region','model','quarter']).agg(avg_price=('price','mean'),total_sales=('sales_volume','sum')).reset_index()(2)堆积柱状图绘制(按region和季度)先按region和季度汇总总销量(不考虑model)plot_data=df.groupby(['region','quarter'])['sales_volume'].sum().unstack('region')plt.figure(figsize=(10,6))plot_data.plot(kind='bar',stacked=True,ax=plt.gca())plt.xlabel('Quarter')plt.ylabel('TotalSalesVolume')plt.title('2024QuarterlySalesbyRegion(Stacked)')实际考试中可省略标题plt.legend(title='Region')plt.xticks(rotation=0)plt.show()```3.某社交平台用户行为数据集user_behavior.csv(字段:user_id,login_time,logout_time,page_views,interactions),其中login_time和logout_time为时间戳(单位:秒),要求:(1)计算每个用户的单次登录时长(logout_time-login_time,单位:分钟);(2)处理异常登录时长(如负数、超过24小时),将异常值替换为该用户的平均登录时长(若用户无有效时长则删除);(3)分析登录时长与页面浏览量(page_views)的相关性,输出Pearson相关系数和散点图。答案:```pythonimportpandasaspdimportnumpyasnpimportmatplotlib.pyplotaspltfromscipy.statsimportpearsonr(1)计算登录时长(分钟)df=pd.read_csv('user_behavior.csv')df['duration']=(df['logout_time']-df['login_time'])/60秒转分钟(2)处理异常值定义异常条件:时长<=0或>2460=1440分钟df['is_valid']=(df['duration']>0)&(df['duration']<=1440)按用户分组,计算有效时长的均值user_avg=df[df['is_valid']].groupby('user_id')['duration'].mean().reset_index()user_avg.rename(columns={'duration':'avg_duration'},inplace=True)合并平均时长到原数据df=df.merge(user_avg,on='user_id',how='left')替换异常值:无效时长用用户平均替换,无平均的删除(avg_duration为NaN)df['duration_clean']=np.where(df['is_valid'],df['duration'],df['avg_duration'])df=df.dropna(subset=['duration_clean'])删除无有效时长的用户记录(3)相关性分析corr,p_value=pearsonr(df['duration_clean'],df['page_views'])print(f"Pearson相关系数:{corr:.4f}")绘制散点图plt.figure(figsize=(8,5))plt.scatter(df['duration_clean'],df['page_views'],alpha=0.5)plt.xlabel('LoginDuration(minutes)')plt.ylabel('PageViews')plt.show()```三、综合分析题(35分)某生鲜电商公司提供了2023-2024年用户订单数据(orders.csv)和用户信息数据(users.csv),字段如下:orders.csv:order_id(订单ID),user_id(用户ID),order_time(下单时间),product_id(商品ID),category(商品品类),amount(支付金额),is_repeat(是否复购,1为是)users.csv:user_id(用户ID),register_time(注册时间),age(年龄),city(城市),member_level(会员等级,1-5级)要求完成以下分析任务:1.数据清洗(10分):-检查并处理orders表中的缺失值(假设"category"列有5%缺失,"amount"列有2%缺失);-检查orders表中"order_time"与users表中"register_time"的时间逻辑(用户下单时间应晚于注册时间),处理异常记录。2.用户分层分析(15分):-计算每个用户的R(最近一次下单距今天数)、F(总订单数)、M(总支付金额)指标;-基于RFM模型对用户进行分层(至少分为4层),并描述各层用户特征。3.业务洞察(10分):-结合用户信息(年龄、城市、会员等级)和RFM分层结果,提出提升高价值用户留存的策略建议。答案:1.数据清洗```pythonimportpandasaspdimportnumpyasnpfromdatetimeimportdatetime读取数据orders=pd.read_csv('orders.csv')users=pd.read_csv('users.csv')处理orders缺失值category列(5%缺失):用该商品ID对应的众数品类填充(假设product_id与category强相关)category_mode=orders.groupby('product_id')['category'].transform(lambdax:x.mode()[0]ifnotx.mode().emptyelsenp.nan)orders['category']=orders['category'].fillna(category_mode)amount列(2%缺失):用同品类、同用户等级的平均金额填充先合并用户等级信息orders=orders.merge(users[['user_id','member_level']],on='user_id',how='left')计算填充值amount_fill=orders.groupby(['category','member_level'])['amount'].transform('mean')orders['amount']=orders['amount'].fillna(amount_fill)orders.drop(columns=['member_level'],inplace=True)去除临时合并列时间逻辑检查orders['order_time']=pd.to_datetime(orders['order_time'])users['register_time']=pd.to_datetime(users['register_time'])merged=orders.merge(users[['user_id','register_time']],on='user_id',how='left')筛选下单时间早于注册时间的异常记录abnormal=merged[merged['order_time']<merged['register_time']]处理方式:删除异常记录(或联系业务确认是否为时间戳错误)orders=orders[~orders['order_id'].isin(abnormal['order_id'])]```2.用户RFM分层分析```python计算RFM指标(假设分析时间为2024-12-31)analysis_date=pd.to_datetime('2024-12-31')R:最近一次下单距今天数rfm=orders.groupby('user_id').agg(R=('order_time',lambdax:(analysis_date-x.max()).days),F=('order_id','nunique'),M=('amount','sum')).reset_index()计算各指标分位数(4分位)forcolin['R','F','M']:rfm[f'{col}_score']=pd.qcut(rfm[col],q=4,labels=[1,2,3,4],duplicates='drop')分层规则(示例):高价值用户:R_score>=3&F_score>=3&M_score>=3潜力用户:R_score>=3&(F_score>=2|M_score>=2)新用户:R_score>=3&F_score=1流失用户:R_score<=2rfm['user_segment']=np.select([(rfm['R_score']>=3)&(rfm['F_score']>=3)&(rfm['M_score']>=3),(rfm[
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 青岛2026成人高考高起专语文预测试题(含答案)
- 武汉市事业单位2026招聘公共基础知识高频考点题库含易错解析
- 供应链中断联动协调预案
- 青海公务员试题及答案
- 农村自建住房工程承包合同参考合同二篇
- 产品性能测试标准与测试记录模板
- 重庆2026事业单位联考-综合应用能力D类中小学教师模拟卷(含答案)
- 齐齐哈尔市2026乡村振兴专干招聘考试笔试题含本地三农政策
- 中百仓储裸价运营策略
- 黄色儿童权益保护
- 射频连接器与电缆组件
- GB/T 29863-2023服装制图
- 植物源调味料名录(征求意见稿)
- 妊娠高血压综合症护理查房
- 剧毒易制毒易制爆化学品日常安全检查表
- GB/T 4272-2008设备及管道绝热技术通则
- GB/T 23901.5-2019无损检测射线照相检测图像质量第5部分:双丝型像质计图像不清晰度的测定
- GB/T 17766-1999固体矿产资源/储量分类
- GA 898-2010大型焰火燃放作业人员资格条件及管理
- 住宅小区恒温恒湿恒氧系统教程文件课件
- PCR技术及其发展和应用课件
评论
0/150
提交评论