码迷,mamicode.com
首页 > 其他好文 > 详细

4.pandas的进阶查询

时间:2020-07-25 23:28:49      阅读:71      评论:0      收藏:0      [点我收藏+]

标签:现在   天气   test   max   多个   编写   excel   注意   分析   

简单的查询其实根本不能满足实际开发的需求

需求可能是让你查一下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的进阶查询

标签:现在   天气   test   max   多个   编写   excel   注意   分析   

原文地址:https://www.cnblogs.com/jevious/p/13375622.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!