从Python Pandas Read SQL表中随机选择行

2024-05-15 13:09:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我必须在给定的日期时间范围内从Post GRE表中随机选择行。我现在的方法是查询日期时间范围内的表,然后随机选择行(请参见下面的内容)这在查询方面变得非常低效,因为我在该范围内有10GB的数据。有更好的方法吗?请告知

sp = pd.read_sql("SELECT * FROM table1 WHERE timestamp >= '"+sampling_start_date+"' and timestamp <= '"+sampling_end_date+"'", con)

random_subset = sp.sample(n=300)

时间戳格式如下

^{pr2}$

Tags: 数据方法from内容readsqldate时间
1条回答
网友
1楼 · 发布于 2024-05-15 13:09:07

从表中随机选择行数

可以使用随机数SQL函数选择行的随机样本。例如,在PostgreSQL中,它是random()。在

选择的行数取决于在不进行随机抽样的情况下将要选择的行数,以及抽样概率

例如,如果表包含5000行,且抽样概率小于0.1,则选择大约500行(5000行的10%)。在

如果没有随机抽样的WHERE子句选择1500行,并且抽样概率小于0.2,那么将选择大约300行(1500行的20%)。在

请注意,使用此方法不能保证所选行的确切数量(这是概率的本质…),因此为了使行数接近所需的行数,必须适当地选择概率。在

还要注意,如果你想重复这个过程并且每次都得到相同的结果,你必须用相同的值为随机数生成器设定种子。您可以使用setseed()函数来完成此操作:

SELECT setseed(.123);

最后,PostgeSQL中存在random()函数。其他数据库引擎可能对该函数使用不同的名称(例如,在MySQL和sqlserver中,我相信它是rand())。在

有关一些示例,请参见下面的select语句。在

^{pr2}$

相关问题 更多 >