首页 > 解决方案 > 熊猫面具表演

问题描述

我在处理带有要过滤的重文件的熊猫时遇到了麻烦。我测试了这两种形式来进行过滤,其中一种在大约 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

标签: pythonpandasdataframenumpydatetime

解决方案


我看不出有什么不同:

import pandas as pd
from timeit import timeit

df = pd.DataFrame({'data': np.random.randint(low=1, high=100, size=10*8)})

t1 = timeit("partial = df[df['data'] == 5]", number=10000, globals=globals())
t2 = timeit("mask = (df['data'] == 5); partial = df[mask]", number=10000,
            globals=globals())
print(t1, t2)

结果:

2.363040907 2.3674299340000005

推荐阅读