基于python的一款数据处理工具pandas

news/2024/6/17 14:30:43 标签: python, 大数据, 数据挖掘, 数据处理, 爬虫

python处理数据的时候,都免不了用pandas做数据处理。在数据处理时,都免不了用数据筛选来提取自己想要的数据,咱们今天就讲讲pandas的条件筛选。

安装库

建议做数据分析的酱友们安装anaconda3,这个包几乎包括了数据分析用的所需要的各种库,安装了anaconda3之后就不需要单独再安装pandas库了,如果没有装的,就需要单独装一下了:

pip install pandas

安装完成后就是引用:

python">python">import pandas as pd

数据准备

下面是原始数据:

df=pd.DataFrame({
                '团体保单号': ['BJG11202003263', 'BJG11202003263', 'BJG11202003263', 'BJG11202003263', 'BJG11202210443', 'BJG11202210443', 'BJG11202210443', 'BJG11202210443', 'BJG11202210443', 'BJG11202210443', 'BJG11202210443', 'BJG11202003263', 'BJG11202003263', 'BJG11202003263', 'BJG11202003263', 'BJG11202210443', 'BJG11202210443', 'BJG11202003263', 'BJG11202003263', 'BJG11202003263', 'BJG11202003263', 'BJG11202003263', 'BJG11202003263'],

                '姓名': ['刘玲', '刘玲', '刘玲', '刘玲', '刘玲', '刘玲', '刘玲', '刘玲', '刘玲', '刘玲', '刘玲', '卜琳琳', '齐静', '齐静', '齐静', '刘洋', '刘洋', '刘洋', '刘洋', '杨海舰', '杨海舰', '范晶晶', '范晶晶'],

                '出险人证件号码': ['04211972071536', '04211972071536', '04211972071536', '04211972071536', '04211972071536', '04211972071536', '04211972071536', '04211972071536', '04211972071536', '04211972071536', '04211972071536', '01061975060836', '01021973072519', '01021973072519', '01021973072519', '02831982063006', '02831982063006', '02831982063006', '02831982063006', '02221987062064', '02221987062064', '01041980070720', '01041980070720'],

                '交易流水号': ['220102000542', '220102000565', '011100030X220102000671', '011100030X220102000671', '011100030X220102000671', '011100030X220102000671', '011100030X220102000671', '011100030X220104016042', '021100020A220111013035', '081100030A220105005676', '081100030A220105006493', '011100020A220117005278', '011100020A220117005278', '011100020A220117005278', '011100020A220117005278', '011100050Y220104008654', '011100050Y220104008655', '011100050Y220106008912', '011100050Y220106008914', '011100050Y220107000858', '011100050Y220107001477', '011100050Y220107012903', '011100050Y220107013093'],

                '赔付金额': [0, 260.18, 57.67, 57.67, 57.67, 57.67, 57.67, 166.63, 0, 0, 231.09, 396.32, 396.32, 396.32, 396.32, 0, 35, 0, 35, 0, 272.9, 0, 188],

                '事故日期': ['2022-01-02', '2022-01-02', '2021-01-02', '2022-01-02', '2021-01-02', '2021-01-02', '2022-01-02', '2020-01-04', '2022-01-11', '2022-01-05', '2020-01-05', '2022-01-17', '2022-01-17', '2022-01-17', '2022-01-17', '2022-01-04', '2022-01-04', '2022-01-06', '2022-01-06', '2022-01-07', '2022-01-07', '2022-01-07', '2022-01-07']

                '出院日期': ['2022-01-02', '', '2022-01-02', '', '2021-01-02', '', '', '2021-01-04', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '2022-01-07']
                })

输出如下:

    团体保单号        姓名  出险人证件号码   交易流水号              赔付金额 事故日期    出院日期
