• Pandas中的五种数据查询方法--【数值,列表,区间,条件,函数查询】


    Pandas查询数据

    Pandas查询数据的几种方法

    1.df.loc方法,根据行、列的标签值查询

    2. df.iloc方法,根据行、列的数字位置查询

    3. df.where方法

    4. df.query方法

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

    Pandas使用df.loc查询数据的方法

    1.使用单个label值查询数据

    2.使用值列表批量查询

    3.使用数值区间进行范围查询

    4.使用条件表达式查询

    5.调用函数查询

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

    import pandas as pd

    1、读取数据

    北京2018年全年天气预报

    1. df=pd.read_csv('./datas/beijing_tianqi/beijing_tianqi_2018.csv',index_col='ymd')
    2. df.head()
    3. df.index

    设置索引为日期,方便按日期筛选
    inplace=True 表示直接在原存储空间上进行更改,不是重新开辟一块空间进行更改
     

    1. #设置索引为日期,方便按日期筛选
    2. #inplace=True 表示直接在原存储空间上进行更改,不是重新开辟一块空间进行更改
    3. df.set_index('ymd',inplace=True)
    4. df.head()

    替换掉温度后的℃
    其实还是使用切片操作,首先筛选出所有的行,在筛选出yWendu中一列,带着类型replace修改完之后,在对修改后的类型进行转换 

    1. df.loc[:,'bWendu']=df['bWendu'].str.replace('℃','').astype('int32')
    2. df.loc[:,'yWendu']=df['yWendu'].str.replace('℃','').astype('int32')
    3. df.head()
    4. df.dtypes

     值得注意的是:

    AttributeError: Can only use .str accessor with string values!这种错误一般都是修改完之后了,不能在进行修改,说明已经修改过了

    1、使用单个label值查询数据

    行或列,都可以只传入单个值,实现精确匹配

    查询一个单元格,只会返回一个数字值

    1. #查询一个单元格,只会返回一个数字值
    2. df.loc['2018-01-01','bWendu']

    对于列的筛选,会产生一列,得到一个Series

    1. #对于列的筛选,会产生一列,得到一个Series
    2. df.loc['2018-01-01',['bWendu','yWendu']]

    2、使用值列表批量查询 

    得到Series

    1. #得到Series
    2. df.loc[['2018-01-02','2018-01-03','2018-01-04'],'bWendu']

    得到DataFrame

    1. #得到DataFrame
    2. df.loc[['2018-01-02','2018-01-03','2018-01-04'],['bWendu','yWendu']]

     

    3、使用数值区间进行范围查询

    注意:区间既包括开始,也包括结束

    行index按区间,切片操作的时候不用加双【】

    列index按区间

    行和列都按区间查询

    1. #行index按区间,切片操作的时候不用加双【】
    2. df.loc['2018-01-03':'2018-01-05','bWendu']
    1. #列index按区间
    2. df.loc['2018-01-03','bWendu':'fengxiang']
    1. #行和列都按区间查询
    2. df.loc['2018-01-03':'2018-01-05','bWendu':'fengxiang']

     

    4、使用条件表达式查询

    bool列表的长度等于行数或者列数

    简单条件查询,最低温度低于-10度的列表

    1. #简单条件查询,最低温度低于-10度的列表
    2. df.loc[df['yWendu']<-10,:]

    观察这里的boolean条件

    1. #观察这里的boolean条件
    2. df['yWendu']<-10

     

    复杂条件查询,查完美天气

    注意,组合条件&符号合并,每个条件判断都得带括号

    查询最高温度小于30度,最低温度大于15度,晴天,天气为优的数据

    1. #查询最高温度小于30度,最低温度大于15度,晴天,天气为优的数据
    2. df.loc[(df['bWendu']<=30) & (df['yWendu']>=15) & (df['tianqi']=='晴') & (df['aqiLevel']==1),:]

    观察这里boolean的条件

    1. #观察这里boolean的条件
    2. (df['bWendu']<=30) & (df['yWendu']>=15) & (df['tianqi']=='晴') & (df['aqiLevel']==1)

     5、调用函数查询

    直接写lambda表达式

    1. # 直接写lambda表达式
    2. df.loc[lambda df :(df['bWendu']<=30)&(df['yWendu']>=15),:]

    直接编写函数,查询9月份,空气质量好的数据

    1. #直接编写函数,查询9月份,空气质量好的数据
    2. def query_mydata(df):
    3. return df.index.str.startswith('2018-09')&df['aqiLevel']==1
    4. df.loc[query_mydata]

     

     

    注意:

    函数式编程的本质:函数自身可以像变量一样传递

  • 相关阅读:
    Monaco Editor教程(六):切换主题,及自定义主题功能的实现
    【python】Numpy统计函数总结
    包载信使mRNA的多西环素纳米脂质体|雷公藤红素纳米脂质体RNA核糖核酸(实验原理)
    总结:OpenStack笔记
    基于OT与CRDT协同算法的文档划词评论能力实现
    python+playwright 学习-82 Request 对象
    QsciScintilla等编辑器实现不同区域鼠标右键处理方式不同的方法
    中尺度混凝土二维有限元求解——运行弯曲、运行光盘、运行比较、运行半圆形(Matlab代码实现)
    xgboost 中的二阶导数为什么收敛更快?
    Qt QGridLayout和QFormLayout案例分析
  • 原文地址:https://blog.csdn.net/qq_46044325/article/details/126804288