一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術(shù)及教程分享平臺!
分類導(dǎo)航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務(wù)器之家 - 腳本之家 - Python - Python 列表篩選數(shù)據(jù)詳解

Python 列表篩選數(shù)據(jù)詳解

2022-03-03 00:08陳年椰子 Python

這篇文章主要為大家介紹了Python 列表篩選數(shù)據(jù),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助

在做數(shù)據(jù)處理中,常會遇到列表篩選,比如有以下兩個列表:

Python 列表篩選數(shù)據(jù)詳解

Python 列表篩選數(shù)據(jù)詳解

根據(jù)上列表中的KEY1 , 篩選下列表的數(shù)據(jù),也就是標(biāo)黃的數(shù)據(jù)。數(shù)量不大的情況,一般就是遍歷比較,邏輯簡單,幾行代碼搞掂。

但如果列表達到萬,或者百萬、千萬,那遍歷效率就低了。

先構(gòu)造測試的列表。

# 構(gòu)造篩選目標(biāo)列表,確保KEY不重復(fù)
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]
# 構(gòu)造待篩選數(shù)據(jù)列表,確保KEY不重復(fù)
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 三種方法效率。

篩選目標(biāo)18971條, 待處理數(shù)據(jù)63275條
遍歷生成數(shù)據(jù) 耗時11.591秒 獲得數(shù)據(jù)量 12024
['11080000427', 'eArVD', 4]
filter 耗時11.5秒 獲得數(shù)據(jù)量 12024
['11080000427', 'eArVD', 4]
merge 耗時0.058秒 獲得數(shù)據(jù)量 12024
['11080000427', 'eArVD', 4]
篩選目標(biāo)189733條, 待處理數(shù)據(jù)632363條
遍歷生成數(shù)據(jù) 耗時1597.4296秒 獲得數(shù)據(jù)量 120180
['1108000000227', 'NkoEQ', 2]
filter 耗時1575.0432秒 獲得數(shù)據(jù)量 120180
['1108000000227', 'NkoEQ', 2]
merge 耗時0.64秒 獲得數(shù)據(jù)量 120180
['1108000000227', 'NkoEQ', 2]

經(jīng)過比較, 直接遍歷生成和列表生成式+filter的效率基本一致, pandas 的merge 效率最高。適合大批量數(shù)據(jù)處理。

上代碼

print("篩選目標(biāo){}條, 待處理數(shù)據(jù){}條".format(n1,n2))
# 直接遍歷生成數(shù)據(jù),計時
t1 = time.time()
list_temp = [n[0] for n in list1]
list3 = []
for n in list2:
  if n[0] in list_temp:
      list3.append(n)
t2 = time.time()
print("遍歷生成數(shù)據(jù) 耗時{}秒".format(round(t2 - t1, 4)), "獲得數(shù)據(jù)量", len(list3))
print(list3[0])
# 用filter篩選數(shù)據(jù),計時
t1 = time.time()
list_temp = [n[0] for n in list1]
list3 = [n for n in filter(lambda x: x[0] in list_temp, list2)]
t2 = time.time()
print("filter 耗時{}秒".format(round(t2 - t1,4)), "獲得數(shù)據(jù)量", len(list3))
print(list3[0])
# 用pd.merge 篩選數(shù)據(jù),計時
t1 = time.time()
df1 = pd.DataFrame(list1, columns=['k1','m1'])
df2 = pd.DataFrame(list2, columns=['k1','m2','n2'])
df3 = pd.merge(df1[['k1']], df2, how='inner', on='k1')
t2 = time.time()
print("merge 耗時{}秒".format(round(t2 - t1,4)), "獲得數(shù)據(jù)量", len(df3))
print(list(df3.iloc[0]))

 

總結(jié)

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注服務(wù)器之家的更多內(nèi)容!

原文鏈接:https://blog.csdn.net/seakingx/article/details/121372515

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产3p绿奴在线视频 | 曹逼网站| 国产精品欧美亚洲韩国日本99 | 久久99r66热这里有精品 | 成年极品漫画在线观看 | 黑帮少爷爱上我第8集最新 荷兰精品女人性hd 和日本免费不卡在线v | 娇女的呻吟亲女禁忌h16 | 日韩欧美国产综合精品 | 国内精品久久久久久久 | 欧美成人免费草草影院视频 | 久久久精品3d动漫一区二区三区 | 天天干天天色综合 | 日韩一 | 韩国最新三级网站在线播放 | 我半夜摸妺妺的奶C了她软件 | 百合互慰吃奶互揉漫画 | 久久视频这里只精品99热在线观看 | 久久免费资源福利资源站 | 好男人资源免费播放在线观看 | 国产成人免费片在线视频观看 | 亚洲人成绝费网站色ww | 亚洲成人国产 | 窝窝色资源站 | 国产在视频线精品视频 | 99久久一香蕉国产线看观看 | 成成人看片在线 | 国色天香社区在线 | 午夜亚洲一区二区福利 | 欧美视频久久 | 娇小老少配xxxxx性视频 | 情缘1完整版在线观看 | 青青久久精品国产免费看 | 九九热在线视频观看这里只有精品 | 亚洲精品动漫免费二区 | 东北恋哥在线播放免费播放 | 男人的天堂在线观看入口 | 欧美摸胸| 网站视频免费 | 奇米影视在线视频8888 | 嗯啊好大好粗 | 小兰被扒开内裤露出p |