4.pandas的进阶查询
简单的查询其实根本不能满足实际开发的需求
需求可能是让你查一下2018年的销售额啊,2019年温度超过30℃的天数啊等等的
这些需求都是有异曲同工的,就是带条件的查询
这里我们先自己设计一个表格,并将其读取出来
import pandas as pd
df = pd.read_excel('test1.xlsx')
print(df)
data wendu_min wendu_max weather fengji
0 2020-01-01 1℃ 15℃ 晴 1
1 2020-01-02 1℃ 16℃ 多云 2
2 2020-01-03 1℃ 17℃ 小雨 4
3 2020-01-04 4℃ 18℃ 阴 2
4 2020-01-05 1℃ 19℃ 大雨 1
5 2020-01-06 3℃ 20℃ 小雨 3
6 2020-01-07 1℃ 21℃ 晴 5
7 2020-01-08 1℃ 22℃ 多云 2
8 2020-01-09 1℃ 23℃ 阴 1
9 2020-01-10 0℃ 24℃ 小雨 3
10 2020-01-11 2℃ 25℃ 多云 4
为了查询方便,所以我将日期当做查询的索引
df.set_index('data', inplace=True)
这个inplace是指修改可以及时看到
wendu_min wendu_max weather fengji
data
2020-01-01 1℃ 15℃ 晴 1
2020-01-02 1℃ 16℃ 多云 2
2020-01-03 1℃ 17℃ 小雨 4
2020-01-04 4℃ 18℃ 阴 2
2020-01-05 1℃ 19℃ 大雨 1
2020-01-06 3℃ 20℃ 小雨 3
2020-01-07 1℃ 21℃ 晴 5
2020-01-08 1℃ 22℃ 多云 2
2020-01-09 1℃ 23℃ 阴 1
2020-01-10 0℃ 24℃ 小雨 3
2020-01-11 2℃ 25℃ 多云 4
像这种温度带着的℃,不便于数据的分析,所以我们在刚开始的时候,可以将其去掉
df['wendu_min'] = df['wendu_min'].str.replace('℃', '').astype('int32')
df['wendu_max'] = df['wendu_max'].str.replace('℃', '').astype('int32')
wendu_min wendu_max weather fengji
data
2020-01-01 1 15 晴 1
2020-01-02 1 16 多云 2
2020-01-03 1 17 小雨 4
2020-01-04 4 18 阴 2
2020-01-05 1 19 大雨 1
2020-01-06 3 20 小雨 3
2020-01-07 1 21 晴 5
2020-01-08 1 22 多云 2
2020-01-09 1 23 阴 1
2020-01-10 0 24 小雨 3
2020-01-11 2 25 多云 4
数据都处理完毕,现在就开始进行查询
查询单个数据
我想查一月9号的最高温度
df.loc['2020-01-09', 'wendu_max']
23
先传行索引,再传列索引
查询多个数据
我想查一月6号到一月10号之间的所有数据
df.loc['2020-01-06':'2020-01-10', :]
wendu_min wendu_max weather fengji
data
2020-01-06 3 20 小雨 3
2020-01-07 1 21 晴 5
2020-01-08 1 22 多云 2
2020-01-09 1 23 阴 1
2020-01-10 0 24 小雨 3
:代表着所有的数据
使用条件查询
我想得到最低温度大于1℃的数据
df.loc[df['wendu_min'] > 1, :]
wendu_min wendu_max weather fengji
data
2020-01-04 4 18 阴 2
2020-01-06 3 20 小雨 3
2020-01-11 2 25 多云 4
我想要最低温度大于1℃,最高温度小于25℃的天气
df.loc[(df['wendu_min'] > 1) & (df['wendu_max'] < 25), :]
wendu_min wendu_max weather fengji
data
2020-01-04 4 18 阴 2
2020-01-06 3 20 小雨 3
多个条件要用括号括起来,然后用&连接
使用函数查询
使用lambda表达式
如果lambda不太熟练就跳过这里
df.loc[lambda df: (df['wendu_min'] > 1) & (df['wendu_max'] < 25), :]
wendu_min wendu_max weather fengji
data
2020-01-04 4 18 阴 2
2020-01-06 3 20 小雨 3
自己编写的函数查询
我认为最低温度大于1℃,最高温度小于25℃的就是好天气,所以先写一个函数
def goodWeather(df):
return (df['wendu_min'] > 1) & (df['wendu_max'] < 25)
然后再使用这个函数进行数据查询
df.loc[goodWeather, :]
wendu_min wendu_max weather fengji
data
2020-01-04 4 18 阴 2
2020-01-06 3 20 小雨 3
注意这里放的是函数名,而不是函数名()
4.pandas的进阶查询的更多相关文章
- pandas DataFrame的查询方法(loc,iloc,at,iat,ix的用法和区别)
pandas DataFrame的增删查改总结系列文章: pandas DaFrame的创建方法 pandas DataFrame的查询方法 pandas DataFrame行或列的删除方法 pand ...
- Django orm进阶查询(聚合、分组、F查询、Q查询)、常见字段、查询优化及事务操作
Django orm进阶查询(聚合.分组.F查询.Q查询).常见字段.查询优化及事务操作 聚合查询 记住用到关键字aggregate然后还有几个常用的聚合函数就好了 from django.db.mo ...
- 【PY从0到1】 一文掌握Pandas量化进阶
# 一文掌握Pandas量化进阶 # 这节课学习Pandas更深的内容. # 导入库: import numpy as np import pandas as pd # 制作DataFrame np. ...
- Django笔记&教程 5-2 进阶查询——Queryset
Django 自学笔记兼学习教程第5章第2节--进阶查询--Queryset 点击查看教程总目录 Queryset相关内容其实蛮多的,本文只介绍一些常用的,详细的推荐查询官方文档:queryset-a ...
- django进阶-查询(适合GET4以上人群阅读)
前言: 下篇博客写关于bootstrap... 一.如何在脚本测试django from django.db import models class Blog(models.Model): name ...
- MySQL 【进阶查询】
数据类型介绍 整型 tinyint, # 占1字节,有符号:-128~127,无符号位:0~255 smallint, # 占2字节,有符号:-32768~32767,无符号位:0~65535 med ...
- 3.pandas的简单查询
知道了基本的pandas的数据结构,就可以进行查询相应的数据了 DataFrame可以看成是一个个的Series组成的一个二维结构,既然如此,就会有从DataFrame里查询Series的方法 从Da ...
- python的Web框架,Django模型系统二,模型属性,及数据库进阶查询
原始数据接上篇文章来操作.可能需要查看后才能懂.点击这里查看 1.常用的模型字段类型 官方文档:https://docs.djangoproject.com/en/2.1/ref/models/fie ...
- mysql 进阶查询(学习笔记)
学习笔记,来源:实验楼 ,链接: https://www.shiyanlou.com/courses/9 一.日期计算: 1.要想确定每个宠物有多大,可以使用函数TIMESTAMPDIFF()计算 ...
随机推荐
- MySQL Error (Always Continue)
MySQL Error (Always Continue) 其实大部分error在网上都有对应的解决办法,尤其是对Mysql这种使用范围很广的技术.自己就不为每个error单独发布博客了,仅在这里 ...
- UVA 11383 Golden Tiger Claw 题解
题目 --> 题解 其实就是一个KM的板子 KM算法在进行中, 需要满足两个点的顶标值之和大于等于两点之间的边权, 所以进行一次KM即可. KM之后, 顶标之和就是最小的.因为如果不是最小的,就 ...
- request.headers.get头部获取内容的缺失
1.说明 今天遇到了一个小坑,在做权限控制的时候,用头部传递了参数取名为table_privilege_id, 在本地测试的时候是可以接到这个参数的,但是通过ngxin转发之后,奇怪了,怎么也拿不到这 ...
- PE文件格式详解(四)
0x00 前言 上一篇介绍了区块表的信息,以及如何在hexwrokshop找到区块表.接下来,我们继续深入了解区块,并且学会文件偏移和虚拟地址转换的知识. 0x01 区块对齐值 首先我们要知道啥事区块 ...
- javaWeb7——PrepareStatement原理,Pareparedstatement和Statement的区别
查询数据返回的结果集: ResulSet: 代码实现 : PrepareStatement原理 代码实现: Pareparedstatement和Statement的区别: 注意: Statement ...
- devtools 判断类数组的方法
var obj = { '2': 3, '3': 4, 'length': 2, 'splice': Array.prototype.splice, 'push': Array.prototype.p ...
- python虚拟环境 + 批量pip + 换源
python虚拟环境 + 批量pip + 换源 虚拟环境 曾经我是一个小白,不管运行什么项目都用一个环境,后来项目多了,有的是Django1.11的有的是Django2的,有的项目只能在3.6上运行, ...
- Mysql基础(十):MYSQL中使用事务的案例
https://www.cnblogs.com/lsqbk/p/10145306.html 基本介绍 事务用于保证数据的一致性,它由一组相关的dml语句组成,该组的dml语句要么全部成功,要么全部失败 ...
- 04 flask源码剖析之LocalStack和Local对象实现栈的管理
04 LocalStack和Local对象实现栈的管理 目录 04 LocalStack和Local对象实现栈的管理 1.源码入口 1. flask源码关于local的实现 2. flask源码关于l ...
- Python之进程、线程、协程篇
本节内容 操作系统发展史介绍 进程.与线程区别 python GIL全局解释器锁 线程 语法 join 线程锁之Lock\Rlock\信号量 将线程变为守护进程 Event事件 queue队列 生产者 ...