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()计算 ...
随机推荐
- 入门大数据---通过Yarn搭建MapReduce和应用实例
上一篇中我们了解了MapReduce和Yarn的基本概念,接下来带领大家搭建下Mapreduce-HA的框架. 结构图如下: 开始搭建: 一.配置环境 注:可以现在一台计算机上进行配置,然后分发给其它 ...
- 并发04--JAVA中的锁
1.Lock接口 Lock与Synchronized实现效果一致,通过获得锁.释放锁等操作来控制多个线程访问共享资源,但是Synchronized将获取锁固话,必须先获得锁,再执行,因此两者对比来说, ...
- MFC 添加C++类,别的类不通过C++类的定义的对象就可以直接调用C++类里面的成员函数;
MFC 添加C++类,不用定义C++类的对象,别的类不通过C++类的定义的对象就可以直接调用C++类里面的成员函数: 1先在mfc程序中添加普通类CProdata,然后删除头文件Prodata.h里面 ...
- java中执行cmd命令
一.java执行cmd命令的三种方式:http://www.jb51.net/article/80829.htm 参考:https://www.cnblogs.com/zhufu9426/p/7928 ...
- 每日一题 - 剑指 Offer 46. 把数字翻译成字符串
题目信息 时间: 2019-07-02 题目链接:Leetcode tag: 动态规划 难易程度:中等 题目描述: 给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 "a" ...
- Poj 3613 Cow Relays (图论)
Poj 3613 Cow Relays (图论) 题目大意 给出一个无向图,T条边,给出N,S,E,求S到E经过N条边的最短路径长度 理论上讲就是给了有n条边限制的最短路 solution 最一开始想 ...
- Windows 最值得推荐的装机必备“神器”软件大合集
工欲善其事,必先利其器.每个人在平时使用电脑的过程中,多多少少都会积累一些好用的软件,我也不例外,从业这么多年,收藏了许多不错的软件,通过这篇文章都分享给大家.如果觉得不错,请把这篇文章分享给你的小伙 ...
- day80 前端项目
目录 一.初始化项目 二.安装路由vue-router 1 配置路由 1.1 初始化路由对象 1.2 注册路由信息 1.3 在视图中显示路由对应的内容 2 路由对象提供的操作 2.1 页面跳转 2.2 ...
- 03 Django模型层: 常用(非常用)字段和参数
Django模型层: 常用(非常用)字段和参数 1 ORM字段 AutoField int自增列,必须填入参数 primary_key=True.当model中如果没有自增列,则自动会创建一个列名为i ...
- redis(十五):Redis 有序集合(sorted set)(python)
#coding:utf8 import redis r =redis.Redis(host="23.226.74.190",port=63279,password="66 ...