Python 列表筛选数据

在数据处理场景中,文章探讨了如何从大型列表中筛选数据。对比了遍历、列表生成式+filter以及pandas的merge方法在处理万级到千万级数据时的效率,结果显示pandas的merge在大批量数据处理时表现最佳。

在做数据处理中,常会遇到列表筛选,比如有以下两个列表:

 

根据上列表中的KEY1 , 筛选下列表的数据,也就是标黄的数据。数量不大的情况,一般就是遍历比较,逻辑简单,几行代码搞掂。

但如果列表达到万,或者百万、千万,那遍历效率就低了。

先构造测试的列表。

# 构造筛选目标列表,确保KEY不重复
n1 = 30000
n1_set = set([random.randint(1,n1)  for n in range(n1)])
n1 = len(n1_set)
list1 = [['1108{:0>6d}27'.format(n), "".join(random.sample('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz',10))] for n in n1_set]

# 构造待筛选数据列表,确保KEY不重复
n2 = 100000
n2_set = set([random.randint(1,n2)  for n in range(n2)])
n2= len(n2_set)
list2 = [['1108{:0>6d}27'.format(n), "".join(random.sample('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz',5)),n ] for n in n2_set]

比较遍历、列表生成式+filter 、pandas 的 merge

Python高级数据筛选有多种方法,常用且高效的数据筛选函数有isin()、query()、contains()、loc()等,它们可单独或搭配使用,以满足不同的筛选需求[^1]。 在日常数据分析里,为从数据集中按各种条件筛选出相应数据记录,再进行提取、替换、修改和分析等操作,这些函数十分实用。比如在刚开始做数据分析时,使用for循环进行条件筛选,代码冗长且效率不高,而使用这些函数能有效解决该问题[^1]。 另外,Python中可以用loc函数配合筛选条件来完成筛选功能,并且配合sum和count函数还能实现Excel中sumif和countif函数的功能,类似Excel数据目录下的“筛选”功能,可对数据表按不同条件进行筛选[^3]。 还有使用Python对多个txt文件中的数据进行筛选的方法,这也是Python高级数据筛选的一种应用场景,能帮助解决在开发技术学习和实际问题中遇到的数据筛选问题[^2]。 以下是部分函数的简单使用示例: ```python import pandas as pd # 创建示例数据 data = { 'Name': ['Alice', 'Bob', 'Charlie', 'David'], 'Age': [25, 30, 35, 40], 'City': ['New York', 'Los Angeles', 'Chicago', 'Houston'] } df = pd.DataFrame(data) # 使用isin()筛选 selected_cities = ['New York', 'Chicago'] filtered_df_isin = df[df['City'].isin(selected_cities)] print("使用isin()筛选结果:") print(filtered_df_isin) # 使用query()筛选 filtered_df_query = df.query('Age > 30') print("\n使用query()筛选结果:") print(filtered_df_query) # 使用loc()筛选 filtered_df_loc = df.loc[df['Age'] < 35] print("\n使用loc()筛选结果:") print(filtered_df_loc) ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陈年椰子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值