栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

一道经典的Python数据分析笔试题

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

一道经典的Python数据分析笔试题

最近无意看到一份关于数据分析的Python笔试题,做起来还是很有意思的,特意自己动手做了一下,和大家分享一下,希望大家也可以跟着练习。

题目如下:

首先,模拟数据:

importpandas aspd

importnumpy asnp

df = pd.Dataframe({ 'order_no':[ 'order_18213', 'order_16061', 'order_10176', 'order_11923', 'order_18791',

'order_12534', 'order_14502', 'order_14488', 'order_15488', 'order_18118'],

'province':[ '山东', '四川', '福建', '广东', '广东', '广东', '广东', '山东', '湖南', '福建'],

'gender':[ '女', '女', '女', '女', '男', '女', '男', '男', '女', '女'],

'age':[ 29.0, 27.0, 25.0, 25.0,np.nan, 27.0, 25.0, 27.0,np.nan, 27.0],

'education':[ '本科', '研究生', '本科', '研究生', '研究生', '本科', '大专', '大专', '本科', '大专'],

'overdue_days':[ 0, 17, 0, 0, 12, 20, 22, 32, 0, 2],

'info_label':[ 0, 1, 0, 0, 1, 1, 1, 1, 0, 1]

})

df

题目1:将gender列中的 男 ,女分别替换为数值1、0

方法1:

df[ 'gender']=df[ 'gender'].map({ '男': 1, '女': 0})

方法2:

df[ 'gender']=df[ 'gender'].replace([ '男', '女'],[ 1, 0])

方法3:

df.loc[df[ 'gender']== '男', 'gender']= 1

df.loc[df[ 'gender']== '女', 'gender']= 0df

题目2:将age列的缺失值用age列的均值代替

# 使用fillna填补缺失值即可

df_mean = df[ 'age'].mean

df[ 'age'].fillna(df_mean,inplace=True)

df

题目3:计算各省的平均逾期率

# 逾期率=逾期客户/全部客户

# 计算各省的逾期用户

df_overdue = df.groupby( 'province')[ 'info_label'].sum.reset_index

df_overdue.columns=[ 'province', 'overdue_cnt']

# 计算各省的用户数

df_all = df.groupby( 'province')[ 'info_label'].count.reset_index

df_all.columns=[ 'province', 'all_cnt']

# 合并各省逾期用户及各省用户数形成新的报表df1

df1 = pd.merge(df_overdue, df_all, on = [ 'province'], how = 'left')

# 得到各省的逾期率

df1[ 'overdue_pec'] = df1[ 'overdue_cnt']/df1[ 'all_cnt']

df1

题目4:计算广东省男性用户的逾期率

# 计算广东省的逾期男性用户

overdue_pec_gd = df[(df[ 'province']== '广东') & (df[ 'gender'] == 1)][ 'info_label'].sum/df[(df[ 'province']== '广东') & (df[ 'gender'] == 1)][ 'info_label'].count

print(overdue_pec_gd)

题目5:在df里面新增1列overdue_grade,其中overdue_days<15时,overdue_grade取值为A,overdue_days>=15时 overdue_grade取值为B

df[ 'overdue_grade'] = df[ 'overdue_days'].apply( lambdax: 'A'ifx< 15else'B')

df

题目6:将类别型变量education 转化为哑变量(Dummy Variables),并与原df在axis=1 方向上合并,然后删除初始的education列

# 使用get_dummies进行one-hot变量,然后进行数据合并concat,删除使用drop

df=pd.concat((df,pd.get_dummies(df[ 'education'])),axis= 1)

df.drop([ 'education'],axis= 1)

如果对Python有兴趣,想了解更多的Python以及AIoT知识,解决测试问题,以及入门指导,帮你解决学习Python中遇到的困惑,我们这里有技术高手。如果你正在找工作或者刚刚学校出来,又或者已经工作但是经常觉得难点很多,觉得自己Python方面学的不够精想要继续学习的,想转行怕学不会的, 都可以加入我们,可领取最新Python大厂面试资料和Python爬虫、人工智能、学习资料!VX【pydby01】暗号CSDN

 

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/675362.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号