- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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)