由于内存问题(数据集大小为2.5GB,我的内存无法使用),我试图从数据集中获取样本。 df_12
是原始数据帧,而df_12val
是Series,其中包含状态的贬义,而值是数据帧中每个状态的出现次数(出现次数)。我希望每个状态都占用30%的空间以减少数据帧的大小,但我不知道如何从每个状态中获取30%的数据。
我将对数据进行一些ML建模。当我用Google搜索时,只能看到train_test_split
,但是它并不允许我在保持相同比率的情况下对数据进行采样。
数据集df_12如下所示: df_12
和df_12val像这样: df_12val
答案 0 :(得分:0)
是的,因此test_train_split的问题在于它将占用整个数据集的30%,而无需考虑您感兴趣的状态列,我认为要实现所需的功能,首先需要按状态细分数据集,即重采样,这里只包括数据集的细分。
首先,您需要获取所有可能状态的列表,这将需要按状态对数据进行拆分。
state_names = df['STABBR'].unique()
然后,我们获得了一个行列表,其中每个子列表都包含每种状态的行。
data_list_states = [ df.loc[df['STABBR'] == state] for state in state_names]
现在您还需要对值进行操作
values_list_states = [ df_12val.loc[df_12val[0] == state] for state in state_names]
然后我们压缩数据以获取行。
final_data_values_list = []
for i in range(0,len(data_list_states))
final_data_values_list.append(zip(data_list_states[i] , values_list_states[i] ))
现在在final_data_values_list
中,您将具有按状态过滤的数据子列表,现在可以从每个列表中重新采样。