python 对一组list数据,进行区间划分,按照大小排序并返回索引值

简介: 最近在对海洋数据进行处理时,对数据需要进行一些排序,数据匹配等操作;现对我所希望实现的一些函数进行总结:

最近在对海洋数据进行处理时,对数据需要进行一些排序,数据匹配等操作;

现对我所希望实现的一些函数进行总结:


一、对一组纬度数据进行排序:



现有4000多个纬度数据,从第0个至最后一个从-90°~90°随机分布。


20210425213916128.png


想要实现从-90°依次从到小排至90°,既升序排列,同时返回其下标

这里引用两个函数sorted 、enumerate


第一个函数:sorted 用法说明如下


list = sorted(iterable, key=None, reverse=False)

如果只想实现升序排列,直接进行如下操作即可


lat_sort=sorted(lat)


得到:


2021042521452153.png


但是我们想同时返回其在原来列表中的下标,既需要enumerate函数的帮忙

其使用方法如下:


enumerate(iterable, start=0)

Parameters:

Iterable: any object that supports iteration

Start: the index value from which the counter is

to be started, by default it is 0


我们先对lat数据直接进行使用看看返回了什么:


a=enumerate[lat]


20210425215237208.png


发现无法查看其具体结果,所以再将其转换为list格式,以便浏览


a=list(enumerate(lat))


20210425215354695.png


很明显,上述操作,将每个原始lat中数据的值及其下标返回了,因此再次进行sorted排序是即可查看它对应的下标啦~


但是!!!,因为此时list中既有下标、又有数值,在进行排序时是按照下标还是数值呢,所以需要增加一个维度设定,既


对于sorted(iterable, key=None, reverse=False)中的key进行设定,使其按照所需纬度进行排序。


这里我需要的是根据数值排序,所以进行如下操作:


a=sorted(list(enumerate(lat)),key=lambda dimension: dimension[1])


。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

补充一下:

lambda 函数是一种小的匿名函数,可接受任意数量的参数,但只能有一个表达式。

比如:对于想要传入的参数使其加上6,即可设置为:


x= lambda a : a + 10


回到正题

我们运行上述代码会得到:


20210425220332923.png


果然!!!不出所料按照我们想要的结果实现啦~


下面,是提取对应的维度结果,比如我们想要将下标和数值分别放置在一个list中,只要这样即可:

index = [i[0] for i in a]
lat_sort = [i[1] for i in a]


20210425220549547.png


20210425220559851.png


不出所料,是不是很easy呐!

如果想要按照原始lat中,不同数值按照不同颜色排列,只需将list转为array即可


lat_sort=np.array(lat_sort)



20210425220830150.png


二、将lat数据按照10为区间进行排序并统计每个区间存在的个数:



首先整理一下思路,我们要进行排序,然后区间进行分割。

这里引出一个新的函数:groupby(),其参数属性如下所示:


DataFrame.groupby(by=None, axis=0, level=None, as_index=True, sort=True, group_keys=True, squeeze=, observed=False, dropna=True)

感兴趣的小伙伴们可以去点击下方中进行仔细浏览:


groupby参数引用


总之,我们可以通过groupby,达到分割数据的目的,


进行如下操作:

lat_sort=[]
for k, g in groupby(sorted(lat), key=lambda x:x//10):
     #x//10:对x取整除 - 返回商的整数部分
    print('{}-{}:{}'.format(k*10, (k+1)*10-1,len(list(g))))


20210425222210801.png

完美!!!


                                一个努力学习python的海洋小白
                                水平有限,欢迎指正!!!
                                欢迎评论、收藏。


相关文章
|
5月前
|
数据采集 Web App开发 数据可视化
Python零基础爬取东方财富网股票行情数据指南
东方财富网数据稳定、反爬宽松,适合爬虫入门。本文详解使用Python抓取股票行情数据,涵盖请求发送、HTML解析、动态加载处理、代理IP切换及数据可视化,助你快速掌握金融数据爬取技能。
3108 1
|
5月前
|
Java 数据处理 索引
(Pandas)Python做数据处理必选框架之一!(二):附带案例分析;刨析DataFrame结构和其属性;学会访问具体元素;判断元素是否存在;元素求和、求标准值、方差、去重、删除、排序...
DataFrame结构 每一列都属于Series类型,不同列之间数据类型可以不一样,但同一列的值类型必须一致。 DataFrame拥有一个总的 idx记录列,该列记录了每一行的索引 在DataFrame中,若列之间的元素个数不匹配,且使用Series填充时,在DataFrame里空值会显示为NaN;当列之间元素个数不匹配,并且不使用Series填充,会报错。在指定了index 属性显示情况下,会按照index的位置进行排序,默认是 [0,1,2,3,...] 从0索引开始正序排序行。
421 0
|
5月前
|
Java 数据挖掘 数据处理
(Pandas)Python做数据处理必选框架之一!(一):介绍Pandas中的两个数据结构;刨析Series:如何访问数据;数据去重、取众数、总和、标准差、方差、平均值等;判断缺失值、获取索引...
Pandas 是一个开源的数据分析和数据处理库,它是基于 Python 编程语言的。 Pandas 提供了易于使用的数据结构和数据分析工具,特别适用于处理结构化数据,如表格型数据(类似于Excel表格)。 Pandas 是数据科学和分析领域中常用的工具之一,它使得用户能够轻松地从各种数据源中导入数据,并对数据进行高效的操作和分析。 Pandas 主要引入了两种新的数据结构:Series 和 DataFrame。
609 0
|
5月前
|
JSON 算法 API
Python采集淘宝商品评论API接口及JSON数据返回全程指南
Python采集淘宝商品评论API接口及JSON数据返回全程指南
|
5月前
|
JSON API 数据安全/隐私保护
Python采集淘宝拍立淘按图搜索API接口及JSON数据返回全流程指南
通过以上流程,可实现淘宝拍立淘按图搜索的完整调用链路,并获取结构化的JSON商品数据,支撑电商比价、智能推荐等业务场景。
|
6月前
|
数据采集 关系型数据库 MySQL
python爬取数据存入数据库
Python爬虫结合Scrapy与SQLAlchemy,实现高效数据采集并存入MySQL/PostgreSQL/SQLite。通过ORM映射、连接池优化与批量提交,支持百万级数据高速写入,具备良好的可扩展性与稳定性。
|
6月前
|
JSON API 数据安全/隐私保护
Python采集淘宝评论API接口及JSON数据返回全流程指南
Python采集淘宝评论API接口及JSON数据返回全流程指南
|
机器学习/深度学习 算法 搜索推荐
详解排序算法(Python实现)
详解排序算法(Python实现)
346 0
|
6月前
|
数据采集 机器学习/深度学习 人工智能
Python:现代编程的首选语言
Python:现代编程的首选语言
799 102
|
6月前
|
数据采集 机器学习/深度学习 算法框架/工具
Python:现代编程的瑞士军刀
Python:现代编程的瑞士军刀
413 104

推荐镜像

更多