数据选择不迷茫

数据选择不迷茫

作者: 莫烦 编辑: 莫烦 发布于: 2021-09-11

在海量的数据中,你如何挑选出符合你要求的数据呢?用肉眼一个个挑选筛选,别说上百亿的数据了,就算是一个上百的数据, 你都可能要挑个很久。Numpy 这时候就来拯救你了。不管是批量划分,还是按条件筛选,都能做到。

本节内容会包含下面这些功能:

单个选取

其实这里的单个选择,我想表达的意思是,单个单个的选择。下面的假设有三个同学,我要选其中的某个同学,就可以像 Python 中的 List 选择方法来选择。

np index

当然还有种方法,可以一次性选择多个,但实际上选择的逻辑还是一个个拎出来的逻辑。就像一个个从抽屉里拿出来的意思。后面我们还会介绍一批拿出来的概念(切片划分)。

二维或者多维数据也可以用上面的方法来选择数据,一个个拎出来。

总之,在上面的选取方式中,不管是几维数据,我们都可以在其不同维度上挑选那个维度上对应序号上的数值。而且还能一次从原数据上选取多个数据点。

切片划分

上面已经介绍到了一个个拎出来数据的方式,基本上可以总结成,索引到具体的数上,就能拎出这个数具体的值。而有时候你会不会觉得特别麻烦, 如果我要在 100 个数中,从第一个一直找到第 50 个。我要写成这样 a[1,2,3,4....50],这样太累赘了。Numpy 也考虑得非常周全,它有一个更取巧的方式。

np index

使用 : 就能让你跨着取数字,而且一次取一批。注意,在 Numpy 中:一次取一批和一个个拎起来,拎了一批,是不同的概念哦 一次取一批来的更快, 因为它不用去一个个查看,一个个数了。

在多维上,也可以进行切片划分。

条件筛选

上面选择一部分数据的方式比较没有选择性。什么叫有选择性呢?其实就是按照一定的筛选逻辑进行过滤,留下那些在数值上符合条件的数据。 而上面的方式,只能从位置上选择。举个例子你可能比较明白一些。

按位置选:请这队同学中,第 2 号到第 6 号的同学出列

按数条件:请这队同学中,身高高于 1.5 米的同学出列

两种方法不分好坏,区别在于你当前的使用场景。用合适的方法筛选数据就行。

上面选取的是 a 数据中,大于 7 的数据。我们再拆开来看,a[a>7] 这里面究竟发生了什么。

既然 condition 是一种 True/False, 那么只要我们得到一个 True/False 数据,我都能做筛选。这才是它筛选的底层逻辑了。

除了这种直接用[]的形式,在 Numpy 中,还有一个专用的函数来做数据筛选。这种筛选更强大,它还能做筛选结果的替换工作。 它可已将满足条件的位置变成你设定的数字。下面满足条件的,都改成 -1,不满足的,都还是 a 里面的数字。

或者,不仅是满足条件的 condition,不满足条件的,也能变成你期望的数字。

不光是数字哦,我还能让它和另外一个数据做条件上的整合哦,比如下面这样。如果满足 condition 要求,那么就会在对应的 True 位置放上 a 里的值,如果不满足 condition 要求,也就是在 condition 为 False 的地方放上 b 里对应位置的值。

所以 np.where() 函数真的十分强大,每每当我想要按条件选择、替换数据的时候,我脑海中,都是 np.where() 的身影。

总结

数据虽然有格式,但是如果要把数据用起来,还是得学会挑选和筛选。而今天介绍的单个、分段、条件筛选,都是数据工程师必备的一项技能。也是后续数据分析和机器学习的基石。


降低知识传递的门槛

莫烦经常从互联网上学习知识,开源分享的人是我学习的榜样。 他们的行为也改变了我对教育的态度: 降低知识传递的门槛免费 奉献我的所学正是受这种态度的影响。 【支持莫烦】 能让我感到认同,我也更有理由坚持下去。

我组建了微信群,欢迎大家加入,交流经验,提出问题,互相帮持。 扫码后,请一定备注"莫烦",否则我不会同意你的入群申请。

wechat

    Numpy 数据怪兽