pandas(三)数据查询

2023-11-10

数值、列表、区间、条件、函数

Pandas查询数据的几种方法

  1. df.loc方法,根据行、列的标签值查询
  2. df.iloc方法,根据行、列的数字位置查询
  3. df.where方法
  4. df.query方法

.loc既能查询,又能覆盖写入,强烈推荐!

Pandas使用df.Ioc查询数据的方法
6. 使用单个label值查询数据
7. 使用值列表批量查询
8. 使用数值区间进行范围查询
9. 使用条件表达式查询
10. 调用函数查询

以上查询方法,既适用行,也适用列
注意观察降维打 DataFrame > Series > 值

import pandas as pd
fpath = '/Users/python/Desktop/means/ml-25m/beijing_tianqi_2018.csv'
df = pd.read_csv(fpath)
# 查看前几行数据
df.head()

       ymd	  bWendu   yWendu	tianqi	  fengxiang	fengli	aqi	aqiInfo	aqiLevel
0	2018-01-01	3-6℃	    晴~多云	  东北风	    1-2592
1	2018-01-02	2-5℃	    阴~多云	  东北风	    1-2491
2	2018-01-03	2-5℃	    多云	      北风	    1-2281
3	2018-01-04	0-8℃	    阴	      东北风	    1-2281
4	2018-01-05	3-6℃	    多云~晴	  西北风	    1-2501
  • 设定索引为日期,方便查询
    df.set_index("ymd", inplace=True)
    
  • 查看时间序列号索引列
    df.index
    
    # 索引名称 ymd 索引长度365 
    Index(['2018-01-01', '2018-01-02', '2018-01-03', '2018-01-04', '2018-01-05',
           '2018-01-06', '2018-01-07', '2018-01-08', '2018-01-09', '2018-01-10',
           ...
           '2018-12-22', '2018-12-23', '2018-12-24', '2018-12-25', '2018-12-26',
           '2018-12-27', '2018-12-28', '2018-12-29', '2018-12-30', '2018-12-31'],
          dtype='object', name='ymd', length=365)
    
  • 以时间为索引后,查看前几行数据
    df.head()
    
    	bWendu	yWendu	tianqi	fengxiang	fengli	aqi	aqiInfo	aqiLevel
    ymd								
    2018-01-01	3-6℃	晴~多云	东北风	1-2592
    2018-01-02	2-5℃	阴~多云	东北风	1-2491
    2018-01-03	2-5℃	多云	北风	1-2281
    2018-01-04	0-8℃	阴	东北风	1-2281
    2018-01-05	3-6℃	多云~晴	西北风	1-2501
    
  • 替换掉温度后的℃
    前面行:为所有的行, 指定列
    df.loc[:, 'bWendu'] = df['bWendu'].str.replace('℃', '').astype('int32')
    df.loc[:, 'yWendu'] = df['yWendu'].str.replace('℃', '').astype('int32')
    
    bWendu	yWendu	tianqi	fengxiang	fengli	aqi	aqiInfo	aqiLevel
    ymd								
    2018-01-01	3	-6~多云	东北风	1-2592
    2018-01-02	2	-5~多云	东北风	1-2491
    2018-01-03	2	-5	多云	北风	1-2281
    2018-01-04	0	-8	阴	东北风	1-2281
    2018-01-05	3	-6	多云~晴	西北风	1-2501
    

