Python数据分析面试题及答案.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

Python数据分析面试题及答案

一、基础操作题(Pandas/NumPy)

问题:用Pandas读取CSV文件时,如何跳过前3行标题、指定“日期”列为时间格式,且只读取“用户ID”“消费金额”“日期”三列?

答案:

importpandasaspd

df=pd.read_csv(

data.csv,

skiprows=3,#跳过前3行

usecols=[用户ID,消费金额,日期],#指定列

parse_dates=[日期]#解析为datetime格式

)

注意:若日期格式不标准(如“2023.10.01”),需加date_parser=lambdax:pd.to_datetime(x,format=%Y.%m.%d)。

问题:NumPy中如何创建一个形状为(3,4)、元素值在[0,10)之间的随机整数数组?并计算每行的最大值。

答案:

importnumpyasnp

#创建随机数组

arr=np.random.randint(0,10,size=(3,4))

#计算每行最大值

row_max=np.max(arr,axis=1)#axis=1表示按行计算

扩展:若要保留最大值的索引,用np.argmax(arr,axis=1)。

二、数据清洗题

问题:DataFrame中“年龄”列存在缺失值和异常值(如负数、超过150),如何处理?

答案:分两步处理:

#1.替换异常值为NaN(负数或150视为异常)

df[年龄]=df[年龄].mask((df[年龄]0)|(df[年龄]150))

#2.填充缺失值(数值型用中位数更抗outliers,避免均值被异常值影响)

df[年龄]=df[年龄].fillna(df[年龄].median())

注意:若“年龄”是分类场景(如“未成年/成年”),可先分组再填充(df.groupby(性别)[年龄].transform(lambdax:x.fillna(x.median())))。

处理异常值:先过滤不合理数据,再填充缺失值

问题:如何用Pandas去除DataFrame中“用户ID”列的重复值,且保留第一次出现的记录?

答案:

#keep=first保留首次出现,inplace=True直接修改原数据

df.drop_duplicates(subset=[用户ID],keep=first,inplace=True)

扩展:若需查看重复行,用df[df.duplicated(subset=[用户ID],keep=False)]。

三、数据分析题

问题:现有销售数据(含“区域”“产品类别”“销售额”“日期”),如何计算每个区域每月各产品类别的平均销售额?

答案:先新增“月份”列,再分组聚合:

#1.提取月份(格式:2023-10)

df[月份]=df[日期].dt.to_period(M)

#2.分组计算平均销售额

monthly_avg=df.groupby([区域,月份,产品类别])[销售额].agg(mean).reset_index()

关键:reset_index()将分组索引转为列,避免后续操作因多级索引报错。

问题:用Matplotlib/Seaborn绘制“各产品类别销售额分布箱线图”,要求区分不同类别颜色,添加标题和坐标轴标签。

答案:

importseabornassns

importmatplotlib.pyplotasplt

plt.figure(figsize=(10,6))#设置图大小

#绘制箱线图,hue区分类别,palette指定颜色

sns.boxplot(x=产品类别,y=销售额,data=df,hue=产品类别,palette=Set2,legend=False)

#添加标签和标题

plt.xlabel(产品类别,fontsize=12)

plt.ylabel(销售额(元),fontsize=12)

plt.title(各产品类别销售额分布,fontsize=14,pad=20)

plt.xticks(rotation=45)#旋转x轴标签防重叠

plt.show()

四、实战场景题

问题:用户行为数据中,“用户ID”“访问时间”“操作类型”(点击/下单/退款),如何计算“用户首次访问后7天内的复购率”(复购定义:首次访问后7天内至少有2次下单)?

答案:步骤如下:

#1.筛选下单数据,按用户分组找首次下单时间

order_df=df[

文档评论(0)

151****9429 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档