【发布时间】:2023-03-16 05:34:01
【问题描述】:
我在处理带有要过滤的大文件的 pandas 时遇到了问题。我测试了这两种形式来进行过滤,其中一种在大约 30% 的时间内完成。我的问题是为什么生成的掩码比在数据框中传递过滤器的性能更好?
我的代码:
import numpy as np
import pandas as pd
import datetime
df = pd.DataFrame({'data':np.random.randint(low=1,high=100,size=10*8), 'data':np.random.randint(low=1,high=100,size=10*8)})
第一种方法
init = datetime.datetime.now()
partial = df[df['data']==5]
final = datetime.datetime.now()
print(len(partial))
print(final-init)
1011055 时间:0:00:00.611047
第二种方法:
init = datetime.datetime.now()
mask == df['data']==5
partial = df[mask]
final = datetime.datetime.now()
print(len(partial))
print(final-init)
1011055 0:00:00.377024
【问题讨论】:
-
datetime.datetime.now()并非旨在正确测量执行时间。使用模块timeit。你可能会得到非常不同的结果。 -
你的意思是
mask ==?而不是mask =?假设 - 我没有看到任何明显的差异 -
我在编写代码时犯了两个错字,一个是
mask =符号,另一个是关键数据 df = pd.DataFrame({'data':np.random.randint(low =1,high=100,size=10*8), 'data_b':np.random.randint(low=1,high=100,size=10*8)}),我猜这会影响执行。
标签: python pandas dataframe numpy datetime