pandas有意思的过滤方式

745次阅读
没有评论

Pandas做一些数据分析还是很有用的,在数据量不大的时候,配合sklearn还可以做一些算法方面的验证。数据筛选是常见的取数方法,有些经常用的比如

df=df[df['col1']>1]

上面就是一个简单的数据过滤方式,筛选col1列大于1的数据。但是也有些“奇奇怪怪的” api 挺有意思的。本文就是列举常见的和不常见的过滤方式。

import numpy as np
import pandas as pd

Let’s create a sample dataframe for the examples.

df = pd.DataFrame({'name':['Jane','John','Ashley','Mike','Emily','Jack','Catlin'],
'ctg':['A','A','C','B','B','C','B'],
'val':np.random.random(7).round(2),
'val2':np.random.randint(1,10, size=7)})
df

pandas有意思的过滤方式

1. 逻辑运算

这里要举的例子就是开篇我提到的那个。

pandas有意思的过滤方式

这里是拿了数值特征来举例,凡是可以直接拿来比较的都可以,所以字符串也是可以的。下面举例就是字符串的比较

pandas有意思的过滤方式

2. 多个逻辑筛选

之前的例子都是简单的一个条件,既然可以一个条件,那么两个甚至多个条件也是不在话下。

pandas有意思的过滤方式

上面一定要注意,两个条件一定要使用括号括起来,不然是会报错的。

“&” 代表逻辑与, “|” 代表逻辑或

pandas有意思的过滤方式

3. Isin

这个函数判断当前的数据是不是在一个列表里。

pandas有意思的过滤方式

4. Str accessor

这个我觉得就是把一些string操作的方法集成到这个api当中去。

pandas有意思的过滤方式

5. 取反(~)

说白了就是对你给出的筛选条件取对立的结果,比如你要选 西瓜小于等于2斤的,那么取反之后选的是大于2斤的。

pandas有意思的过滤方式

6. Query

说实话这个方法我用的很少,之前的介绍几个方法是我经常用的。这个方法看起来就是类sql实现的方式,既然是dataframe使用sql查询的方式来搜索数据。这一单在用spark处理dataframe经常使用。

pandas有意思的过滤方式

7. Nlargest or nsmallest

看这个名字盲猜意思就是取n个大的或者n个小的数据

pandas有意思的过滤方式

8. Loc and iloc

  • loc: select rows or columns using labels
  • iloc: select rows or columns using indices

简单一点记住就是iloc穿参是数值,这就是区别于loc的一个地方。

Thus, they can be used for filtering. However, we can only select a particular part of the dataframe without specifying a condition.

pandas有意思的过滤方式

之前也说了iloc与loc之间的区别,但是如果你的index是数值的话,此时二者之间没有什么差异。但是也要索引条件的开闭区间,详见下图:

pandas有意思的过滤方式

如果真要区别开来的话,那么就是在index 不为数值的时候

df.index = ['a','b','c','d','e','f','g']

pandas有意思的过滤方式

pandas有意思的过滤方式

admin
版权声明:本站原创文章,由 admin 2022-01-05发表,共计1245字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)