二、数据查询

  • 使用单个label 值查询数据
    行或者列,都可以只传单个值,实现精确匹配

    # 查询某个单元格的值  行  列
    df.loc['2018-01-04', 'bWendu']
    0
    
    # 查询某些单元格的值(行、列),返回Series; 查询条件(行单个, 列多个)
    df.loc['2018-01-04', ['bWendu', 'tianqi']]
    
    bWendu    0
    tianqi    阴
    Name: 2018-01-04, dtype: object
    
  • 使用值列表批量查询

    查询条件(行多个, 列单个); 返回Series 
    df.loc[['2018-01-02', '2018-01-03', '2018-01-04'], 'bWendu']
    
    ymd
    2018-01-02    2
    2018-01-03    2
    2018-01-04    0
    Name: bWendu, dtype: object
    
    查询条件(行多个, 列多个); 返回DataFrame 
    df.loc[['2018-01-02', '2018-01-03', '2018-01-04'], ['bWendu', 'yWendu']]
    
    	bWendu	yWendu
    ymd		
    2018-01-02	2	-5
    2018-01-03	2	-5
    2018-01-04	0	-8
    
  • 使用数值区间进行范围查询,区间既包含开始,也包含结束

    查询某些行区间的某一列的值 即index 区间的值 行开始:结束, 列
    df.loc['2018-01-02':'2018-01-04', 'bWendu']
    
    ymd
    2018-01-02    2
    2018-01-03    2
    2018-01-04    0
    Name: bWendu, dtype: object
    
    查询某一行的某些列区间的值 即index的区间数据 行, 列开始:结束
    
    df.loc['2018-01-04', 'bWendu':'tianqi']
    
    bWendu     0
    yWendu    -8
    tianqi     阴
    Name: 2018-01-04, dtype: object
    
    查询某些行与某些列区间的数据 即index的区间数据 行开始:结束, 列开始:结束
    df.loc['2018-01-02':'2018-01-04', 'bWendu':'tianqi']
    
    		bWendu	yWendu	tianqi
    ymd			
    2018-01-02	2	-5~多云
    2018-01-03	2	-5	多云
    2018-01-04	0	-8
  • 使用条件表达式查询,bool列表的长度等于行数或列数

    简单条件查询,最低温度小于-10度的列表
    df.loc[df['yWendu']<-10, :]  前行 温度小于10, 列取全部
    
    	bWendu	yWendu	tianqi	fengxiang	fengli	aqi	aqiInfo	aqiLevel
    ymd								
    2018-01-23	-4	-12	晴	西北风	3-4311
    2018-01-24	-4	-11	晴	西南风	1-2341
    ...	...	...	...	...	...	...	...	...
    2018-12-29	-3	-12	晴	西北风	2291
    2018-12-30	-2	-11~多云	东北风	1311
    
    查询最低温度是否小雨-10度
    df['yWendu']<-10
    
    ymd
    2018-01-01    False
    2018-01-02    False
                  ...  
    2018-12-30     True
    2018-12-31    False
    Name: yWendu, Length: 365, dtype: bool
    
  • 复合查询:组合条件用&符号合并,每个条件判断都得带括号

    查询最高气温小于30度,并且最低气温大于15度,并且晴天,并且天气为优的数据
    df.loc[(df['bWendu'] <= 30) & (df['yWendu'] >= 15) & (df['tianqi'] == '晴') & (df['aqiLevel'] == 1), :]
    
    	bWendu	yWendu	tianqi	fengxiang	fengli	aqi	aqiInfo	aqiLevel
    ymd								
    2018-08-24	30	20	晴	北风	    1-2401
    2018-09-07	27	16	晴	西北风	3-4221
    
    天气的 最高气温小于30度,并且最低气温大于15度,并且晴天,并且天气为优 是否为ture false
    (df['bWendu'] <= 30) & (df['yWendu'] >= 15) & (df['tianqi'] == '晴') & (df['aqiLevel'] == 1)
    
    ymd
    2018-01-01    False
    2018-01-02    False
                  ...  
    2018-12-30    False
    2018-12-31    False
    Length: 365, dtype: bool
    
  • 调用函数查询

    获取 最高温度大于30,且最低温度15 的数据 lambda
    df.loc[lambda df:(df['bWendu'] <= 30) & (df['yWendu'] >= 15), :]
    
    	bWendu	yWendu	tianqi	fengxiang	fengli	aqi	aqiInfo	aqiLevel
    ymd								
    2018-04-28	27	17	晴	西南风	    3-4125	轻度污染	3
    2018-04-29	30	16	多云	南风	        3-4193	中度污染	4
    ...	...	...	...	...	...	...	...	...
    2018-09-19	26	17	多云	    南风	   1-2522
    2018-09-20	27	16	多云	    西南风  1-2632
    64 rows × 8 columns
    
    查询9月份空气质量为优的数据 
    def query_weather_data(df):
        return df.index.str.startswith('2018-09') & (df['aqiLevel'] == 1)
    df.loc[query_weather_data, :]
    
    	bWendu	yWendu	tianqi	fengxiang	fengli	aqi	aqiInfo	aqiLevel
    ymd								
    2018-09-01	27	19~小雨	南风	1-2501
    2018-09-04	31	18	晴	西南风	3-4241
    ...	...	...	...	...	...	...	...	...
    2018-09-29	22	11	晴	北风	3-4211
    2018-09-30	19	13	多云	西北风	4-5221
    
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

pandas(三)数据查询 的相关文章