0   BJG11202003263   刘玲  04211972071536            220102000542    0.00 2022-01-02 2022-01-02
1   BJG11202003263   刘玲  04211972071536            220102000565  260.18 2022-01-02        NaT
2   BJG11202003263   刘玲  04211972071536  011100030X220102000671   57.67 2021-01-02 2022-01-02
3   BJG11202003263   刘玲  04211972071536  011100030X220102000671   57.67 2022-01-02        NaT
4   BJG11202210443   刘玲  04211972071536  011100030X220102000671   57.67 2021-01-02 2021-01-02
5   BJG11202210443   刘玲  04211972071536  011100030X220102000671   57.67 2021-01-02        NaT
6   BJG11202210443   刘玲  04211972071536  011100030X220102000671   57.67 2022-01-02        NaT
7   BJG11202210443   刘玲  04211972071536  011100030X220104016042  166.63 2020-01-04 2021-01-04
8   BJG11202210443   刘玲  04211972071536  021100020A220111013035    0.00 2022-01-11        NaT
9   BJG11202210443   刘玲  04211972071536  081100030A220105005676    0.00 2022-01-05        NaT
10  BJG11202210443   刘玲  04211972071536  081100030A220105006493  231.09 2020-01-05        NaT
11  BJG11202003263  卜琳琳  01061975060836  011100020A220117005278  396.32 2022-01-17        NaT
12  BJG11202003263   齐静  01021973072519  011100020A220117005278  396.32 2022-01-17        NaT
13  BJG11202003263   齐静  01021973072519  011100020A220117005278  396.32 2022-01-17        NaT
14  BJG11202003263   齐静  01021973072519  011100020A220117005278  396.32 2022-01-17        NaT
15  BJG11202210443   刘洋  02831982063006  011100050Y220104008654    0.00 2022-01-04        NaT
16  BJG11202210443   刘洋  02831982063006  011100050Y220104008655   35.00 2022-01-04        NaT
17  BJG11202003263   刘洋  02831982063006  011100050Y220106008912    0.00 2022-01-06        NaT
18  BJG11202003263   刘洋  02831982063006  011100050Y220106008914   35.00 2022-01-06        NaT
19  BJG11202003263  杨海舰  02221987062064  011100050Y220107000858    0.00 2022-01-07        NaT
20  BJG11202003263  杨海舰  02221987062064  011100050Y220107001477  272.90 2022-01-07        NaT
21  BJG11202003263  范晶晶  01041980070720  011100050Y220107012903    0.00 2022-01-07        NaT
22  BJG11202003263  范晶晶  01041980070720  011100050Y220107013093  188.00 2022-01-07 2022-01-07

单条件筛选

比如我只是筛选2021年的数据,可以这样:

python">python"># “事故日期”列转换成时间类型
df['事故日期'] = pd.to_datetime(df['事故日期'])
df['出院日期'] = pd.to_datetime(df['出院日期'])

# 提取2021年的数据
df = df[df['事故日期'].dt.year == 2021]

日期列不转换的话会报错,必须要转换成时间类型才行,可以用df.dtpes来查看各字段的数据类型,转换前后对比:

.dt.year是用来提取日期的年份的,不提取年份不会报错,只是提取不出数据,因为事故日期不止有年份,还有日期

输出:

   团体保单号       姓名  出险人证件号码   交易流水号             赔付金额 事故日期    出院日期
2  BJG11202003263  刘玲  04211972071536  011100030X220102000671  57.67 2021-01-02 2022-01-02
4  BJG11202210443  刘玲  04211972071536  011100030X220102000671  57.67 2021-01-02 2021-01-02
5  BJG11202210443  刘玲  04211972071536  011100030X220102000671  57.67 2021-01-02        NaT

多条件筛选

我们首先用出险人证件号码和事故日期来筛选数据。

比如证件号为04211972071536的和年份为2022年的筛选,因为上面已经把日期转换成时间类型了,后面就不重复转换了

python">python"># 提取身份证为04211972071536和年份为2022年的数据
df = df[(df['出险人证件号码']=='04211972071536')&(df['事故日期'].dt.year == 2022)]

输出:

   团体保单号       姓名  出险人证件号码    交易流水号             赔付金额 事故日期    出院日期
0  BJG11202003263  刘玲  04211972071536            220102000542    0.00 2022-01-02 2022-01-02
1  BJG11202003263  刘玲  04211972071536            220102000565  260.18 2022-01-02        NaT
3  BJG11202003263  刘玲  04211972071536  011100030X220102000671   57.67 2022-01-02        NaT
6  BJG11202210443  刘玲  04211972071536  011100030X220102000671   57.67 2022-01-02        NaT
8  BJG11202210443  刘玲  04211972071536  021100020A220111013035    0.00 2022-01-11        NaT
9  BJG11202210443  刘玲  04211972071536  081100030A220105005676    0.00 2022-01-05        NaT

注意看,坑来啦:

在单条件筛选的时候,筛选条件直接列出来就行了df[df['事故日期'].dt.year == 2021]

而在多条件筛选的时候,就需要加入小括号把列出的条件括起来才行df[(df['出险人证件号码']=='04211972071536')&(df['事故日期'].dt.year == 2022)]

接下来,我们提取身份证为04211972071536,事故日期为2022年的数据,如果有出院日期按出险日期为准。

python">python"># 提取身份证为04211972071536,事故日期为2022年的数据,如果有出院日期按出险日期为准
df = df[((df['出险人证件号码']=='04211972071536')&(df['出院日期'].dt.year == 2022))|((df['出险人证件号码']=='04211972071536')&(df['事故日期'].dt.year == 2022))]

输出:

   团体保单号       姓名  出险人证件号码    交易流水号             赔付金额 事故日期    出院日期
0  BJG11202003263  刘玲  04211972071536            220102000542    0.00 2022-01-02 2022-01-02
1  BJG11202003263  刘玲  04211972071536            220102000565  260.18 2022-01-02        NaT
2  BJG11202003263  刘玲  04211972071536  011100030X220102000671   57.67 2021-01-02 2022-01-02
3  BJG11202003263  刘玲  04211972071536  011100030X220102000671   57.67 2022-01-02        NaT
6  BJG11202210443  刘玲  04211972071536  011100030X220102000671   57.67 2022-01-02        NaT
8  BJG11202210443  刘玲  04211972071536  021100020A220111013035    0.00 2022-01-11        NaT
9  BJG11202210443  刘玲  04211972071536  081100030A220105005676    0.00 2022-01-05        NaT

注意,每个单独的条件要括起来,组合的条件还要再括起来才行。

怎么样,只要理解了筛选条件的设置规则,我们就可以用多个条件来筛选自己想要的数据啦!


http://www.niftyadmin.cn/n/79105.html

相关文章

Andriod入门级开发

这学期有个课设,我们组我负责一个手机APP的开发,虽然刚开始说要实现什么智能导航,类似高德地图那种,但最后阉割的只剩一个Socket通信了,因为之前没有接触过(可能之后也不会再接触),记…

量子计算(7)pyqpanda编程2循环与条件判断

目录 一、QWhile 二、QIf 各位读者老爷们,大家好呀,前些时忙着学校的期末考试,小编好久没更新量子计算的文章啦,这段时间也有读者私信小编,问了一些问题。我知道大家都很急,但大家先别急。这不&#xff0…

华为OD机试 - 运动会 | 机试题算法思路 【2023】

最近更新的博客 华为OD机试 - 自动曝光(Python) | 机试题算法思路 【2023】 华为OD机试 - 双十一(Python) | 机试题算法思路 【2023】 华为OD机试 - 删除最少字符(Python) | 机试题算法思路 【2023-02】 华为OD机试 - Excel 单元格数值统计(Python) | 机试题算法思路 …

JavaScript 代码规范

文章目录JavaScript 代码规范JavaScript 代码规范变量名空格与运算符代码缩进语句规则对象规则每行代码字符小于 80命名规则HTML 载入外部 JavaScript 文件使用 JavaScript 访问 HTML 元素文件扩展名使用小写文件名JavaScript 代码规范 所有的 JavaScript 项目适用同一种规范。…

目标检测各常见评价指标详解

注:本文仅供学习,未经同意请勿转载 说明:该博客来源于xiaobai_Ry:2020年3月笔记 对应的PDF下载链接在:待上传 目录 常见的评价指标 准确率 (Accuracy) 混淆矩阵 (Confusion Matrix&#xff…

python基于django微信小程序的适老化老人健康预警小程序

随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息。为了迎合时代需求,优化管理效率,各种各样的管理系统应运而生,各行各业相继进入信息管理时代, 适老化老人健康预警微信小程序就是信息时代变革中的产物之一。 任何系统都要遵…

「数据仓库」怎么选择现代数据仓库?

构建自己的数据仓库时要考虑的基本因素我们用过很多数据仓库。当我们的客户问我们,对于他们成长中的公司来说,最好的数据仓库是什么时,我们会根据他们的具体需求来考虑答案。通常,他们需要几乎实时的数据,价格低廉&…

PLT/PDF转CAD:scViewerX 8.1 Crack

scViewerX是一个功能强大的 ActiveX 控件,允许您查看、打印和转换 PLT、Adobe PDF、Autodesk DWF、CGM、Calcomp、HPGL/2、Gerber、TIF、CALS 和其他几种格式。 ScViewerX 可以将您的文件转换为多种不同的输出文件格式,包括 PDF、PDF/A、TIFF、DXF、DWF、…