数据分析之Pandas--数据检索

news2025/5/28 1:15:24

数据分析之Pandas(03)--数据检索

pandas的数据检索功能是其最基础也是最重要的功能之一。

pandas中最常用的几种数据过滤方式如下:

  1. 1. 行列过滤:选取指定的行或者列

  2. 2. 条件过滤:对列的数据设置过滤条件

  3. 3. 函数过滤:通过函数设置更加复杂的过滤条件

本篇所有示例所使用的测试数据如下:

import pandas as pd
import numpy as np

fp = "http://databook.top:8888/pandas/cn-people.csv"
df = pd.read_csv(fp)
df

image.png

1. 行列过滤

pandas中最常用的按行或者按列选择数据的函数是 loc 和 iloc

1.1 loc 函数

loc函数通过标签索引选择行列数据,可以在一个语句中同时指定行和列的条件。 按范围选取行:

df.loc([1:5, :])

image.png

选取指定的行:

df.loc[[1, 5], :]

image.png

按范围选取列:

df.loc[:, "年份":"指标中文"]

image.png

选取指定的列:

df.loc[:, ["年份","指标中文"]]

image.png

行和列也可以同时设置:

df.loc[1:3, ["年份","指标中文"]]

image.png

1.2 iloc 函数

iloc函数通过整数位置索引选择行列数据。 这种方法与loc方法类似,但是它使用整数位置而不是标签。

按范围选择行:

df.iloc([1:5, :])

image.png

注意这里可以看出ilocloc的区别,同样的范围[1:5], iloc不包括index=5的数据,而loc包括index=5的数据。

选择指定的行:

df.iloc[[1, 5], :]

image.png

这种选择方式下,ilocloc函数返回的结果是一样的。

按范围选择列:

df.iloc[:, 0:3]

image.png

注意,这里是 ilocloc的另一个区别, iloc只能用数字序列来表示列的范围(第一列对应数字0), 回顾之前的loc函数,我们可以用列名来表示范围的df.loc[:, "年份":"指标中文"]

另外,iloc表示列的范围0:3表示是0,1,2三列,不包括3这一列。

选择指定的列:

df.iloc[:, [0, 2]]

image.png

loc一样,iloc也可以行和列同时设置:

df.iloc[1:5, [0, 2]]

image.png

2. 条件过滤

行列过滤的方式是基于索引和列名称来过滤的,除此之外,还可以根据列的值来过滤。 这也是分析时常用的过滤方式。

2.1 单条件

根据列的值来过滤,列的值是数值还是字符串都可以。

df[df["年份"] > 2020]

image.png

字符串的过滤方式:

df[df["指标中文"].str.contains("乡村")].head()

image.png

2.2 多条件

除了设置单独的条件之外,也支持通过逻辑符号&|来设置多个条件。

df[(df["年份"] > 2020) & (df["指标中文"].str.contains("乡村"))]

image.png

必须同时满足年份>2021指标中文包含乡村两个条件的数据,只有1条。

df[(df["年份"] > 2020) | (df["指标中文"].str.contains("乡村"))].head(6)

image.png

只要满足年份>2021指标中文包含乡村两个条件之一的数据。

3. 函数过滤

pandas中还有两种通过函数来过滤和转换数据的方式,这种方式可以将自定义的函数应用到数据之上。 这样就提供了相当灵活的数据操作方式。

3.1 apply

针对DataFrame某一列数据的apply。 比如下面的示例增加一列,其值是将value列的数据放大10倍:

df["value10倍"] = df["value"].apply(lambda x: x*10)
df

image.png

3.2 map

针对DataFrame某一列数据的map。 比如下面的示例增加一列,其值是设置指标中文的缩写。

df["指标缩写"] = df["指标中文"].map({"年末总人口": "总人口", "乡村人口": "乡村"})
df

image.png

4. 总结回顾

本篇主要介绍了pandas数据检索的常用方式,数据检索是做分析时最常用的步骤。 通过数据过滤方法,快速确定用于分析的数据范围,剥离无用的数据,提高分析的效率。

数据检索方式由易到难分别为:

  1. 1. 行列过滤,lociloc

  2. 2. 条件过滤,单条件和多条件过滤

  3. 3. 函数过滤,自定义函数灵活的调整已有列的数据

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/580968.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

