python - 熊猫面具表演
问题描述
我在处理带有要过滤的重文件的熊猫时遇到了麻烦。我测试了这两种形式来进行过滤,其中一种在大约 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
解决方案
我看不出有什么不同:
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
推荐阅读
- javascript - 如果语句返回未定义但仍传递正确的返回值?Javascript
- yaml - 如何将 YAML 1.1 转换为 YAML 1.2?
- sql - 范围之间的返回值并使用结果与没有外键的不同表进行比较
- java - 如何确定进程是否等待用户输入
- c++ - 语句中的“&”是什么意思?
- swift - 如何更改触发功能的顺序?
- python - 如何在熊猫的时间序列数据中按行增加百分比?
- c - 实现中断的最快方法是什么?
- python - TypeError:列表索引必须是整数或切片,而不是 str
- python - 在 C# DataFrame 中查找数组值(相当于 Python 中的 .isin)?