Python,Numpy,Pandas…数据科学家必备排序技巧
通过df.sort_values(by = my_column)对Pandas DataFrame进行排序。有许多可用关键字参数。
按照相同的句法对Pandas系列进行排序。用Series时,不需要输入by关键字,因为列不多。 Pandas用到了Numpy计算法,动动手指即可轻松获得同等优化的排序选项。但是,Pandas操作需要更多的时间。 按单列排序时的默认设置是Numpy的quicksort。如果排序进度很慢,那么实际为内省排序的quicksort会变为堆排序。Pandas确保多列排序使用Numpy的mergesort。Numpy中的mergesort实际用的是Timsort和Radix排序算法。这些排序算法都很稳定,而且多数列排序中稳定排序是很有必要的。 使用Pandas需记住的关键内容:
在进行探索性数据分析时,常发现自己是用Series.value_counts()在Pandas DataFrame中对值进行求和排序的。这是一个代码片段,用于每列常用值的求和和排序。
Dask,实际上是用于大数据的Pandas,到2019年中期还没有实现并行排序,尽管大家一直在讨论这个。 对小数据集进行探索性数据分析,Pandas排序是个不错的选择。当数据很大,想要在GPU上并行搜索时,你也许会想到TensorFlow或PyTorch。 TensorFlow ![]() TensorFlow是最受欢迎的深度学习框架。以下是TensorFlow 2.0的简介。 tf.sort(my_tensor)返回tensor排序副本。可选参数有:
tf.sort在幕后使用top_k()方法。top_k使用CUB库的CUDA GPU促使并行性更容易实现。正如文档所述“CUB为CUDA编程模型的每一项程序都提供了最先进、可重复利用的软件组件。”TensorFlow通过CUB在GPU上使用基数排序。 为了使GPU能够满足TensorFlow 2.0,你需要!pip3 install tensorflow-gpu==2.0.0-beta1。我们会从下面的评论看到,如果你要进行排序,你可能想坚持tensorflow==2.0.0-beta1。 使用下面一小段代码来检查代码的每一行是否都能在CPU 或GPU中运行:
为了详述你想要使用GPU,使用下面代码:
使用 with tf.device('/CPU:0'):为了使用CPU。 假如在TensorFlow中工作,tf.sort()是非常直观的记忆和使用方法。只需记住direction = descending可转换排序顺序。 PyTorch ![]() torch.sort(my_tensor)返回tensor排序副本。可选参数有:
通过将.cuda()粘贴到张量的末尾来指定要使用GPU进行排序。
一些分析表明,如果任何大于100万行乘以100,000列的数据集要排序,PyTorch将通过Thrust利用分段式并行排序。 不幸的是,当我们试图通过Google Colab中的Numpy创建1.1M x 100K随机数据点时,发现内存已不足。然后尝试了416 MB RAM的GCP,依旧没有内存。 分段排序和位置排序是mergesort的高性能体现,处理非均匀随机数据。分段排序使我们能够并行排序许多长度可变数组。 https://moderngpu.github.io/segsort.html Thrust作为并行算法库,实现了GPU与多核CPU之间的联系。提供了排序原语,可自动选择最有效的执行方式。TensorFlow使用的CUB库会用来包装Thrust。PyTorch和TensorFlow在操作时GPU分类法相似 - 无论选择何种。 与TensorFlow一样,PyTorch的排序方法记起来相当容易:torch.sort()。唯一费脑子的是排序值的方向:TensorFlow使用direction,而PyTorch使用descending。 虽然用GPU进行排序对于非常大的数据集来说可能是一个很好的选择,但直接在SQL中对数据进行排序也是可以的。 SQL SQL中的排序通常非常快,特别是在内存中执行时。 SQL很规范,但没有规定某操作必须使用哪种排序算法。Postgres使用磁盘合并排序,堆排序或快速排序,视情况而定。如果内存够,在内存中排序会更快。通过work_mem设置增加排序的可用内存。 其他SQL的执行使用不同排序算法。例如,根据Stack Overflow的回答,谷歌BigQuery的内省排序采取了一些措施。 SQL中的排序由ORDER BY命令执行。这种句法不同于所有使用单词sort的Python排序执行。其实更容易记住SQR语句与ODER BY,因为非常独特。 为使排序降序,请用关键字DESC。因此,按字母顺序从最后一个到第一个反馈给客户的查询如下所示:
比较 (编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |