【发布时间】:2018-12-10 16:38:34
【问题描述】:
我正在尝试获取我的 Pandas df 列的mins、maxs、means 等(所有某种数值),但 Pandas 方法似乎不是最快的。似乎如果我先用.values 打它,这些操作的运行时间就会大大提高。这是期望的行为吗(意思是 Pandas 做了一些愚蠢或有意的事情?也许我用.values 击中它会耗尽额外的内存,或者我正在做出假设和/或以某种方式让它变得更容易,这不是给定的.. .).
意外行为的“证据”:
df = pd.DataFrame(np.random.randint(0,1000,size=(100000000, 4)), columns=list('ABCD'))
start = time.time()
print(df['A'].min())
print(time.time()-start)`
# 0
# 1.35876178741
start = time.time()
df['A'].values.min()
print(time.time()-start)
# 0
# 0.225932121277
start = time.time()
print(np.mean(df['A']))
print(time.time()-start)
# 499.49969672
# 1.58990907669
start = time.time()
print(df['A'].values.mean())
print(time.time()-start)
# 499.49969672
# 0.244406938553
【问题讨论】:
-
您不应使用
time.time()进行分析。为此目的有一个模块timeit。 -
明白了。以后会用
timeit,谢谢!
标签: python pandas performance dataframe