提升PostGIS大范围、大数据量分区几何裁剪统计查询速度技巧

PostGIS是在GIS系统开发中常用的开源空间数据库,使用PostGIS进行大范围、大数据量的几何裁剪操作时,耗时较长。 当我遇到需要按区县或选中的乡镇,计算展示林规、土地报批等多个规划数据的面积等,此时需要使用规划数据叠加行政界线…

几句命令搞定一个es:docker安装elasticsearch+可视化kibana

docker安装elasticsearch可视化kibana 写在前面es安装:docker安装elasticsearches搜索:安装elasticsearch插件IK分词器es可视化:docker安装kibana最后 写在前面 从自己知道es开始到写这篇文章差不多也有5年左右的时间了吧,之前总…

FastReport.Net FastReport.Core 2023.2.15 Crack

快速报告.NET .NET 7 的报告和文档创建库 FastReport.Net & FastReport.Core适用于 .NET 7、.NET Core、Blazor、ASP.NET、MVC 和 Windows 窗体的全功能报告库。它可以在 Microsoft Visual Studio 2022 和 JetBrains Rider 中使用。 快速报告.NET 利用 .NET 7、.NET Core、…

C++程序设计基础【一】

C程序设计基础【一】 一、一个程序的开发步骤1.编辑程序2.编译程序3.链接程序4.执行程序5.测试 2.基础代码解读1.预处理指令(#include <iostream>)2.块注释(/* */)3.行注释(//)4.using namespace std5.int main()6.{}7.std::cin、std::cout、std::endl8.return 0 二、变量…

云上高校导航 开发指引 与 注意事项

&#x1f52c; 注意事项 大部分数据存储在utils.js中的&#xff0c;页面通过引入utils.js方式渲染数据 图标全部存储在项目images文件夹里,均下载自 iconfont网站&#xff08;自行替换&#xff09; 部分图片引用自 免费图床 - CDN加速图床&#xff08;自行替换&#xff09; …

七年程序员的三四月总结:三十岁、准备婚礼、三次分享

你好&#xff0c;我是 shixin&#xff0c;一名工作七年的安卓开发。 每两个月我会做一次总结&#xff0c;记下这段时间里有意义的事和值得反复看的内容&#xff0c;为的是留一些回忆、评估自己的行为、沉淀有价值的信息。 一转眼 2023 年过去了三分之一&#xff0c;这两个月经…

响应式编程实战:Spring WebFlux集成MongoDB和Swagger

1 缘起 新的项目&#xff0c;快速迭代&#xff0c; 技术选型&#xff1a;Spring WebFlux&#xff0c; 非Spring MVC&#xff0c; 之前没有接触过Spring WebFlux&#xff0c;项目中都是使用Spring MVC&#xff0c; 这次学到了新的知识Spring WebFlux&#xff0c;记录下。 2 Sp…

C++实现哈希表

文章目录 前言1.哈希表的相关介绍2.哈希表的实现1.开放定址法实现哈希表1.插入2.查找3.删除 2.链地址法(开链法)实现哈希表1.插入节点2.查找3.删除4.相关的一些补充 3.封装unordered_map与unordered_set1.封装前的改造2.迭代器的实现3.unordered_map和unordered_set复用 前言 …

60题学会动态规划系列:动态规划算法第一讲

坚持就是胜利 - - 文章目录 1.第N个泰波那切数 2.三步问题 3.使用最小花费爬楼梯 4.解码方法 1.第N个泰波那切数 力扣链接&#xff1a;力扣 泰波那契序列 Tn 定义如下&#xff1a; T0 0, T1 1, T2 1, 且在 n > 0 的条件下 Tn3 Tn Tn1 Tn2 给你整数 n&#xff0c…

多线程 -- 线程安全问题(3)

本篇重点: 总结线程安全问题的原因以及解决办法 目录 synchronized 加锁关键字join 和 synchronized 的区别volatile 关键字 在上一篇中我们介绍了Thread类的基本使用方法, 本篇将会介绍有关于线程的安全问题 线程不安全的原因: 抢占式执行(罪魁祸首, 万恶之源) 多个线程修改同…

搜索推荐系统[10]项目实战系列Z5:汽车说明书跨模态智能问答系统,针对汽车说明书(可自定义文档)进行自动问答,采用了OCR、RocketQA等技术

搜索推荐系统专栏简介:搜索推荐全流程讲解(召回粗排精排重排混排)、系统架构、常见问题、算法项目实战总结、技术细节以及项目实战(含码源) 专栏详细介绍:搜索推荐系统专栏简介:搜索推荐全流程讲解(召回粗排精排重排混排)、系统架构、常见问题、算法项目实战总结、技术…

小程序之页面通信派发通知

文章目录 1. 介绍小程序页面通信的概念解释小程序页面通信的意义和必要性介绍小程序页面通信的方法 2. 小程序页面通信的实现示例通过事件传递数据实现页面之间通信通过全局变量实现页面之间通信 3. 实现小程序页面之间的消息通知介绍小程序发布订阅模式的概念使用事件订阅-发布…

网络通信IO模型-BIO

承接上文网络通信IO模型上 BIO的Java代码 服务端创建一个ServerSocket&#xff0c;绑定了端口号8090&#xff0c;目的是让客户端和服务端建立连接后进行通信&#xff0c;然后进入死循环&#xff0c;死循环里面会调用server.accept得到一个socket客户端&#xff0c;打印客户端的…

【PyQt5】指示灯显示

【PyQt5】指示灯显示 1、背景2、代码示例3、QtDesigner绘制 1、背景 利用Qt5写工业控制软件交互界面的时候&#xff0c;经常需要在界面上有指示灯功能。 例如下面的明暗表示串行端口的连接和断开。 我们本质是用Qt5的label文本标签来实现的&#xff0c;即通过设置标签的样式表…

115.删除有序数组中的重复项 removeDuplicatesFromSortedArray

文章目录 题目描述解题思路代码详解运行截图 题目描述 题目链接 给你一个 升序排列 的数组 nums &#xff0c;请你 原地 删除重复出现的元素&#xff0c;使每个元素 只出现一次 &#xff0c;返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元…

C# | 凸包算法之Jarvis,寻找一组点的边界/轮廓

C#实现凸包算法之Jarvis 文章目录 C#实现凸包算法之Jarvis前言示例代码实现思路测试结果结束语 前言 这篇关于凸包算法的文章&#xff0c;本文使用C#和Jarvis算法来实现凸包算法。 首先消除两个最基本的问题&#xff1a; 什么是凸包呢&#xff1f; 凸包是一个包围一组点的凸多…

驱动LSM6DS3TR-C实现高效运动检测与数据采集(1)----获取ID

概述 本文将介绍如何驱动和利用LSM6DS3TR-C传感器&#xff0c;实现精确的运动感应功能。LSM6DS3TR-C是一款先进的6轴惯性测量单元&#xff08;IMU&#xff09;&#xff0c;集成了三轴加速度计和三轴陀螺仪&#xff0c;可用于测量和检测设备的加速度、姿态和运动。 本文将提供L…

车载软件架构 —— 闲聊几句AUTOSAR OS(二)

我是穿拖鞋的汉子,魔都中坚持长期主义的工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 在最艰难的时候,自己就别去幻想太远的将来,只要鼓励自己过好今天就行了! 这世间有太多的猝不及防,有些东西根本不配占有自己的情绪,人生就是一场体验,…

牛客HJ43迷宫问题 - 创建智能体通过策略自己找路

文章目录 问题描述思路代码C 问题描述 描述 定义一个二维数组 N*M &#xff0c;如 5 5 数组下所示&#xff1a; int maze[5][5] { 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, }; 它表示一个迷宫&#xff0c;其中的1表示墙壁&#xff0…

SPA首屏加载速度慢的怎么解决?

SPA首屏加载速度慢的怎么解决&#xff1f; 加载慢的原因 网络延时问题资源文件体积是否过大资源是否重复发送请求去加载了加载脚本的时候&#xff0c;渲染内容堵塞了 解决方案 1.减小入口文件体积 常用的手段是路由懒加载&#xff0c;把不同路由对应的组件分割成不同的代码…