# 设逾期表为df,格式为pandas.DataFrame,详细数据如下所示,其中order_no为非
# 重复订单号,overdue_days为逾期天数,info_tabel为逾期标签,其中1表示逾期,
# 0表示未逾期
# 设逾期表为df,格式为pandas.DataFrame,详细数据如下所示,其中order_no为非
# 重复订单号,overdue_days为逾期天数,info_tabel为逾期标签,其中1表示逾期,
# 0表示未逾期
import pandas as pd
import numpy as np
from IPython.display import display
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]
})
display(df)

# 题目1:将gender列中的 男 ,女分别替换为数值1、0
# 题目1:将gender列中的 男 ,女分别替换为数值1、0
# 【方法1】
df['gender'] = df['gender'].map({'男':1,'女':0})
display(df)
# 【方法2】
# df['gender'] = df['gender'].replace(['男','女'],[1,0])
# display(df)
# 【方法3】
# df.loc[df['gender']=='男','gender'] = 1
# df.loc[df['gender']=='女','gender'] = 0
# display(df)

# 注意df.loc用法:
# df.loc[行标签,列标签]
# df.loc['a':'b']#选取ab两行数据
# df.loc[:,'one']#选取one列的数据
# 题目2:将age列的缺失值用age列的均值代替
# 题目2:将age列的缺失值用age列的均值代替
# 使用fillna填补缺失值即可
df_mean = df['age'].mean()
df['age'].fillna(df_mean,inplace=True)
print(df)

# 题目3:计算各省的平均逾期率
# 逾期率=逾期客户/全部客户
# 题目3:计算各省的平均逾期率
# 逾期率=逾期客户/全部客户# 计算各省的逾期用户
df_overdue = df.groupby('province')['info_label'].sum().reset_index()
df_overdue.columns=['province', 'overdue_cnt']
# display(df_overdue)# 计算各省的用户数
df_all = df.groupby('province')['info_label'].count().reset_index()
df_all.columns=['province', 'all_cnt']
# display(df_all)# 合并各省逾期用户及各省用户数形成新的报表df1
df1 = pd.merge(df_overdue,df_all,on=['province'],how='left')
# 得到各省的逾期率
df1['overdue_pec'] = df1['overdue_cnt']/df1['all_cnt']
display(df1)

# 题目4:计算广东省男性用户的逾期率
# 题目4:计算广东省男性用户的逾期率
# 计算广东省的逾期男性用户的人数
overdue_maleCount = df[(df['province']=='广东') & (df['gender']== 1)]['info_label'].sum()
overdue_allMaleCount = df[(df['province']=='广东') & (df['gender']== 1)]['info_label'].count()
overdue_pec_gd = overdue_maleCount / overdue_allMaleCount
display(overdue_pec_gd)
# 题目5:在df里面新增1列overdue_grade,其中
#       overdue_days<15时,overdue_grade取值为A,
#       overdue_days>=15时 overdue_grade取值为B
# 题目5:在df里面新增1列overdue_grade,其中
#       overdue_days<15时,overdue_grade取值为A,
#       overdue_days>=15时 overdue_grade取值为B
df['over_grade'] = df['overdue_days'].apply(lambda x: 'A' if x < 15 else'B')
display(df)

# 题目6:将类别型变量education 转化为哑变量(Dummy Variables),
# 并与原df在axis=1 方向上合并,然后删除初始的education列
# 题目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)
print(df)
df = df.drop(['education'],axis=1)
print(df)

 >>注意:在Jupyter环境下运行的代码,dataframe表格怎么对齐?

from IPython.display import display
display(df)

 >>使用pandas数据处理数据,最好用的函数搭配:apply+lambda

#函数应用和映射
import numpy as np
import pandas as pd
df=pd.DataFrame(np.random.randn(4,5)*10,columns=list('ABCDF'),index=['1','2','3','4'])
display(df)

知识点补充:

d1 = df.apply(lambda x: x.max()-x.min())
display(d1)

d2 = df.apply(lambda x: x.max()-x.min(),axis=1)
display(d2)

# 浮点值保留两位小数
d3=df['B'].map(lambda x: '%.2f'%x)
display(d3)

d4=df.applymap(lambda x: '%.2f'%x)['B']
display(d4)

lambda 参数:操作(参数)

#单个参数的:
h = lambda x : x ** 2
print(h(3)) # 9

#多个参数的:
h = lambda x, y, z : (x + y) ** z
print(h(1,2,2)) # 9

map(lambda x : x + 1, [1, 2, 3]) # [2,3,4]

map(lambda x: x*x, [y for y in range(10)]) #将一个 list 里的每个元素都平方

(lambda x,y: x if x> y else y)(101,102) # 102

>> 保存dataFrame数据到excel文件

import pandas as pd
import numpy as np
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]
})
print(df)
tmp_file_path='test.xlsx'
writer = pd.ExcelWriter(tmp_file_path)
df.to_excel(writer, sheet_name=tmp_file_path.split('.')[0],index= False)
worksheet = writer.sheets[tmp_file_path.split('.')[0]]
worksheet.set_column(0,1, 35)  #指定第1-2列为35像素宽度
worksheet.set_column(2,13, 10) #指定第3-13列为10像素宽度
writer.save()

