Python进行数据提取的方法总结


Posted in Python onAugust 22, 2016

准备工作

首先是准备工作,导入需要使用的库,读取并创建数据表取名为loandata。

import numpy as np
import pandas as pd
loandata=pd.DataFrame(pd.read_excel('loan_data.xlsx'))

Python进行数据提取的方法总结

设置索引字段

在开始提取数据前,先将member_id列设置为索引字段。然后开始提取数据。

Loandata = loandata.set_index('member_id')

Python进行数据提取的方法总结

按行提取信息

第一步是按行提取数据,例如提取某个用户的信息。下面使用ix函数对member_id为1303503的用户信息进行了提取。

loandata.ix[1303503]

Python进行数据提取的方法总结

按列提取信息

第二步是按列提取数据,例如提取用户工作年限列的所有信息,下面是具体的代码和提取结果,显示了所有用户的工作年龄信息。

loandata.ix[:,'emp_length']

Python进行数据提取的方法总结

按行与列提取信息

第三步是按行和列提取信息,把前面两部的查询条件放在一起,查询特定用户的特定信息,下面是查询member_id为1303503的用户的emp_length信息。

loandata.ix[1303503,'emp_length']

Python进行数据提取的方法总结

在前面的基础上继续增加条件,增加一行同时查询两个特定用户的贷款金额信息。具体代码和查询结果如下。结果中分别列出了两个用户的代码金额。

loandata.ix[[1303503,1298717],'loan_amnt']

Python进行数据提取的方法总结

在前面的代码后增加sum函数,对结果进行求和,同样是查询两个特定用户的贷款进行,下面的结果中直接给出了贷款金额的汇总值。

loandata.ix[[1303503,1298717],'loan_amnt'].sum()

Python进行数据提取的方法总结

除了增加行的查询条件以外,还可以增加列的查询条件,下面的代码中查询了一个特定用户的贷款金额和年收入情况,结果中分别显示了这两个字段的结果。

loandata.ix[1303503,['loan_amnt','annual_inc']]

Python进行数据提取的方法总结

多个列的查询也可以进行求和计算,在前面的代码后增加sum函数,对这个用户的贷款金额和年收入两个字段求和,并显示出结果。

loandata.ix[1303503,['loan_amnt','annual_inc']].sum()

Python进行数据提取的方法总结

提取特定日期的信息

数据提取中还有一种很常见的需求就是按日期维度对数据进行汇总和提取,如按月,季度的汇总数据提取和按特定时间段的数据提取等等。

设置索引字段

首先将索引字段改为数据表中的日期字段,这里将issue_d设置为数据表的索引字段。按日期进行查询和数据提取。

loandata = loandata.set_index('issue_d')

Python进行数据提取的方法总结

按日期提取信息

下面的代码查询了所有2016年的数据。

loandata['2016']

Python进行数据提取的方法总结

在前面代码的基础上增加月份,查询所有2016年3月的数据。

loandata['2016-03']

Python进行数据提取的方法总结

继续在前面代码的基础上增加日期,查询所有2016年6月16日的数据。

loandata['2016-06-16']

Python进行数据提取的方法总结

除了按单独日期查询以外,还可以按日期段进行数据查询,下面的代码中查询了所有2016年1月至5月的数据。下面显示了具体的查询结果,可以发现数据的日期都是在1-5月的,但是按日期维度显示的,这就需要我们对数据按月进行汇总。

loandata['2016-01':'2016-05']

Python进行数据提取的方法总结

按日期汇总信息

Pandas中的resample函数可以完成日期的聚合工作,包括按小时维度,日期维度,月维度,季度及年的维度等等。下面我们分别说明。首先是按周的维度对前面数据表的数据进行求和。下面的代码中W表示聚合方式是按周,how表示数据的计算方式,默认是计算平均值,这里设置为sum,进行求和计算。

loandata.resample('W',how=sum).head(10)

Python进行数据提取的方法总结

将W改为M,数据变成了按月聚合的方式。计算方式依然是求和。这里需要说明的是resample函数会显示出所有连续的时间段,例如前面按周的聚合操作会显示连续的周日期,这里的按月操作则会在结果中显示连续的月,如果某个时间段没有数据,会以NaN值显示。

loandata.resample('M',how=sum)

Python进行数据提取的方法总结

将前面代码中的M改为Q,则为按季度对数据进行聚合,计算方式依然为求和。从下面的数据表中看,日期显示的都是每个季度的最后一天,如果希望以每个季度的第一天显示,可以改为QS。

loandata.resample('Q',how=sum)

Python进行数据提取的方法总结

将前面代码中的Q改为A,就是按年对数据进行聚合,计算方式依然为求和。

loandata.resample('A',how=sum)

Python进行数据提取的方法总结

前面的方法都是对整个数据表进行聚合和求和操作,如果只需要对某一个字段的值进行聚合和求和,可以在数据表后增加列的名称。下面是将贷款金额字段按月聚合后求和,并用0填充空值。

loandata['loan_amnt'].resample('M',how=sum).fillna(0)

Python进行数据提取的方法总结

在前面代码的基础上再增加一个数值字段,并且在后面的计算方式中增加len用来计数。在下面的结果中分别对贷款金额和利息收入按月聚合,并进行求和和计数计算

