随机排列大型 csv 的行

Shuffle rows of a large csv

我想打乱这个数据集以获得一个随机集。它有 160 万行,但第一行是 0,最后是 4,所以我需要随机选择样本以拥有多个 class。实际代码只打印 class 0(意思是只打印 1 class)。我听取了这个平台的建议,但没有用。

fid = open("sentiment_train.csv", "r")

li = fid.readlines(16000000)


random.shuffle(li)

fid2 = open("shuffled_train.csv", "w")

fid2.writelines(li)

fid2.close()

fid.close()

sentiment_onefourty_train = pd.read_csv('shuffled_train.csv', header= 0, delimiter=",", usecols=[0,5], nrows=100000)

sentiment_onefourty_train.columns=['target', 'text']

print(sentiment_onefourty_train['target'].value_counts())

因为您使用 Pandas 读取数据,您还可以使用 pd.sample:

以不同的方式进行随机化
df = pd.read_csv('sentiment_train.csv', header= 0, delimiter=",", usecols=[0,5])
df.columns=['target', 'text']
df1 = df.sample(n=100000)

如果失败,最好检查一下唯一值的数量以及它们出现的频率。如果前1,599,999个是0,最后一个只有4,那你很有可能得不到4。