【发布时间】:2021-12-14 00:51:41
【问题描述】:
晚上好!
我有一个类似于我将在下面粘贴的代码,它有更多的数据,但前提是相同的。我必须从两个 DataFrame 中提取前五个值,但是当我处理数以千万计的条目时,有时我无法等待长达一个小时来计算整个 DataFrame 并返回前五个值。我也不能使用简单的 Pandas DataFrame,因为它们超出了我的内存限制。有解决办法吗?
import random
import pandas
import dask.dataframe as dd
import time
# Random list from 1 to 10,000,000.
random_pool = [random.randint(1, 1000000) for i in range(10000000)]
random.shuffle(random_pool)
df1 = dd.from_pandas(pandas.DataFrame(random_pool[:100000], columns=["ID"]), npartitions=10)
df2 = dd.from_pandas(pandas.DataFrame(random_pool, columns=["ID"]), npartitions=10)
# Sorting both dataframes.
df1 = df1.sort_values("ID", ascending=True)
df2 = df2.sort_values("ID", ascending=True)
df1_start = time.time()
df1.head(5)
print("DF1 took {:.2f}.".format(time.time() - df1_start))
df2_start = time.time()
df2.head(5)
print("DF2 took {:.2f}.".format(time.time() - df2_start))
第一个 DataFrame 大约需要 0.41 秒,而第二个 DataFrame 大约需要 1.79 秒。
【问题讨论】:
标签: python pandas data-science dask