loandata[['loan_amnt','total_rec_int']].resample('M',how=[len,sum])

Python进行数据提取的方法总结

有时我们需要只对某一时间段的数据进行聚合和计算,下面的代码中对2016年1月至5月的数据按月进行了聚合,并计算求和。用0填充空值。

loandata['2016-01':'2016-05'].resample('M',how=sum).fillna(0)

Python进行数据提取的方法总结

或者只对某些符合条件的数据进行聚合和计算。下面的代码中对于贷款金额大于5000的按月进行聚合,并计算求和。空值以0进行填充。

loandata[loandata['loan_amnt']>5000].resample('M',how=sum).fillna(0)

Python进行数据提取的方法总结

除了按周,月,季度和年以外,resample函数还可以按以下方式对日期进行聚合。

下面给出了具体的对应表和说明。

 Python进行数据提取的方法总结

总结

以上就是利用python按特定的维度或条件对数据进行提取的全部内容,希望本文的内容对大家学习使用Python能有所帮助。

Python 相关文章推荐
Python中除法使用的注意事项
Aug 21 Python
python判断字符串是否包含子字符串的方法
Mar 24 Python
由Python运算π的值深入Python中科学计算的实现
Apr 17 Python
实例讲解Python中函数的调用与定义
Mar 14 Python
python各种语言间时间的转化实现代码
Mar 23 Python
Python用sndhdr模块识别音频格式详解
Jan 11 Python
Windows下PyCharm安装图文教程
Aug 27 Python
Pycharm保存不能自动同步到远程服务器的解决方法
Jun 27 Python
python原类、类的创建过程与方法详解
Jul 19 Python
Python中*args和**kwargs的区别详解
Sep 17 Python
python 实现目录复制的三种小结
Dec 04 Python
Python作用域与名字空间原理详解
Mar 21 Python
详解Python实现按任意键继续/退出的功能
Aug 19 #Python
利用Python开发微信支付的注意事项
Aug 19 #Python
Python用模块pytz来转换时区
Aug 19 #Python
教你用python3根据关键词爬取百度百科的内容
Aug 18 #Python
利用Python爬取可用的代理IP
Aug 18 #Python
总结用Pdb库调试Python的方式及常用的命令
Aug 18 #Python
Python实现命令行通讯录实例教程
Aug 18 #Python
You might like
给海燕B411配件机起死回生配上件
2021/03/02 无线电
咖啡豆分级制度 咖啡豆等级分类 咖啡豆是按口感分类的吗?
2021/03/05 新手入门
基于php的CMS中展示文章类实例分析
2015/06/18 PHP
关于 Laravel Redis 多个进程同时取队列问题详解
2017/12/25 PHP
判断复选框是否被选中的两种方法
2014/06/04 Javascript
一个JavaScript去除字符串末尾的空白实例代码
2014/09/22 Javascript
跟我学习javascript的执行上下文
2015/11/18 Javascript
jquery实现图片预加载
2015/12/25 Javascript
JavaScript sort数组排序方法和自我实现排序方法小结
2016/06/06 Javascript
jquery实现跳到底部,回到顶部效果的简单实例(类似锚)
2016/07/10 Javascript
Jquery AJAX POST与GET之间的区别详细介绍
2016/10/17 Javascript
vue.js实现用户评论、登录、注册、及修改信息功能
2020/05/30 Javascript
解决html input验证只能输入数字,不能输入其他的问题
2017/07/21 Javascript
vue webpack重写cookie路径的方法
2019/07/10 Javascript
layui点击左侧导航栏,实现不刷新整个页面,只刷新局部的方法
2019/09/25 Javascript
微信sdk实现禁止微信分享(使用原生php实现)
2019/11/15 Javascript
Python重新引入被覆盖的自带function
2014/07/16 Python
Python的爬虫程序编写框架Scrapy入门学习教程
2016/07/02 Python
Python异常对代码运行性能的影响实例解析
2018/02/08 Python
Python利用正则表达式实现计算器算法思路解析
2018/04/25 Python
tensorflow实现逻辑回归模型
2018/09/08 Python
Python连接Mssql基础教程之Python库pymssql
2018/09/16 Python
使用Python实现从各个子文件夹中复制指定文件的方法
2018/10/25 Python
对json字符串与python字符串的不同之处详解
2018/12/19 Python
浅谈PyQt5 的帮助文档查找方法,可以查看每个类的方法
2019/06/25 Python
整理HTML5中支持的URL编码与字符编码
2016/02/23 HTML / CSS
HTML5响应式(自适应)网页设计的实现
2017/11/17 HTML / CSS
乐高积木玩具美国官网:LEGO Shop US
2016/09/16 全球购物
美国在线鞋类零售商:LifeStride
2019/06/09 全球购物
"火柴棍式"程序员面试题
2014/03/16 面试题
工程部主管岗位职责
2013/11/17 职场文书
女大学生自我鉴定
2013/12/09 职场文书
小学生思想品德评语
2014/12/31 职场文书
iPhone13 Pro外观确定,升级4800万镜头,4月20日发新品
2021/04/15 数码科技
python调用ffmpeg命令行工具便捷操作视频示例实现过程
2021/11/01 Python
python机器学习实现oneR算法(以鸢尾data为例)
2022/03/03 Python