栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

从Python中的巨大CSV文件中读取随机行

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

从Python中的巨大CSV文件中读取随机行

import randomfilesize = 1500      #size of the really big fileoffset = random.randrange(filesize)f = open('really_big_file')f.seek(offset)       #go to random positionf.readline()         # discard - bound to be partial linerandom_line = f.readline()      # bingo!# extra to handle last/first line edge casesif len(random_line) == 0:       # we have hit the end    f.seek(0)    random_line = f.readline()  # so we'll grab the first line instead

正如@AndreBoos指出的那样,这种方法将导致选择偏向。如果知道线的最小和最大长度,则可以通过执行以下操作消除此偏差:

假设(在这种情况下)我们有min = 3和max = 15

1)找到前一行的长度(Lp)。

然后,如果Lp = 3,则该线的偏置最大。因此,如果Lp = 15,则该行应为100%的时间。我们只应选择20%的时间,因为它选择的可能性高5 *。

我们通过在以下时间随机保留行X%来实现此目的:

X =分钟/ Lp

如果我们不遵守要求,我们将进行另一个随机选择,直到骰子掷骰成功为止。:-)



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/669022.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号