熊猫随机读取df

时间:2020-04-25 07:35:47

标签: python pandas dataframe

我最近在Kaggle上尝试了此多分类问题 这些是标签的value_counts()

2     1661772
4     1613640
8     1471098
5     1389385
9     1361200
3     1337218
7     1325075
6     1316784
10    1250655
1     1240152
0     1240152

现在,我知道它不平衡了,所以首先我需要知道如何平衡它

我还需要分块读取文件,因为我只有16 GB的内存,还不够 所以我用过:

data_chunks = pd.read_csv(filename, chunk_size=1024)
data = next(iter(data_chunks))

,变量data包含1024个元素,并且所有标签均为零,这对零构成了严重威胁,因为我的模型只是训练为所有内容返回零 所以我需要知道如何在read_csv()函数中

随机选择块

预先感谢

PS:我只是从真实的数据集开始,而不是scikit-learn上的玩具数据集,如果我犯了任何菜鸟错误,请原谅

2 个答案:

答案 0 :(得分:1)

嘿,您可以使用样本(分数= 0.20) 这将从您的csv中随机提取20%的数据,您可以进行相应的调整

data_chunks = pd.read_csv(filename).sample(frac = 0.20)

答案 1 :(得分:1)

data_chunks = pd.read_csv(filename, chunk_size=1024)
for chunk in data_chunks:
    process(chunk)

通过这样做,您可以访问所有块,现在,您可以通过多种方式选择平衡类数据集,方法是创建一个具有所有相等类的新数据帧,以对这些块进行验证。

我也建议对无法直接加载到内存的大型数据帧使用DASK。它不会更改pandas语法,并且在大型数据帧上就像一个吊饰一样!