从表中随机选择行 - 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的主要内容,如果未能解决你的问题,请参考以下文章