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

问题描述 投票:1回答:1

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

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

random_subset = sp.sample(n=300)

时间戳格式如下

sampling_start_date = "2018-08-17 20:00:00"
python pandas random amazon-redshift
1个回答
0
投票

Selecting A Random Number Of Rows From A Table

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

选择的行数取决于在没有随机采样的情况下选择的行数和采样概率,

例如,如果表包含5,000行且采样概率小于0.1,则将选择约500行(5,000的10%)。

如果没有随机抽样的WHERE子句将选择1,500行,并且采样概率小于0.2,则将选择约300行(1,500的20%)。

请注意,使用此方法无法保证所选行的确切数量(这是概率的性质......),因此为了获得接近您所需的行数,您必须适当地选择概率。

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

SELECT setseed(.123);

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

有关示例,请参阅以下select语句。

rand()
© www.soinside.com 2019 - 2024. All rights reserved.