我必须在给定的日期时间范围内从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}$
从表中随机选择行数
可以使用随机数SQL函数选择行的随机样本。例如,在PostgreSQL中,它是
random()
。在选择的行数取决于在不进行随机抽样的情况下将要选择的行数,以及抽样概率
例如,如果表包含5000行,且抽样概率小于0.1,则选择大约500行(5000行的10%)。在
如果没有随机抽样的WHERE子句选择1500行,并且抽样概率小于0.2,那么将选择大约300行(1500行的20%)。在
请注意,使用此方法不能保证所选行的确切数量(这是概率的本质…),因此为了使行数接近所需的行数,必须适当地选择概率。在
还要注意,如果你想重复这个过程并且每次都得到相同的结果,你必须用相同的值为随机数生成器设定种子。您可以使用
setseed()
函数来完成此操作:最后,PostgeSQL中存在
random()
函数。其他数据库引擎可能对该函数使用不同的名称(例如,在MySQL和sqlserver中,我相信它是rand()
)。在有关一些示例,请参见下面的select语句。在
^{pr2}$相关问题 更多 >
编程相关推荐