国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Pandas探索之高性能函數(shù)eval和query解析

2020-02-16 10:31:21
字體:
供稿:網(wǎng)友

Python Data Analysis Library 或 pandas 是基于NumPy 的一種工具,該工具是為了解決數(shù)據(jù)分析任務(wù)而創(chuàng)建的。Pandas 納入了大量庫和一些標(biāo)準(zhǔn)的數(shù)據(jù)模型,提供了高效地操作大型數(shù)據(jù)集所需的工具。pandas提供了大量能使我們快速便捷地處理數(shù)據(jù)的函數(shù)和方法。你很快就會發(fā)現(xiàn),它是使Python成為強(qiáng)大而高效的數(shù)據(jù)分析環(huán)境的重要因素之一。

相較于 Python 的內(nèi)置函數(shù), Pandas 庫為我們提供了一系列性能更高的數(shù)據(jù)處理函數(shù),本節(jié)將向大家介紹 Pandas 庫中的高性能函數(shù) eval 與 query:

在 Python 中,我們可以用很多種的方法來實現(xiàn)同樣的目標(biāo),例如實現(xiàn)兩個數(shù)組的相加:

import numpy as np rng = np.random.RandomState(42) x = rng.rand(1E6) y = rng.rand(1E6) %timeit x + y 100 loops, best of 3: 3.39 ms per loop 

利用 Numpy 中的 fromiter 函數(shù)我們可以得到相同的一維數(shù)組,然而我們發(fā)現(xiàn),這個語句的性能并不比內(nèi)置的數(shù)組加法好。

%timeit np.fromiter((xi + yi for xi, yi in zip(x, y)), dtype=x.dtype, count=len(x)) 1 loop, best of 3: 266 ms per loop 

再比如,進(jìn)行某一項條件的判斷:

mask = (x > 0.5) & (y < 0.5) tmp1 = (x > 0.5) tmp2 = (y < 0.5) mask = tmp1 & tmp2 

Numpy 庫中的函數(shù) allclose 用于判斷兩個數(shù)組是否相等,我們可以看到,使用 numexpr 庫中的 evaluate 函數(shù)同樣可以實現(xiàn) mask 中的條件判斷。

import numexpr mask_numexpr = numexpr.evaluate('(x > 0.5) & (y < 0.5)') np.allclose(mask, mask_numexpr) True 

面對同樣的問題,Pandas 庫為我們提供了更高性能的解決方案, eval 函數(shù)能夠?qū)⑻囟ㄐ问降淖址D(zhuǎn)換為對應(yīng)含義的邏輯判斷或運算,比 Python 的內(nèi)置函數(shù)具有更好的算法效率:

import pandas as pd nrows, ncols = 100000, 100 rng = np.random.RandomState(42) df1, df2, df3, df4 = (pd.DataFrame(rng.rand(nrows, ncols)) for i in range(4)) %timeit df1 + df2 + df3 + df4 10 loops, best of 3: 87.1 ms per loop %timeit pd.eval('df1 + df2 + df3 + df4') 10 loops, best of 3: 42.2 ms per loop np.allclose(df1 + df2 + df3 + df4, pd.eval('df1 + df2 + df3 + df4')) True 

可以看到,eval 函數(shù)實現(xiàn)了等價的計算,并且具有更高的性能。除了加法運算,Pandas 的函數(shù) eval 還能幫助我們實現(xiàn)其他多種復(fù)雜的邏輯判斷或計算:

總結(jié)

以上就是本文關(guān)于Pandas探索之高性能函數(shù)eval和query解析的全部內(nèi)容,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站:Python探索之URL Dispatcher實例詳解、Python編程之Re模塊下的函數(shù)介紹等,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 富蕴县| 浮梁县| 福鼎市| 潮安县| 井冈山市| 体育| 弥渡县| 华坪县| 安龙县| 元氏县| 随州市| 漳州市| 孝昌县| 崇文区| 南城县| 迭部县| 青冈县| 安仁县| 黄山市| 仙游县| 沈阳市| 黄浦区| 兰溪市| 南宫市| 正定县| 绍兴县| 平潭县| 方城县| 城固县| 澎湖县| 新泰市| 湘潭市| 电白县| 乐业县| 丰都县| 胶州市| 康乐县| 朝阳县| 威远县| 库尔勒市| 长沙县|