精华内容
下载资源
问答
  • 2022-02-22 13:02:59

    1.将属性filter_data的属性满足条件(month>5)的数据,赋值为0.

    df["filter_data"].loc[df["Month"]>5] = 0
    

    2.筛选多个条件:

    df["filter_data"].loc[(df["Month"]>5) & (df['Month']<12)] = 0
    

    3.筛选等于某个值:

    df1 = df.loc[df['Month'].isin([1,2,3,4,5,12])]
    

    参考资料:https://blog.csdn.net/qq_42902997/article/details/121668004

    更新:
    4.筛选满足多个条件的数据:

    df1 = df[df['Year'].isin([2020])&df['Month'].isin([12])] 
    
    更多相关内容
  • pandas筛选符合多个条件的方法

    万次阅读 多人点赞 2019-08-30 19:16:52
    很多时候,我都会面临着筛选出一张表中符合多列条件的数据,使用pandas可以快速的实现目标,在此记录下自己最常用的筛选手段


    我的这篇笔记不记录排序、分组、替换,只记录筛选功能的三种常见的方法。

    • 直接筛选(推荐)
    • 基于map方法的筛选(在方法一的基础上,十分推荐)
    • query方法(不推荐)

    所有代码均在:https://github.com/123liudong/pythonBlog/tree/master/dataDealPandas

    示例数据展示

    all_data = pd.read_csv('data.csv')
    print(all_data.info())
    print(all_data.head(100))
    

    在这里插入图片描述

    例子筛选说明

    为了简单例子,所以在使用筛选方法1和方法2的时候,直接筛选User_id=1439408和Date=NaN的数据。至于筛选方法3,因为我还不知道怎么表示NaN所以仅展示筛选User_id=1439408的数据。

    直接筛选

    • 直接使用列需要满足的条件,如果需要多个列同时满足条件,使用’&‘符号连接即可;如果只需要某一列满足条件,则使用’|'连接多个列的条件。
    # # 直接筛选方法
    some = all_data[(all_data['User_id'] == 1439408) & (all_data['Date'].isna())]
    print(some)
    

    结果:得到了User_id=1439408和Date为空的数据项

       User_id  Merchant_id  Coupon_id Discount_rate  Distance  Date_received  Date
    1  1439408         4663    11002.0        150:20       1.0     20160528.0   NaN
    2  1439408         2632     8591.0          20:1       0.0     20160217.0   NaN
    3  1439408         2632     1078.0          20:1       0.0     20160319.0   NaN
    4  1439408         2632     8591.0          20:1       0.0     20160613.0   NaN
    

    基于map的筛选

    • 这个筛选方式和直接筛选唯一不同的就是,把筛选条件给隔离出来了。
    user_requried = all_data['User_id'].map(lambda x : x==1439408)
    date_requried = all_data['Date'].map(lambda x : np.isnan(x))
    some = all_data[user_requried & date_requried]
    print(some) 
    

    结果:其中map返回的值必须是bool类型,即某一个条件。然后使用直接筛选的方式,把条件合并,最终得出筛选的结果。我认为使用此种类型的方法更加的优美。

       User_id  Merchant_id  Coupon_id Discount_rate  Distance  Date_received  Date
    1  1439408         4663    11002.0        150:20       1.0     20160528.0   NaN
    2  1439408         2632     8591.0          20:1       0.0     20160217.0   NaN
    3  1439408         2632     1078.0          20:1       0.0     20160319.0   NaN
    4  1439408         2632     8591.0          20:1       0.0     20160613.0   NaN
    

    使用query()方法筛选

    • 直接写表达式,得出想要筛选的结果。
    some = all_data.query('(User_id == 1439408)')
    print(some)
    

    结果:直接写表达式容易触发一些不必要的问题(值的类型容易出错,一些特殊值的表达困难等),所以并不建议使用这样的方法。

       User_id  Merchant_id  Coupon_id  ... Distance  Date_received        Date
    0  1439408         2632        NaN  ...      0.0            NaN  20160217.0
    1  1439408         4663    11002.0  ...      1.0     20160528.0         NaN
    2  1439408         2632     8591.0  ...      0.0     20160217.0         NaN
    3  1439408         2632     1078.0  ...      0.0     20160319.0         NaN
    4  1439408         2632     8591.0  ...      0.0     20160613.0         NaN
    5  1439408         2632        NaN  ...      0.0            NaN  20160516.0
    6  1439408         2632     8591.0  ...      0.0     20160516.0  20160613.0
    

    总结:

    • 直接筛选适用于一些较简单的筛选
    • 基于map的方法适用于较为复杂的筛选,把条件提出来实现,使得代码更加简单明了。
    • 使用query方法虽然也能实现,但写的表达式总是容易出错,所以不建议使用。

    参考资料

    • https://pandas.pydata.org/pandas-docs/stable/
    展开全文
  • Python Pandas中Dataframe对象,如何根据列值筛选满足条件,并且返回列的索引值,我们举栗子说明一下: 1.先创建一个dataframe变量df: df = pd.DataFrame(np.arange(16).reshape(4,4), #index = pd.date_...
  • 点击上方“风控圈子”选择“星标”公众号每天早上8:30,一起实现自我增值01 pandas及其重要性pandas是数据分析工作的首选库。它含有使数据分析工作变得更快更简单的高级数据结构和操作工具。pandas是基于Numpy构建的...

    点击上方“” 

    选择“星标”公众号

    每天早上8:30,一起实现自我增值

    01

     pandas及其重要性

    • pandas是数据分析工作的首选库。它含有使数据分析工作变得更快更简单的高级数据结构和操作工具。
    • pandas是基于Numpy构建的让以Numpy为中心的应用变得更加简单。
    • 它能满足工作中的许多需求:
        ① 具备按轴自动或显式数据对齐功能的数据结构。防止由于数据未对齐       导致的常见错误。     ② 集成时间序列功能。     ③ 技既能处理时间序列也能处理非时间序列数据的数据结构。     ④ 数学运算和简约(agg),可以根据不同的元数据(轴编号)处理。     ⑤ 灵活处理缺失数据。     ⑥ 合并及其他出现在常见数据库中的关系型运算。
    • pandas可以解决的数据问题随着它的库规模的增大而变得更加强大,成为数据分析一个不可或缺的工具。
    0 2

    pandas的数据结构介绍

    1 Series
    • Series是一种类似于一维数组的对象,它由一组数据(各种Numpy数据类型)以及一组与之相关的数据标签(即索引)组成。由一组数据即可产生最简单的Series。
    • Series的字符串表现形式为:索引在左边,值在右边。自动创建一个0~N-1的整数型索引,可以通过values和index属性获取其数组表示形式和索引对象。
    obj = Series([4,7,-5,3])obj.indexobj.values
    • 可以通过索引的方式选取Series的单个或者一组值。
    obj['one'] = 1
    • 数组运算(如根据布尔型数组进行过滤、标量乘法、应用数学函数等)会保留索引与值之间的链接。
    obj[obj > 0]obj * 2np.exp(obj)
    • 可以将Series看作一个定长的有序字典,索引到值之间是一个映射。
    'a' in obj
    • 如果数据被存放在一个python字典中,也可以直接通过这个字典创建Series。
    data = {'one':1,'two':2,'three':3}obj = Series(data) 
    • 如果只传入一个字典,则结果Series的索引就是原字典的键(有序排列)。
    • Series最重要的一个功能是:它在算术运算中会自动对齐不同索引的数据。
    • Series对象本身及其索引都有一个name属性,该属性跟pandas其他的关键功能关系非常密切:
    • obj.name = ' population'obj.index.name = 'state'obj.index = ['one','two','three','four']   #通过赋值的方式修改索引
    03

     DataFrame

    • DataFrame是一个表格型的数据结构,含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔值等)。

    • DataFrame既有行索引也有列索引,可以被看做是Series组成的字典(共同用一个索引)。DataFrame面向行和列的操作基本上是平衡的。

    • DataFrame中的数据是以一个或多个二维块存放的(而不是列表、字典或别的一维数据结构)。也可以轻松地将其表示为更高维度的数据(层次化索引的表格型结构,高级数据处理功能的关键要素)。

    • 构建DataFrame的方法①:直接传入一个由等长列或Numpy数组组成的字典。

    data = ({'':[],                 '':[]              '':[]})  frame = DataFrame(data)
    • 结果DataFrame会自动加上索引,且全部列会被有序排列。

    • 如果指定了列序列,则DataFrame的列会按照指定顺序进行排列。

    DataFrame(data,columns = ['one','two','three'])frame = DataFrame(data,columns = [],index = [])frame.columns

    • 如果传入的数据找不到,就会产生NA值

    • 通过类似字典标记的方式或属性的方式,可以将DataFrame的列获取为一个Series

    frame['one']frame.one

    • 返回的Series拥有原DataFrame相同的索引,且其name属性也已经被相应的设置好。

    • 行也可以通过位置或名称的方式就行获取,比如用索引字段ix。

    frame.ix['1']

    • 列可以通过赋值的方式进行修改。

    • 为不存在的列赋值会创建一个新列。

    frame['new'] = 1 #新增一个空列,并赋一个标量值 frame['new'] = np.arange(5.) #新增一个空列,并赋一个标量值

    • 将列表或数组赋值给某个列时,其长度必须跟DataFrame 长度相匹配。如果是Series,会精确匹配DataFrame的索引,空位被缺失值填补。

    Series = Series([1,2,3],index = ['one','two','three'])frame['new'] = Series

    • 构建DataFrame的方法②:嵌套字典(字典的字典)

    • 如果将嵌套字典传递给DataFrame,它会被解释为:外层字典的键作为列,内层键则作为行索引。

    • 内层字典的键会被合并、排序以形成最终 的索引。除非显式指定了索引。

    • 可以输入给DataFrame构造函数所能接受的各种数据   

      • 二维ndarray #数据矩阵,还可以传入行标和列标。

      • 由数组、列表或元组组成的字典 #每个序列会变成DataFrame的一列,所有序列的长度必须相同。

      • Numpy的结构化/记录数组 #类似于“由数组组成的字典”

      • 由Series组成的字典

      • 由字典组成的字典

      • 字典组成的Series列表

      • 列表或元组组成的另一个DataFrame

      • Numpy的MaskedAarry

    • 如果设置了DataFrame的index和columns属性,这些信息会被现显示出来。

    • 跟Series一样,values属性也会以二维ndarray的形式返回DataFrame中的数据。

    • 如果DataFrame各列的数据类型不同,则值数组的数据类型会选用能够兼容所有列的数据类型

    0 4

     索引对象

    • pandas的索引对象负责管理轴标签和其他元数据(比如轴名称等)。构建Series或DataFrame时,所用到的任何数组或其他序列的标签会被转换成一个index
    • index对象不可修改。不可修改性非常重要,这样才能使index对象在多个数据结构之间安全共享。
    • index的功能也类似于一个固定大小的集合。
    • 每个索引都有一些方法和属性,可用于设置逻辑并回答有关该索引所包含的数据信息的问题。
    • index的方法和属性:
      • append # 连接另一个index对象,产生一个新的index
      • diff # 计算差集,并得到一个index
      • intersection # 计算交集
      • union # 计算并集
      • isin # 计算一个指示各值是否都包含在参数集合中的布尔型数组
      • delete # 删除索引i处的元素,并得到一个新的index
      • drop # 删除传入的值,并得到新的index
      • insert # 将元素插入到索引i处,并得到新的index
      • is_monotonic # 当各元素均大于等于前一个元素时,返回True
      • is_unique # 当index没有重复值时,返回True
      • unique # 计算index中唯一值得数组
    05

    基本功能

    1 重新索引

    • pandas对象的一个重要方法是reindex,作用是创建一个适应新索引的新对象。根据新索引进行重排。
    obj = Seires([],index = [])obj = obj.reindex(['','',''])obj = obj.reindex([],fillna = 0)
    • reindex的mathod选项:
      • ffill或pad # 前向填充值
      • bfill或backfill # 后向填充值
    • 对于DataFrame,reindex可以修改(行)索引、列,或两个都修改。
    frame = frame.reindex(['','','',''])frame.reindex(columns = '')frame.reindex(index = ['','','','',],method = 'ffill',columns = '')
    • 利用ix的标签索引功能,重新简洁索引任务
    frame.ix[['','','',''],''
    • reindex函数的参数
      • index # 用作索引的新序列,既可以是index实例,也可以是其他数据结构。index会被完全使用,就像没有任何复制。
      • method # 插值(填充)方式
      • fill_value # 在重新索引的过程中,需要引用缺失值时使用的替代值。
      • limit # 前向或后向填充时的最大填充量
      • level # 在MultiIndex的指定级别上匹配简单索引,否则选取其子集。
      • copy # 默认为True,无论如何复制,如果为False,则新旧相等就不复制。
     

    2 丢弃指定轴上的项

    • 丢弃某条轴上的一个或多个项很简单,只要有一个索引数组或列表即可。由于需要执行一些数据整理和集合逻辑,所以drop方法返回的是一个在指定轴上删除了指定值的新对象。
    obj = Series(np.arange(5.),index = ['a','b','c','d','e','f'])new_obj = obj.drop('c')
    • 对于DataFrame,可以删除任意轴上的索引值。
    data.drop('one',axis = 0)data.drop(['one','two'],axis = 1)

    3 索引、选取、过滤

    • Series索引的工作方式类似于Numpy数组的索引,只不过Series的索引值不只是整数。
    obj = Series(np.arange(5.),index = ['a','b','c','d','e','f'])obj['b':'c']obj['b':'c'] = 5
    • 对DataFrame的索引其实就是获取一个或多个列。
    data['one']data[['one','two']]data[:2]  #行切片索引选取data[data['three'] > 5]   #布尔型数组选取行data < 5data[data < 5] = 0
    • 为了在DataFrame的行上进行标签索引,引入专门的索引字段ix,可以通过Numpy式的标记法以及轴标签从DataFrame中选取行和列的子集,是一种重新索引的简单手段。
    data.ix['',['','']]   #先行后列data.ix[['',''],[1,0,3]]   #先行后列data.ix[[data.three > 5],[:2]]
    • 对pandas对象中的数据的选取和重排方式有很多。在使用层次化索引时还能用到一些别的方法。
    • DataFrame的索引选项
      • obj.ix[:,val] # 选取单个列或列子集
      • obj.ix[val1,val2] # 同时选取行和列
      • reindex方法 # 将一个或多个轴匹配到新索引
      • xs方法 # 根据标签选取单行或单列,并返回一个Series
      • icol、irow方法 # 根据整数位置选取单列或当行,并返回一个Seires
      • get_value、set_value方法 # 根据行标签和列标签选取单个值。get_value是选取,set_value是设置。

    4 算术运算和数据对齐

    • pandas最重要的一个功能是,它可以对不同索引对象进行算术运算。在将对象相加时,如果存在不同的索引对,则结果的索引就是该索引对的并集。
    • 自动的数据对齐操作在不重叠的索引处引入NA值,缺失值会在算术运算中广播。
    • 对于DataFrame,自动对齐会同时发生在行和列上。
    1)在算术方法中填充值
    • 在对不同索引的对象进行算术运算时,可能希望在一个对象中某个轴镖旗南在另一个对象中找不到时填充一个特殊值(比如0)。
    df1 + df2df1.add(df2,fill_value = 0)df1.reindex(columns = df2.columns,fill_value = 0)
    • 灵活的算术方法
      • add # +
      • sub # -
      • div # /
      • mul # *
    2)DataFrame和Series之间的运算
    • 默认情况下,DataFrame和Series之间的算术运算会将Series的索引匹配到DataFrame的列,然后沿着行一直向下广播。

    5 函数应用和映射

    • Numpy的ufuncs(元素级数组方法)也可用于操作pandas对象。
    • 将函数应用到由各列或行所形成的一维数组上。DataFrame的apply方法可以实现此功能。
    f = lambda x : x.max() - x.min()frame.apply(f)frame.apply(f,axis = 1)
    • 元素级的Python函数也可以用。使用applymap函数可以得到frame中各个浮点值的格式化字符串。
      format = lambda x : '%.2f' %xframe.applymap(format)
    • Series有一个应用于元素级函数的map方法

      frame['e'].map(format)

    6 排序和排名

    1)排序
    • 按条件对数据集排序(sorting)是一种重要的内置运算。对行或列索引排序,可使用sort_index方法,返回一个已排序的新对象。
      frame.sort_index()frame.sort_idnex(axis = 1)   #根据任意轴上的索引就行排序frame.sort_index(axis = 1,ascending = False)   #数据默认是按升序排序的,也可设置降序排序。
    • 对于Series,若按值进行排序,可使用其order方法:obj.order()
    • 在排序时,任何缺失值默认都会被放到Series的末尾。
    • 对于DataFrame,通过将一个或多个列的名字传递给by选项可对一个或多个列进行排序。
    frame.sort_index(by = 'a')frame.sort_index(by = ['a','b'])
    2)排名
    • 排名(ranking)跟排序关系密切,且它会增设一个排名值(从1开始,一直到数组中有效数据的数量)。与numpy.argsort间接排序索引差不多,只不过可以通过某种规则破坏平级关系。
    • rank方法通过“为各组分配一个平均排名”的方式破坏平级关系
      • obj.rank() # 直接排名
      • obj.rank(method = ‘first’) # 根据值在原数据中出现的顺序给出排名
      • obj,rank(ascendiing = False, method = ‘max’) # 降序排名
    • 排名时用于破坏平级关系的method选项:
      • ‘average’ # 在相等分组中,为各个值分配平均排名
      • min # 使用整个分组的最小排名
      • max # 使用整个分组的最小排名
      • first # 按值在原数据中的出现顺序排名
    7 带有重复值的轴索引
    • 虽然pandas函数如(reindex)等都要求标签唯一,但这并不强制。
    • 索引的is_unique属性可以显示索引对应的值是否唯一。
    • 对于重复值得索引,数据选择返回的结果不同。如果索引对应单个值,返回标量值;如果索引对应多个值,返回一个Series。

    由于文章篇幅限制,今天先分享这些,如果您感兴趣后半部分可以期待下次的分享:

    四-汇总和计算描述统计

    五-处理缺失数据

    六-层次化索引

    七-其他有关pandas的话题

    全文完,感谢您的耐心阅读

    请顺手点个“在看”吧~

    ▼ 往期精彩回顾 ▼

    b6b07bbf5ab2f65ed926ce4f1d5c2d1c.png

    d5c9b112abf21484d07570603d2a549f.png

    展开全文
  • 作者:Paul编者按pandas作为python中非常重要的数据处理工具,它提供了很多灵活的数学和统计方法。在数据处理中,经常需要对数据进行索引的转换,以适应不同的统计和作图的需要;另外在许多数据分析工作中,缺失数据...

    55bc794ee409b9c978741714512d349f.png

    作者:Paul

    编者按

    pandas作为python中非常重要的数据处理工具,它提供了很多灵活的数学和统计方法。在数据处理中,经常需要对数据进行索引的转换,以适应不同的统计和作图的需要;另外在许多数据分析工作中,缺失数据是经常发生的。因此,作为pandas系列文章的一部分,本文将重点关注pandas对数据索引、汇总和缺失数据的处理的相关方法。本文十分详细地列出了具体实例介绍了这些方法,十分建议各位对pandas学习感兴趣的同学下载代码亲自运行进行实际操作。

    pandas 索引对象

    pandas的索引负责管理轴标签和其他如轴名称等元数据。构建Series或DataFrame时,所用到的任何数组或其他序列的标签都会被转换成一个Index。

    Index对象是不可修改的(immutable),因此用户不能对其进行修改。不可修改性非常重要,因为这样才能使Index对象在多个数据结构之间安全共享。

    pandas中主要的index对象

    ● index:最泛化得Index对象,将轴标签为一个由Python对象组成的Numpy数组

    ● Int64Index:针对整数的特殊Index

    ● MultiIndex:层次化索引对象,表示单个轴上的多层索引,可以看做由原数组组成的数组

    ● DatetimeIndex:存储纳秒级时间戳

    ● PeriodIndex:针对Period数据的特殊Index.

    Index的方法和属性

    ● append:append连接另一个Index对象,产生一个新的Index

    ● diff:计算差集,并得到一个Index

    ● intersection:计算交集

    ● union:计算并集

    ● delete:删除索引i处的元素,并得到新的Index

    ● drop:删除传入的值,并得到新的索引值

    ● insert:将元素插入到索引a处,并得到新的Index

    ● unique:计算Index中唯一的数组

    实例如下

    998e7820bcbd058f10caa81ef00611a7.png

    首先建立一个Series对象,这里直接对index赋值。

    09a50ac94e5cea52f92372ce2c11e3ff.png

    或者可以用Index对象来建立index。

    be871b5eba9b0e0c99827d24a64c728f.png

    这里用来判断列和索引是否在DataFrame中存在。

    340e6e28990b316fba18367e0f3022b2.png

    Pandas 重新索引

    有时我们需要重新对pandas对象进行索引赋值。

    ● Series的reindex将创建一个适应新索引的新对象并根据新索引进行重排。当某个索引值不存在时,引入缺失值进行填充。

    ● 对于序列数据(如有时间标签的数据),重新索引时可能需要做一些插值处理。其中可以用method选项即可达到此目的。

    reindex函数的参数

    ● index:用作索引的新序列。即可以是Index实例,也可以是其他序列的python数据结构

    ● method:插值填充方式,ffill或bfill

    ● fill_value:在重新索引过程中,需要引入缺失值时使用的替代值

    ● limit:前向或后向填充时的最大填充量

    ● level:在MultiIndex的指定级别上匹配简单索引,否则选择其子集

    首先是简单的用reindex方法来重新指定索引:

    a659810d4ceb055f6ad88c122459829e.png

    b067253f7e5d3b93d62934c112455e00.png

    a0978c02d345b71e531622d2d9c75268.png

    464adfe667e3bf32957d18ab6f74bf88.png

    8df62f90e9476547d9e2470acd8324c5.png

    5ace76d7dbf696183d713e601bf26049.png

    24ee2de5f4733b2ca1170f1a19dfbdd6.png

    daccd716f417d573c9cae9aa099db1d1.png

    丢弃/删除指定的行或者列

    删除某一列或者行上的一个或多个项很容易,只需要这些数据的索引组成的数组或列表即可。由于需要执行一些数据整理和集合逻辑,所以drop方法返回的是一个在指定轴上删除了指定值的新对象:

    971798ae2d2f5a15b97215dffe781428.png

    89bd9aa994223e810032c934e97fd21d.png

    459722475fe374cc54a446d7ff8aa0f9.png

    Pandas 索引、选取和过滤

    ● Series索引的工作方式和NumPy数组的索引相似,只是Series的索引值不只是整数。

    ● 利用标签的切片运算与普通的Python切片运算不同,其末端是包含的(inclusive)。

    ● 对DataFrame进行索引其实就是获取一个或多个列

    ● 为了在DataFrame的行上进行标签索引,引入了专门的索引字段ix。

    DataFrame的索引选项

    ● obj[val]:选取DataFrame的单个列或一组列。

    ● obj.ix[val]:选取DataFrame的单个行或一组行

    7eb329d7657162f6e2413558b75c1670.png

    81da4e845a57b61bd39474afb2100bf3.png

    8ab8b7ba3cb6618f5a49b7c9bbda9c2e.png

    8f05107ea6eced85f74d341dbeab21d5.png

    e200122649d322d409803ca945987ae9.png

    53cbefbbe60b7c266a86c420aff0aceb.png

    Pandas 算术运算和数据对齐

    ● 对不同的索引对象进行算术运算

    ● 自动数据对齐在不重叠的索引处引入了NA值,缺失值会在算术运算过程中传播。

    ● 对于DataFrame,对齐操作会同时发生在行和列上。

    ● fill_value参数

    ● DataFrame和Series之间的运算

    f14f4f71afd5a251380ab1266b1f70f8.png

    20c6f419d9e2f424e5f3af87145c625c.png

    800a2756ad5e3a8490cbbb1039fb75f8.png

    82de50b1f10242b1ee5d8056312c12bb.png

    21f88d2f12508978217353794373bfec.png

    56074cb59af5443c76e8892acdb995a8.png

    f99ab844931e8afab5eb9f051e1d79a0.png

    a61ea7ba26029f755d73abf3159d5f7c.png

    Pandas 函数应用和映射

    ● numpy的ufuncs(元素级数组方法)

    ● DataFrame的apply方法

    ● 对象的applymap方法(因为Series有一个应用于元素级的map方法)

    a055464877e2a182d6b443aaecae53a2.png

    4e0db8d18cf952dda77892c3823ecd20.png

    c425fff19f91613c49aaeba666925abc.png

    Pandas 排序和排名

    ● 对行或列索引进行排序

    ● 对于DataFrame,根据任意一个轴上的索引进行排序

    ● 可以指定升序降序

    ● 按值排序

    ● 对于DataFrame,可以指定按值排序的列

    ● rank函数

    ab418e7ee1e6ae936df5d5f9b4d2860b.png

    4101dcef7459621d1b2a36683c8b01b2.png

    f380bb2759ac7dfa6932776daf25fe41.png

    e65130635256a8bd8a08446571f69acc.png

    cade3cd2559c0bc09d3b03cfaaf9728b.png

    Pandas 带有重复值的索引

    ● 对于重复索引,返回Series,对应单个值的索引则返回标量。

    9b204efd55ae4e2e3e3cf112e770a733.png

    56a463226cc60d67c8af87b5ddd97a33.png

    Pandas 汇总和计算描述统计

    ● 常用方法选项

    ♢ axis:指定轴,DataFrame的行用0,列用1

    ♢ skipna:排除缺失值,默认值为True

    ♢ level:如果轴是层次化索引的,则根据level选取分组

    Pandas 常用描述和汇总统计函数
    count:非NA值得数量
    describe:针对Series或者各DataFrame列计算汇总统计
    min,max:计算最小值和最大值
    argmin,argmax:计算能够获取到的最小值和最大值的索引位置
    idxmin,idxmax:计算能够获取到的最小值和最大值的索引值
    sum:值的总和
    mean:值的平均数
    median:值得算术中位数
    mad:根据平均值计算平均绝对离差

    ● 数值型和非数值型的区别

    ● NA值被自动排查,除非通过skipna选项

    fef7aba21d08b8166210af361a49026c.png

    a986fa2ebcc15e6d5b6a2f229fda2a56.png

    4f225cfc7f581c59af385d4d76f38cfd.png

    5b6df4d9f849154f0e25fd7506a84519.png

    a7918838a359479dd78b0438d1bdf007.png

    Pandas 汇总和计算描述统计 相关系数与协方差

    ● 相关系数:相关系数是用以反映变量之间相关关系密切程度的统计指标。(百度百科)

    ● 协方差:从直观上来看,协方差表示的是两个变量总体误差的期望。如果两个变量的变化趋势一致,也就是说如果其中一个大于自身的期望值时另外一个也大于自身的期望值,那么两个变量之间的协方差就是正值;如果两个变量的变化趋势相反,即其中一个变量大于自身的期望值时另外一个却小于自身的期望值,那么两个变量之间的协方差就是负值。

    Pandas 汇总和计算描述统计 唯一值以及成员资格

    常用方法

    ● is_in:计算一个表示Series各值是否包含于传入的值序列中的布尔型数组

    ● unique:计算Series中唯一值数组,按发现的顺序返回

    ● value_counts:返回一个Series,其索引为唯一值,其值为频率,按计算数值降序排列

    1eee8ff5fe4c642231a1a9e3af0e2d33.png

    085288042ba29037ab349be435509370.png

    63bd11a7ca80430aa9c814931123cd65.png

    Pandas 处理缺失数据

    ● NA处理方法

    ♢ dropna:根据各标签的值中是否存在缺少数据du

    ♢ fillba:样本值的标准差

    ♢ isnull:样本值的偏度

    ● NaN(Not a Number)表示浮点数和非浮点数组中的缺失数据

    ● None也被当作NA处理

    14bae535ea2ff70ad7e5295cba0439ff.png

    Pandas 滤除缺失数据

    ● dropna

    ● 布尔索引

    ● DatFrame默认丢弃任何含有缺失值的行

    ● how参数控制行为,axis参数选择轴,thresh参数控制留下的数量

    03db4009bde4c48051ab2e7dcd37a1b5.png

    bbb5f32ff0b2f7cd1f4a53b67b31eef0.png

    0b64a8033c421c4861ba7c786ff58c39.png

    Pandas 填充缺失数据

    ● fillna

    ● inplace参数控制返回新对象还是就地修改

    fb794b4e085f3d94f09ca3d7858749dc.png

    b679c1ba90e4e95ff93d17ebaeeb7663.png

    01410c60bc95c685a295d949513d1f9c.png

    4b1dc205f2a10518d6be7a5ce279f611.png

    f51438620073fb9b3994f4ae9278a011.png

    1ee5af6bcd6c0d57d0a0f70e4ab213ae.png

    Pandas 层次化索引

    ● 使你能在一个轴上拥有多个(两个以上)索引级别。抽象的说,它使你能以低纬度形式处理高维度数据。

    ● 通过stack与unstack变换DataFrame

    f5c402c59574aab8aca9022c10f7eece.png

    2759df9d891a46909279fe9b68e5fc71.png

    e9bc81372fa7011cc88dd444401edac0.png

    f2391f4a27a66467a24743011c1ce733.png

    b6f0edef485b2170bf12569463215bf4.png

    重新分级顺序

    ● 索引交换

    ● 索引重新排序

    fc123eb74619fbbfaab0b2809df3c872.png

    020776bc73399bd1b2de1ea568813698.png

    根据级别汇总统计

    ● 指定索引级别和轴

    c35712aec884c7f0770f27bf53d77409.png

    层次化索引 使用DataFrame的列

    ● 将指定列变为索引

    ● 移除或保留对象

    ● reset_index恢复

    d27c1876d0da696f4ff4d6bff074febb.png

    8fe9b26cc1aa5e5b0c79b46a84e2eed2.png

    整数索引

    ● 歧义的产生

    ● 可靠的,不考虑索引类型的,基于位置的索引。

    b76a2e0bba7502cd93d56a870b2d6c03.png

    5ac087f0974576008ad817d38f2d786e.png

    面板(Pannel)数据

    通过三维ndarray创建pannel对象

    ● 通过ix[...]选取需要的数据

    ● 访问顺序:item -> major -> minor

    ● 通过stack展现面板数据

    06001e5e606fc6d6489cd6226cf604ba.png

    参考文献:

    1.pandas toolkit

    2.pandas官方文档:

    https://pandas.pydata.org/pandas-docs/stable/index.html

    展开全文
  • pandas条件筛选

    2021-09-01 09:27:21
    目录 1、startswith 2、contains 1、startswith 使用情况:只知道某列的部分值,如何将全部包含这部分的数据提取出来; ...可以考虑正则表达式,但是觉得那种比较麻烦;...想到了startswith('值'),查找以HLA开头的...
  • Pandas Dataframe 简述按条件筛选行

    千次阅读 2022-02-17 16:06:57
    Pandas Dataframe 简述按条件筛选行
  • 分位数计算原理参见《python–pandas 分位数》 下面直接使用pandas的quantile方法 1、给个例子 import pandas as pd df = pd.DataFrame({'a':[3,3,3,3,3,3,3]}) sum(df["a"] == 3) Out[1]: 7 df['a'].quantile(0.9) ...
  • pandas】提取符合条件

    千次阅读 2020-05-22 11:35:21
    在使用多个条件进行过滤时用&符号连接多个条件,且务必确保每个条件用括号括起来,否则会出错 TypeError: cannot compare a dtyped [object] array with a scalar of type [bool] 例如,下面用两个条件进行...
  • 在读取数据的时候发现,想把数据中第六列含问号的数据挑出来 ...以上这篇pandas实现将dataframe满足某一条件的值选出就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持软件开发网。
  • pandas 选择满足特定条件

    千次阅读 2021-04-08 10:37:24
    pandas 选择满足特定条件 建立example 的 pandas data frame: import pandas as pd dataframe=pd.DataFrame({"a":[1,2,3],"b":["aaa","bbb","ccc"]}) #选取 属性“a” 中 大于1的: dataframe[dataframe....
  • 然后就是那个name是在表头第一加入这些字符吗? []...
  • 然后删除B列重复的数据,keep参数是只保留第一个,因为是降序排序,第一个B列的C列数据相对于其他重复的C列数据是最大的(有点绕口) 参考: 利用pandas进行条件筛选和组合筛选 - beyondChan - 博客园 Python ...
  • pandas删除不符合条件

    千次阅读 2021-08-19 11:16:12
    1.过滤不符合条件 1)过滤某列不符合长度的字符串 # 第一种方法 df=df[df['column name'].map(len) < 2] # 第二种方法 df=df[[(len(x) < 2) for x in df['column name']]] 2)过滤其他条件 # 第一种方法 ...
  • import pandas hospital = pandas.read_...# 筛多个数据带条件的 sets = hospital[ (hospital['NEAR_FID'] != 1) & (hospital['NEAR_FID'] != 2) & (hospital['NEAR_FID'] != 3) ] # 迭代每一 f.
  • import pandas as pd from pandas import DataFrame ,Series A = Series(list('abc')).sample( 10, replace= True) B = Series(range(1,4)).sample(10, replace= True) #C = Series(range(1,1...
  • pandas 根据筛选条件对指定excel列进行筛选导入需要筛选的excel和筛选条件筛选的表格A思路结果 这两天老师要求筛选一下最近几年学院发表的文章,从图书馆那要了份数据量较大的excel,将该excel分成学生文章、老师...
  • pandas通过list筛选行

    千次阅读 2020-09-17 21:21:35
    有一个需求不知道大家有没有遇到过,一个list中存了很多个值,我们需要提取出在这个列表中出现的值的所有,比如: 这张表中有node0_id和node1_id,如果我们有一部分id在一个列表中,查找到所有和这个列表中出现的...
  • 当然,这里的筛选条件可以根据用户需要自由调整,代码如下: # -*- coding: utf-8 -*- """ Created on Wed Nov 29 10:46:31 2017 @author: wq """ import pandas as pd #input.csv是那个大文件,有很多很多 df1 =...
  • Python pandas 根据指定条件筛选数据

    千次阅读 2021-03-16 14:15:56
    1、构造dataframe import pandas as pd import numpy as np df=pd.DataFrame(np.arange(16).reshape(4,4),columns=["sh","bj","sz","gz"],index=["one","two","three",...法二:函数筛选,适用于比较复杂的条件筛选,函
  • import pandas as pd dt = pd.read_csv(r'C:\Users\wglink\Desktop\out.csv',encoding='gbk').astype(str) citylist = dt['cityname'].drop_duplicates().tolist() for i in citylist: df = dt[(dt['cityname']==i...
  • pandas 同时加条件筛选和赋值

    千次阅读 2020-09-29 21:30:05
    import pandas as pd import os os.chdir(r'C:\Users\Hans\Desktop\data_analysis\test_data') df = pd.read_csv('reslut.csv',encoding='gbk') df.head() 日期 收盘 开盘 高 低 百分比变化量 ...
  • pandas 满足多条件的某列求和

    千次阅读 2020-05-27 23:37:06
    import pandas as pd import csv import random # train_msg = pd.read_csv('../../txCTR/train_msg.csv') # train_msg = train_msg.sort_values(by='user_id', ascending=True) # 按照特定列排序,如果没有重新赋值...
  • 下面小编就为大家分享一篇pandas系列之DataFrame 行列数据筛选实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 满足多个判断条件。使用 & 对判断语句进行合并。 import pandas as pd import numpy as np df = pd.DataFrame(np.arange(16).reshape(4, 4), index=pd.date_range('20200101', periods=4), columns=list...
  • python pandas条件筛选

    千次阅读 2021-05-25 14:20:57
    我们在使用pandas操作表格时,通常会使用的筛选功能,但我在网上查找了很多资料,pandas貌似没有响应的方法,因此我自己写了一个方法,代码为: import pandas as pd def screen(df,cd): '''表筛选 df:pd....
  • pandas 筛选excel文件并保存新表

    千次阅读 2022-02-10 20:00:57
    今天处理了一个大的excel文件,从中筛选符合条件的数据,excel工具只能筛选两个条件太局限了,就用pandas处理了一下,也是学到了很多东西,在这里记录一下,方便查阅,如果有什么写的不对,不好的地方,希望大佬指正...
  • pandas条件筛选数据

    万次阅读 多人点赞 2019-04-08 19:39:58
    pandas中对DataFrame筛选数据的方法有很多的,以后会后续进行补充,这里只整理遇到错误的情况。 1.使用布尔型DataFrame对数据进行筛选 使用一个条件对数据进行筛选,代码类似如下: num_red=flags[flags['red']=...
  • 这两天老师要求筛选一下最近几年学院发表的文章,从图书馆那要了份数据量...导入需要筛选的excel和筛选条件 import pandas as pd df = pd.read_excel('D:/py_project/datafenxi/scut.xls',sheet_name='savedrecs'...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,420
精华内容 968
关键字:

pandas筛选符合条件的行