注意我的问题在这里有点不同:
我正在处理包含大量数据(10M +)的数据集上的熊猫:
q = "SELECT COUNT(*) as total FROM `<public table>`"
df = pd.read_gbq(q, project_id=project, dialect='standard')
我知道我可以通过frac
选项使用pandas功能>
df_sample = df.sample(frac=0.01)
但是,我不想生成具有该大小的原始df。我想知道用已采样的数据生成数据框的最佳实践是什么。
我已经阅读了一些sql帖子,显示示例数据是从切片生成的,在我的情况下绝对不接受。样本数据需要尽可能均匀地分布。
谁能给我更多的光?
非常感谢。
UPDATE:
下面是显示数据外观的表:
信誉是我正在研究的领域。您会看到多数记录的声誉很小。
我不想使用包含所有记录的数据框,我希望采样的数据也看起来像未采样的数据,例如相似的直方图,这就是我所说的“均匀”。
我希望这可以澄清一下。
注意我的问题在这里有点不同:我正在对具有大量数据(10M +)的数据集使用熊猫:q =“ SELECT COUNT(*)as from FROM <
select * from mydata where rand()>0.9
这将使表中的每一行都有10%的机会被选中。它不保证一定的样本量,也不保证每个bin都代表(这需要分层的样本)。这是这种方法的小提琴]
http://sqlfiddle.com/#!9/21d1ee/2
平均而言,随机抽样将提供与基础数据相同的分布,因此可以满足您的要求。但是,如果您要“强制”样本具有更大的代表性或将样本强制为一定大小,我们需要研究更高级的东西。