精华内容
下载资源
问答
  • dataframe按条件筛选行
    2021-03-26 16:45:52

    https://blog.csdn.net/EWBA_GIS_RS_ER/article/details/98947688?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522161674649616780274145631%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=161674649616780274145631&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_v2~rank_v29-12-98947688.pc_search_result_cache&utm_term=%E6%A0%B9%E6%8D%AE%E5%88%97%E7%9A%84%E6%9D%A1%E4%BB%B6%E9%80%89%E5%8F%96%E8%A1%8C&spm=1018.2226.3001.4187

    更多相关内容
  • dataframe 按条件筛选行

    千次阅读 2021-01-10 05:59:09
    筛选和排序是Excel中使用频率最多的功能,通过这个功能可以很方便的对数据表中的数据使用指定的条件进行筛选和计算,以获得需要的结果。在Pandas中通过.sort和.loc函数也可以实现这两 个功能。.sort函数可以实现对...

    使用Pandas对数据进行筛选和排序

     

    转自:http://bluewhale.cc/2016-08-06/use-pandas-filter-and-sort.html

     

    筛选和排序是Excel中使用频率最多的功能,通过这个功能可以很方便的对数据表中的数据使用指定的条件进行筛选和计算,以获得需要的结果。在Pandas中通过.sort和.loc函数也可以实现这两 个功能。.sort函数可以实现对数据表的排序操作,.loc函数可以实现对数据表的筛选操作。本篇文章将介绍如果通过Pandas的这两个函数完成Excel中的筛选和排序操作。

    Excel筛选和排序

    首选导入需要使用的Pandas库和numpy库,读取并创建数据表,将数据表命名为lc。

     
    1. import pandas as pd

    2. import numpy as np

    3. lc=pd.DataFrame(pd.read_csv('LoanStats3a.csv',header=1))

    创建数据表后,开始使用Pandas的.sort函数对数据表进行排序操作,下面是Pandas官方对.sort函数语法和使用方法的说明。.sort函数主要包含6个参数,columns为要进行排序的列名称, ascending为排序的方式true为升序,False为降序,默认为true。axis为排序的轴,0表示index,1表示columns,当对数据列进行排序时,axis必须设置为0。inplace默认为False,表示对数据 表进行排序,不创建新实例。Kind可选择排序的方式,如快速排序等。na_position对NaN值的处理方式,可以选择first和last两种方式,默认为last,也就是将NaN值放在排序的结尾。

    sort官方说明

    在了解了.sort函数的语法和使用方法后,我们开始使用这个函数对数据进行排序操作,数据源来自Lending Club 2017-2011年的公开数据。首先对单列数据进行排序。

    对单列数据进行排序

    升序
    单列数据的排序的方法很简单,按照.sort函数中的介绍,写清楚要排序的数据表名称,以及要进行排序的列名称即可。具体的代码和排序结果如下所示,其中lc是前面我们读取并创建的数据表名称,loan_amnt是要进行排序的列名称。这里我们对lc数据表按loan_amnt列进行升序排列。这里需要说明的是ascending参数的默认值是True,也就是升序。因此下面的两种写法效果是一样的 。

     
    1. lc.sort(["loan_amnt"])

    2. lc.sort(["loan_amnt"],ascending=True)

    对数据排序_升序

    降序
    将ascending参数的值改为False就完成对数据表的降序排列工作。与升序排列的数据表相比可以发现升序排列将loan_amnt列的最小值放在了前面,因此我们可以判断loan_amnt的最小金额为500,与之相反,降序排列将最大值放在了前面,因此loan_amnt的最大金额应该为35000。这里我们没有设置na_position参数的值,因此按默认情况loan_amnt列的NaN值在排序的结尾显示。以下显示了降序排列的代码和结果。

    lc.sort(["loan_amnt"],ascending=False)
    

    对数据排序_降序

    对多列数据进行排序

    除了对单列数据进行排序以外,.sort函数还可以对多列数据进行排序操作。下面我们分别对loan_amnt和int_rate字段进行降序排列,以下是具体的代码和排序结果,与单列数据排序的代码相比,这里只增加了一个新的列名称int_rate。

    lc.sort(["loan_amnt","int_rate"],ascending=False)
    

    对多列数据进行排序1

    我们将需要排序的两个列名称互换位置,再次执行降序排列操作。观察两次的排序结果可以发现,这次的结果与之前的结果有一些差异。Loan_amnt字段的排序结果有些混乱,有些较小的值排在了较大值的前面。这是因为第一次排序时loan_amnt是第一排序字段,int_rate是第二排序字段。两个字段交换位置第二次排序后,int_rate变成了第一排序字段,loan_amnt变成了第二排序字段 。

    lc.sort(["int_rate","loan_amnt"],ascending=False)
    

    对多列数据进行排序2
    获取金额最小前10项

    在完成了对数据表排序的操作后,我们可以对数据表进行简单的筛选,例如获取loan_amnt金额最小的前10名数据。具体的方法是先对lc数据表按loan_amnt升序排列,然后取前10名的数据。NaN值默认在排序结果的结尾显示。以下是具体代码和结果。与前面单列升序排列的代码相比只在结尾增加了.head()函数。

    lc.sort(["loan_amnt"],ascending=True).head(10)
    

    筛选最小前10项

    获取金额最大前10项

    获取金额最大前10项的代码与获取金额最小前10项略有差异,本来我们只需要复制前面的代码,然后将.head()函数改为tail()函数即可,但由于NaN值在排序的尾部,因此,我们将lc数据表按loan_amnt按降序排列,并取排名前10的数据。当然这并不是唯一的方法,我们还可以通过放弃NaN值的排序或者将NaN值在排序前部显示来解决这个问题。以下是具体的代码和执行结果。

    lc.sort(["loan_amnt"],ascending=False).head(10)
    

    筛选最大前10项
    介绍完排序功能后再来看下筛选,在筛选功能上Pandas使用的是.loc函数。以下是Pandas官方对.loc函数的语法和使用方法的说明。

    loc官方说明

    单列数据筛选并排序

    我们使用.loc对lc数据表中grade列为B值的数据条目进行了筛选操作,具体的代码和筛选结果如下。在代码中lc.loc[]是.loc函数的语法,lc[“grade”] == “B”是具体的筛选条件。由于数据表较大,因此在最后使用了head()函数只显示前5行筛选结果。从筛选结果来看grade列的值都为B。

    lc.loc[lc["grade"] == "B"].head()
    

    单列数据筛选_包含

    筛选条件除了”等于”(==)以外,还可以使用”不等于”(!=)来排除列中特定的值。我们使用”不等于”来筛选grade列中不是B值的数据条目。以下是具体的代码和筛选结果,可以看到筛选结果中的grade列里已经不包含B值了。

    lc.loc[lc["grade"] != "B"].head()
    

    单列数据筛选_排除

    很多时候我们只关注数据表中某几列的数据,这时可以在前面筛选代码的基础上增加要显示的列名称和显示顺序。下面是具体的代码和筛选结果。代码部分与之前相比增加了要显示的列名称 [“member_id”, “loan_amnt”, “grade”]。其余部分均没有改变。在筛选结果的数据表中可以看到仅显示了我们在代码中列出的三列。

    lc.loc[lc["grade"] == "B", ["member_id", "loan_amnt", "grade"]].head()
    

    单列数据筛选_包含并限定列

    若要对筛选结果进行排序可以联合使用.loc函数和.sort函数。下面的代码中首先对数据表的grade列进行筛选,选择所有值为B的数据,并限定了结果中要显示的三列的名称。最后对筛选出的结果按loan_amnt的金额进行升序排序。

    lc.loc[lc["grade"] == "B", ["member_id", "loan_amnt", "grade"]].sort(["loan_amnt"])
    

    单列数据筛选_包含并限定列升序

    在代码后面增加ascending参数,并将值设置为False就可实现对筛选结果的降序排列。以下为具体的代码和筛选及排序结果。

    lc.loc[lc["grade"] != "B", ["member_id", "loan_amnt", "grade"]].sort(["loan_amnt"],ascending=False)
    

    单列数据筛选_排除并限定列降序

    多列数据筛选并排序

    Pandas的.loc参数还可以同时对多列数据进行筛选,并且支持不同筛选条件逻辑组合。常用的筛选条件包括”等于”(==)”,不等于”(!),”大于”(>)”,小于”(<)”,大于等于”(>=)” ,小于等于”(<=)等等。逻辑组合包括”与”()和”或”()。下面我们将通过3条多列数据筛选代码逐一进行介绍。

    第一条代码使用”与”逻辑,筛选出了grade等于B,并且loan_amnt金额大于5000的数据。并限定了显示的列名称。从筛选结果中可以看出grade列的值都是B,loan_amnt的金额均大于5000。

    lc.loc[(lc["grade"] == "B") & (lc["loan_amnt"]>5000), ["member_id", "term" , "loan_amnt", "grade","sub_grade", "int_rate"]].head()
    

    多列数据筛选_与

    第二条代码也使用”与”逻辑,筛选出了grade不等于B,并且loan_status不等于Charged Off的数据,同时也限定了显示的列名称。从筛选结果中看grade列不包含B值,并且loan_status列不包含Charged Off值。

    lc.loc[(lc["grade"] != "B") & (lc["loan_status"] != "Charged Off"),["member_id", "term" , "loan_amnt", "grade", "sub_grade", "loan_status"]].head()
    

    多列数据筛选_与1

    第三条代码使用了”或”逻辑,筛选出了grade列值为B,或loan_amnt列金额大于5000的数据,同时也限定了显示的列名称。从筛选结果来看,grade列除了B值以外还保留了其他的值,而这些值在loan_amnt列的金额均大于5000。换句话说,一条数据只要grade列或loan_amnt列任意之一符合筛选条件,这条数据就会被显示。

    lc.loc[(lc["grade"] == "B") | (lc["loan_amnt"] > 5000), ["member_id", "term" , "loan_amnt", "grade","sub_grade", "int_rate"]].head()
    

    多列数据筛选_或

    多列筛选也可以进行排序,方法与单列筛选后排序基本一样,下面的代码对多列筛选后的结果按loan_amnt列进行升序排序。由于筛选条件中限定了loan_amnt列的值要大于5000,因此排序的结果从5020开始。

    lc.loc[(lc["grade"] == "B") & (lc["loan_amnt"] > 5000), ["member_id", "term" , "loan_amnt", "grade","sub_grade", "int_rate"]].sort(["loan_amnt"])
    

    多列数据筛选_或

    对多列筛选结果进行降序排序只需在前面升序排序代码的基础上增加ascending参数,并将值设定为False即可。下面是多列筛选后降序排序的代码和结果。

    lc.loc[(lc["grade"] == "B") & (lc["loan_amnt"] > 5000), ["member_id", "term" , "loan_amnt", "grade","sub_grade", "int_rate"]].sort(["loan_amnt"],ascending=False)
    

    多列数据筛选_与降序

    无论是”与”条件,还是”或”条件都可以在筛选后使用排序。下面代码是对使用了“或”逻辑条件的筛选结果进行降序排序的代码和结果。

    lc.loc[(lc["grade"] == "B") | (lc["loan_amnt"] > 5000), ["member_id", "term" , "loan_amnt", "grade","sub_grade", "int_rate"]].sort(["loan_amnt"],ascending=False)
    

    多列数据筛选_或降序

    Pandas中的排序和筛选基本介绍完了,在实际的分析工作中,筛选只是分析过程中的一个步骤,很多时候我们还需要对筛选后的结果进行汇总,例如求和,计数,或计算均值等等。也就是Excel中常用的sumifs和countifs函数。

    按筛选条件求和(sumif, sumifs)

    在单列筛选的代码后增加求和条件就相当于Excel中的sumif函数的功能。下面的代码在单列筛选的代码后增加了.loan_amnt.sum()的求和字段,表示对数据表中所有grade列值为B的loan_amnt金额求和。

    lc.loc[lc["grade"] == "B",].loan_amnt.sum()
    

    按筛选条件求和_等于
    除了包含条件外,也可以对排除某一条件的数据求和。下面的代码与之前的正好相反,对数据表中所有grade列值不为B的loan_amnt金额求和。

    lc.loc[lc["grade"] != "B",].loan_amnt.sum()
    

    按筛选条件求和__不等于

    增加一个筛选条件就变成了Excel中的sumifs函数的功能。下面的代码中分别使用了两个条件对数据表进行筛选,并对最后的loan_amnt金额进行求和。

    lc.loc[(lc["grade"] == "B") & (lc["loan_amnt"] > 5000)].loan_amnt.sum()
    

    按筛选条件求和_多条件

    按筛选条件计数(countif, countifs)

    将前面的.sum()函数换为.count()函数就变成了Excel中的countif函数的功能,下面的代码对数据表中grade列值为B的loan_amnt笔数进行计数。

    lc.loc[lc["grade"] == "B"].loan_amnt.count()
    

    按筛选条件计数_等于

    与前面代码相反,下面的代码对数据表中grade列值不为B的所有loan_amnt笔数进行计数。

    lc.loc[lc["grade"] != "B"].loan_amnt.count()
    

    按筛选条件计数_不等于

    增加筛选条件,变成了Excel中的countifs函数的功能,下面的代码对数据表中grade列值为B,并且loan_amnt金额额大于5000的loan_amnt笔数进行计数。

    lc.loc[(lc["grade"] == "B") & (lc["loan_amnt"] > 5000)].loan_amnt.count()
    

    按筛选条件计数_多条件

    按筛选条件计算均值(averageif, averageifs)

    有了sumifs和countifs,当然也少不了averageifs,在Pandas中.mean()是用来计算均值的函数,将.sum()和.count()替换为.mean()。就是pandas版的averageif和averageifs。下面的代码中计算了数据表中grade列值为B的loan_amnt金额均值。相当于Excel中的averageif函数的功能。

    lc.loc[lc["grade"] == "B"].loan_amnt.mean()
    

    按筛选条件计算均值_等于

    与前面的代码证号相反,下面的代码计算了数据表中所有grade列值不为B的loan_amnt金额均值。

    lc.loc[lc["grade"] != "B"].loan_amnt.mean()
    

    按筛选条件计算均值_不等于

    增加一个筛选条件变成了Excel中的averageifs,不过这里好像又有一些不同,Excel中的sumifs,countifs和averageifs的计算逻辑是满足满足所有指定条件时,才对这些单元格进行求和或计数。而在下面的代码中我们使用了或条件,就是说只要满足两个条件中的任意一个都会进行计算。

    lc.loc[(lc["grade"] == "B") | (lc["loan_amnt"] > 5000)].loan_amnt.mean()
    

    按筛选条件计算均值_多条件或

    按筛选条件获取最大值和最小值

    最后两个是Excel中没有的函数功能,就是对筛选后的数据表计算最大值和最小值。方法很简单,将之前的sum()和count()换成max()和min()函数即可。下面是具体的代码和结果。

    这条代码是计算数据表中grade列值为B的loan_amnt最大金额。

    lc.loc[lc["grade"] == "B"].loan_amnt.max()
    

    按筛选条件计算最大值

    这条代码是计算数据表中grade列值不为B的loan_amnt最小金额。

    lc.loc[lc["grade"] != "B"].loan_amnt.min()
    

    按筛选条件计算最小值

    以上这些也同样支持多条筛选后的计算,在此就不逐一列出了。

    —【所有文章及图片版权归 蓝鲸(王彦平)所有。欢迎转载,但请注明转自“蓝鲸网站分析博客”。】—



    Read more: http://bluewhale.cc/2016-08-06/use-pandas-filter-and-sort.html#ixzz4S2k7VseY

    展开全文
  • Pandas Dataframe 简述按条件筛选行

    千次阅读 2022-02-17 16:06:57
    Pandas Dataframe 简述按条件筛选行

    语法格式:

    举例:df[ df[ " 英语"] > 60]

    df如下

    1,查找英语成绩大于60的行。

    df = df[df["英语"] > 60]  # 英语成绩大于60的行
    print(df)

    2,查找数学成绩等于90的行

    df = df[df["数学"] == 90]   # 查找数学成绩等于90的行
    print(df)

    3,查找物理成绩大于60,且生物成绩大于80的行。(注意要带括号)

    df = df[(df["物理"] > 60) & (df["生物"] > 80)]  
    print(df)

    展开全文
  • 我们可以用Pandas库帮我们解决这个问题:具体使用看实例: import numpy as np import pandas as pd from time import time from IPython.display import display # 允许为DataFrame使用display() import visuals as...

    一般情况下我们从一堆数据中选择我们获取想要的数据会通过一下方式:

    (1)创建链表或数组;

    (2)用for 循环遍历所有数据,将想要的存入链表或数组。

    但是python中我们不需要这么做,我们可以用Pandas库帮我们解决这个问题:具体使用看实例:

    import numpy as np

    import pandas as pd

    from time import time

    from IPython.display import display # 允许为DataFrame使用display()

    import visuals as vs

    data = pd.read_csv("census.csv")

    n_records =len(data['income'])

    n=0

    m=0

    n_greater_50k = data[data['income'] == '>50K'].shape[0]#替换for循环

    n_at_most_50k = data[data['income'] == '<=50K'].shape[0]

    print "Total number of records: {}".format(n_records)

    print "Individuals making more than $50,000: {}".format(n_greater_50k)

    print "Individuals making at most $50,000: {}".format(n_at_most_50k)

    print "Percentage of individuals making more than $50,000: {:.2f}%".format(greater_percent)

    展开全文
  • R语言筛选dataframe数据(样本、Selecting Observations)、基于组合判断条件筛选数据
  • R语言对dataframe行数据进行筛选(row selection)、筛选数据、基于条件筛选数据
  • Python DataFrame 按条件筛选数据

    万次阅读 多人点赞 2019-05-15 20:26:00
    可以根据筛选条件查看某几列 pdata1[(pdata1[ ' time ' ] )&(pdata1[ ' time ' ] >= 25270)][[ ' x ' , ' y ' ]] 注意多个条件要加括号后在&或|。 转载于:...
  • Python Pandas中Dataframe对象,如何根据列值筛选满足条件,并且返回列的索引值,我们举栗子说明一下: 1.先创建一个dataframe变量df: df = pd.DataFrame(np.arange(16).reshape(4,4), #index = pd.date_...
  • 笔者在对爬取的51job工作数据分析时,对学历要求进行绘图,遇到了爬取数据类型错误的例子 1.查看数据 import pandas as pd data=pd.read_csv('test_...df=pd.DataFrame(data) print(df.shape) print(df.loc[:,'educa...
  • Pandas,筛选DataFrame.groupby()
  • Dataframe 按条件选取

    万次阅读 2018-08-22 17:05:30
    我们说excel好用,在处理大型数据表格的时候,excel可以非常方便地进行筛选。那么pandas是否有类似的功能呢?答案是肯定的。下面介绍的几个操作,返回的类型都是dataframe,因此可以进行嵌套操作,非常方便。   ...
  • pandas DataFrame按条件筛选或去重后,需要重新定义index,否则会出现index错误 看了那么多博客,真的没几个能写到点上的,查了半天,试了半天,结果就一句话搞定。 test_df = test_df.reset_index(drop=True) ...
  • Python之根据条件筛选特定

    千次阅读 2020-11-30 09:23:32
    一、选取几列组成新的dataframe:df = df[['A列列名', 'S列列名', 'H列列名']]二、选取某列'STATUS'里面元素为"ACTIVE"的,即删掉列STATUS元素不是ACTIVE的df = df[df['STATUS'] == "ACTIVE"](单项条件搜索,...
  • list = [0,1,6,7] df3 = df3.query('评分 in (0,1,6,7)')
  • pandas dataframe行条件筛选过滤

    千次阅读 2021-11-22 10:18:57
    满足多个判断条件。使用 & 对判断语句进行合并。 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...
  • dataFrame的多条件筛选

    千次阅读 2021-05-07 18:09:27
    import pandas as pd data[(data.var1==1)&(data.var2>10])
  • DataFrame条件筛选

    万次阅读 2019-05-16 14:06:39
    两种方法: 1.使用query()方法,也是自己最常用的方法,数据量大的时候较快,语法较为简单;...、== 的优先级要高于 and 和 or ,但是在DataFrame条件运算中并不是这样。在这栽了两次了。 ...
  • 日常的数据分析中,经常遇到需要根据各种不同的条件从数据集中筛选相应的数据记录,再进行提取、分析、替换、修改等操作。因此,筛选是数据分析中使用频率很高的功能。一般而言,通常是使用for循环在数据中进行筛选...
  • 这几天在处理数据,其中有遇到需要统计相同用户的某些数据,一开始采用直接暴力匹配,时间复杂度虽然为O(n^2),但因为数据量太多,判断条件花销较大,因而处理的非常慢。而后又将数据先排序,并设置条件判断,但这样...
  • Pandas下dataframe根据条件删除

    千次阅读 2020-10-13 09:56:24
    df = df.drop(df[(df['pred_id']==7) | (df['pred_id']==6)].index) #删除正常的 df['img'] = df['img'].apply(lambda x: 'kg_live_100w/' + x.split('/')[-1]) # 只保留图片名字
  • DataFrame中进行条件筛选或者去重后index将变得不连续,那么如何重设连续的index?转载请注明:【转】http://blog.csdn.net/htbeker/article/details/79417959
  • data = pd.read_excel(‘XX.xls’) datashaixuan = data[data[‘第一列列名’].isin(‘特定值’)]
  • 在读取数据的时候发现,想把数据中第六列含问号的数据挑出来 ...以上这篇pandas实现将dataframe满足某一条件的值选出就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持软件开发网。
  • pandas dataframe 根据特定值筛选行的方法 应用中偶尔用到筛选dataframe最近找到了个一个很好又自由的方法,df.isin()函数 data = df.read_csv(‘test.csv’) 筛选不包含0的 data = data[~ data[’col‘].isin(...
  • python DataFrame筛选符合特定条件

    万次阅读 多人点赞 2020-10-17 16:11:32
    获得a列中值为1的 data[data['a'].isin([1])] 获得a列中值为1或2的 data[data['a'].isin([1,2])] 获得a列中值大于1、小于2的 data[(data['a']<2)&(data['a']>1)]
  • pandas dataframe按条件取数特定/列值

    千次阅读 2021-06-24 09:02:23
    1.列取、索引/取、特定行列取 import numpy as np from pandas import DataFrame import pandas as pd df=DataFrame(np.arange(12).reshape((3,4)),index=['one','two','thr'],columns=list('abcd')) df...
  • 网上关于dataframe删除指定的博文较少,看到一篇不错的,转载一下,原文地址:https://blog.csdn.net/shuihupo/article/details/82842524 pandas删除指定 遇到清洗数据的问题,需要把某一列数据中,那些为指定...
  • dataframe时间筛选数据

    千次阅读 2020-07-15 13:10:06
    对原始数据集进行筛选操作,条件是:客户号、queryreason、querier三个相同的时候,开始计算querydate从大到小排序,14内出现的删除 功能描述 对数据集中具有相同key的记录,按照时间字段从大到小进行排序,然后从...
  • Python DataFrame条件筛选 使用&

    万次阅读 2018-08-10 18:28:30
    DF6 Out[42]: B C D 0 1 B 10.750 1 3 C 8.875 2 2 T 58.000 3 2 L 57.000 4 3 Y 46.000 DF6[(DF6.B&gt;1) &amp; (DF6.D &gt; 10)] Out[45]: B C D 2 2 T 58.0 3 2 L 5...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,065
精华内容 2,826
关键字:

dataframe按条件筛选行