共计 1245 个字符,预计需要花费 4 分钟才能阅读完成。
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
1. 逻辑运算
这里要举的例子就是开篇我提到的那个。
这里是拿了数值特征来举例,凡是可以直接拿来比较的都可以,所以字符串也是可以的。下面举例就是字符串的比较
2. 多个逻辑筛选
之前的例子都是简单的一个条件,既然可以一个条件,那么两个甚至多个条件也是不在话下。
上面一定要注意,两个条件一定要使用括号括起来,不然是会报错的。
“&” 代表逻辑与, “|” 代表逻辑或
3. Isin
这个函数判断当前的数据是不是在一个列表里。
4. Str accessor
这个我觉得就是把一些string操作的方法集成到这个api当中去。
5. 取反(~)
说白了就是对你给出的筛选条件取对立的结果,比如你要选 西瓜小于等于2斤的,那么取反之后选的是大于2斤的。
6. Query
说实话这个方法我用的很少,之前的介绍几个方法是我经常用的。这个方法看起来就是类sql实现的方式,既然是dataframe使用sql查询的方式来搜索数据。这一单在用spark处理dataframe经常使用。
7. Nlargest or nsmallest
看这个名字盲猜意思就是取n个大的或者n个小的数据
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.
之前也说了iloc与loc之间的区别,但是如果你的index是数值的话,此时二者之间没有什么差异。但是也要索引条件的开闭区间,详见下图:
如果真要区别开来的话,那么就是在index 不为数值的时候
df.index = ['a','b','c','d','e','f','g']