>>pandas读取excel文件的数据

import pandas as pddf = pd.read_excel("test.xlsx")print("\n(1)全部数据:")
print(df.iloc[:,:].values)print("\n(2)第2行第3列的值:")
print(df.iloc[1,2])print("\n(3)第3行数据:")
print(df.iloc[2].values)print("\n(4)第2列数据:")
print(df.iloc[:,1].values)print("\n(5)第6行的education:")
print(df.loc[5,"education"])print("\n(6)第2至3行、第3至4列数据:")
print(df.iloc[1:3,2:4].values)

python数据分析-面试题相关推荐

  1. python数据分析基础试题及答案_Python数据分析与数据可视化题库免费期末考试2020答案...

    Python数据分析与数据可视化题库免费期末考试2020答案 更多相关问题 风险管理是一个不断发展变化的演变过程.在风险管理演变过程中,大多数现代风险管理形式是从()中 以下哪项是虚证闭经的主要病机A ...

  2. python数据分析面试题

    转载 python数据分析部分 1. 如何利用SciKit包训练一个简单的线性回归模型 利用linear_model.LinearRegression()函数 # Create linear regr ...

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

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

  4. python数据分析面试题_面试题——Python数据分析与应用(补充:简答)

    第一章 数据分析概述 36.请简述为什么选择使用Python做数据分析.(至少3个) 参考答案: 1语法简单精炼,适合初学者入门 2拥有一个巨大且活跃的科学计算社区 3拥有强大的通用编程能力 4人工智 ...

  5. python数据分析基础试题_Python数据分析基础知识

    数据库:绝大会要求会SQL,部分要求SQL/NoSQL会一种,高级的分析师或者大型企业要求能够处理大数据,需要Hive(较少的需要Hadoop/Spark): 统计学:若无相关专业背景,需要具备相应的 ...

  6. python数据分析笔试题_数据分析岗Python笔试题

    我整理了数据分析师岗的Python笔试题,主要涉及到用Python完成数据处理和分析的内容.自己做了一遍,供大家学习思考. 一.数据处理题 1.将Excel工作簿 "Test.xlsx&qu ...

  7. BI数据分析笔试题及答案(华为音乐外包)

    BI数据分析笔试题 一.华为音乐外包 1.数据仓库测试 2.可视化时间空间数据 3.信息与熵的计算 4.基本数据的元数据 5.数据粒度 6.数据预处理 7.非对称二元属性 8.特征工程 9.KDD 1 ...

  8. 腾讯python面试题_面试题 | 腾讯数据分析面试题分享

    原标题:面试题 | 腾讯数据分析面试题分享 annatx | 作者 高级农民工 | 来源 今天给各位分享两道数据分析试题, 这是腾讯数据分析面试官在面试时考察候选人喜欢出的题,属于硬性技能考察题目,特 ...

  9. python期末考试试题

    python期末考试试题汇总 学习 2020-4-105589阅读 · 98喜欢 · 11评论 想个昵称憋一天 粉丝:370文章:31 关注 6.for i in range(2,n): if n%i ...

最新文章

  1. python 安装库 requirements.txt
  2. iOS11和iPhone X的适配
  3. 用OpenCV建立一幅只有几个像素且值可以自定义的图像,并输出保存到硬盘的方法
  4. iOS开发- UICollectionView详解+实例
  5. LeetCode(15):三数之和
  6. moment获取几小时前_momentjs – 使用时刻在两个日期时间之间获得hh:mm的时差
  7. leetCode-第四题求两个数组的中位数
  8. 从mysql到大数据(一)--开宗明义
  9. 最大化最小值 | | 最小化最大值
  10. 针对计算机网络或者计算,在采用计算机网络的基础上进行计算
  11. JAVA三大框架SSH和MVC
  12. Animate.css动画库下载、安装、使用与解析
  13. 数学算法对计算机编程的优化
  14. Python之Python3本地安装教程
  15. intel h61 linux驱动下载,IntelIntel DH61AG BIOS 0022.BI主板驱动官方正式版下载,适用于dos-驱动精灵...
  16. 风暴孵化分享:新手小白想做手游代理可不可以?
  17. GSM/CDMA区别
  18. WSL2中 使用jupyter lab
  19. 如何迅速打造敏捷团队
  20. MATLAB柱状图去掉黑色边框

热门文章

  1. 景联文科技:关于语音标注,你知道多少?
  2. 最全 MySQL主从同步与主主同步
  3. Web Caching(Web缓存)
  4. 操作无法完成错误0x0000709再次检查打印机名称解决方法!
  5. 什么是rmi?为什么要使用rmi框架?
  6. python学习 - 标准库概览
  7. 苹果退款_苹果充值退款什么意思
  8. vscode python环境变量_VScode配置Python开发环境
  9. HTML(HBuilder)作业题4- 隔行换色(jquery)
  10. python语句list range 13执行结果为_python练习题-答案