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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从表中随机选择行 - Python Pandas Read SQL相关的知识,希望对你有一定的参考价值。

我必须在给定的日期时间范围内从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"
答案

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()

以上是关于从表中随机选择行 - Python Pandas Read SQL的主要内容,如果未能解决你的问题,请参考以下文章

从表中选择行,使其列的计算值总和小于给定限制

MYSQL QUERY:为每个相册从表中选择 1 行照片

sql 从表中选择随机n%记录

从表中随机选择一定百分比的条目

在MySQL中从表中随机选择一行

从表中选择随机记录,但不超过2个同名记录