你可以使用熊猫:
import pandas as pd
csvfile = pd.read_csv('/your/file/path/here')
print csvfile.sample()
Run Code Online (Sandbox Code Playgroud)
如果你的csv文件足够小以适应内存,你可以阅读整个内容然后选择一行:
import csv
import random
with open(filename) as f:
reader = csv.reader(f)
chosen_row = random.choice(list(reader))
Run Code Online (Sandbox Code Playgroud)
您必须立即读入整个文件,因为choice需要知道有多少行.
如果您对通过数据进行多次传递感到高兴,可以对行进行计数,然后选择一个随机行并再次读入该文件到该行:
with open(filename) as f:
lines = sum(1 for line in f)
line_number = random.randrange(lines)
with open(filename) as f:
reader = csv.reader(f)
chosen_row = next(row for row_number, row in enumerate(reader)
if row_number == line_number)
Run Code Online (Sandbox Code Playgroud)
如果您想逐步地,随机地选择一行,而不知道将有多少行,您可以使用油藏采样.这可能会更慢,因为它会在行用完之前做出多个随机选择,但它一次只需要内存中的一行:
with open(filename) as f:
reader = csv.reader(f)
for index, row in enumerate(reader):
if index == 0:
chosen_row = row
else:
r = random.randint(0, index)
if r == 0:
chosen_row = row
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7713 次 |
| 最近记录: |