随机推荐

  • #vue# vue锚点定位,滚动到具体位置

    需求 点击导航栏的各个tab 跳转 滚动 到当前页面的具体位置 步骤 1 首先在导航栏的版块里面加入方法goToAnchor 以及 跳转的id类名 div class nav item center div About div div To
  • 查看.o, .obj文件符号列表,强大的nm命令

    nm命令可以查看 linux以及windows下的 o obj文件中的符号列表 其中 o文件可以由gcc g 编译得到 obj由vc编译得到 太爽了 以后遇到undefined reference错误的时候就可以这个命令搞定了 举一例子 在
  • 【java笔记】常用接口(2):Consumer接口

    Consumer接口是一个消费型接口 泛型指定什么类型 就可以使用accept消费什么类型数据 直接输出 public class Demo public static void main String args method asd na
  • 高德地图弹窗使用vue模板

  • android 遍历assets下的文件

    在AssetManager中有个list 方法 传入你的子文件名称即可 String flLists this getAssets list your subdir 如果是根目录 那么就是这么写 AssetManager assetMana
  • 集合框架的简要介绍

    目录 集合和数组的区别 Collection接口 ArrayList实现类 ArrayList的创建和使用 linkedList Set接口及其实现类 Set接口特点 HashSet实现类 HashSet特点 HashSet避免对象重复的规
  • Service能够创建界面(addView)吗?

    一个Service能够创建界面 addView 吗 一个app 只有Service 没有Activity 能够通过WindowManager调用addView 添加可视界面吗 答案是可以 但是能够创建的界面类型 WindowManager
  • 虚拟化原理介绍

    什么是虚拟化 一台PC机的组成包括 Keyboard 键盘 Monitor 显示器 CPU RAM I O Disk Network 这是基本的五大部件 虚拟化就是在这些基础物理设备上运行多个OS 虚拟化面临的重要问题概述 CPU RAM
  • Android :提取字符串当中的数字

    String a String regEx 0 9 Pattern p Pattern compile regEx Matcher m p matcher fl System out println m replaceAll trim 结果
  • 含测试点归纳

    小编提示 本文含静态测试主要检查点 纯干货 看官们可先收藏后阅读 从是否执行被测试软件来进行分类 测试可以分为静态测试和动态测试 软件本身包含了各种代码 如果只是检查代码和文档 而不执行被测试的软件 此时所进行的就是静态测试 反之 如果在测
  • 解决Jasperreport的web 套打

    前段时间写了一篇 解决Jasperreport的web打印另一种方法http www blogjava net three 3 archive 2010 06 24 324329 html 关于在web中的打印 套打是经常被提到的 这个需求
  • Spring学习04

    文章目录 与持久层整合 与Mybatis整合 事务处理 Spring控制事务开发 事务属性 隔离属性 isolation 传播属性 propagation 只读属性 read only 超时属性 timeout 异常属性 实践使用 基于标签
  • 使用sqlite3 模块操作sqlite3数据库

    Python内置了sqlite3模块 可以操作流行的嵌入式数据库sqlite3 如果看了我前面的使用 pymysql 操作MySQL数据库这篇文章就更简单了 因为它们都遵循PEP 249 所以操作方法几乎相同 废话就不多说了 直接看代码吧
  • 从零开始搭建kafka开发环境

    Part1前言 最近选用kafka作为消息缓存 来低于大流量的数据 Kafka是一种高吞吐量的分布式发布订阅消息系统 有如下特性 通过O 1 的磁盘数据结构提供消息的持久化 这种结构对于即使数以TB的消息存储也能够保持长时间的稳定性能 高吞
  • scanf("%s")读取字符串

    关于c语言字符串读取 可以看出 读取的起始位置就是自己传入的位置 如果写成scanf s a 则默认就是起始地址 这里需要注意的是 由于scanf s 遇到空白符停止的特点 输出数组时候需要指定起始地址为读入时候的地址 否则没有输出 求长度
  • [Office] WPS Excel通过添加宏实现多张表格合并

    在我们使用Excel时 通常会遇到让各个地区 各个学院或下属单位收集数据的情况 有时还会每月 每周 甚至是每日调度数据 而当我们得到了这些Excel文件表格之后 很多同志会进行人工手动汇总 这大大降低了办公的效率 本文主要介绍WPS Exc
  • 用Unity开发一款2D横版游戏demo

    LanW Game Project 目录 一 介绍 二 安装教程 三 开发流程 1 新建工程 2 设置人物 3 控制主角的移动 4 添加切换动作的动画 5 镜头跟踪 6 收集物体 7 创建ui 8 创建敌人 9 制作敌人ai 10 创建青蛙
  • Python连接Hive

    1 Hiveserver1 HiveServer2 1 1 HiveServer1 HiveServer是一个可选的服务 能够允许远程客户端使用各种编程语言向hive提交请求并检索结果 Hiveserver是建立在Apache Thrift
  • 什么是DFX设计?

    DFX是面向产品生命周期各环节的设计 其中X代表产品生命周期的某一个环节或特性 它是一种新的设计技术 在设计阶段尽可能早地考虑产品的性能 质量 可制造性 可装配性 可测试性 产品服务和价格等因素 对产品进行优化设计或再设计 常见的DFX主要
  • pandas(三)数据查询

    数值 列表 区间 条件 函数 Pandas查询数据的几种方法 df loc方法 根据行 列的标签值查询 df iloc方法 根据行 列的数字位置查询 df where方法 df query方法 loc既能查询 又能覆盖写入 强烈推荐 Pan