欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2017年10月28日 11:13:32   作者:飯粒兒  
這篇文章主要介紹了Pandas探索之高性能函數(shù)eval和query解析,小編覺得還是挺不錯的,這里分享給大家,供需要的朋友參考。

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 中,我們可以用很多種的方法來實(shí)現(xiàn)同樣的目標(biāo),例如實(shí)現(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)行某一項(xiàng)條件的判斷:

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ù)同樣可以實(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)含義的邏輯判斷或運(yùn)算,比 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ù)實(shí)現(xiàn)了等價的計(jì)算,并且具有更高的性能。除了加法運(yùn)算,Pandas 的函數(shù) eval 還能幫助我們實(shí)現(xiàn)其他多種復(fù)雜的邏輯判斷或計(jì)算:

總結(jié)

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

相關(guān)文章

  • python連接mongodb密碼認(rèn)證實(shí)例

    python連接mongodb密碼認(rèn)證實(shí)例

    今天小編就為大家分享一篇python連接mongodb密碼認(rèn)證實(shí)例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • 使用python加密自己的密碼

    使用python加密自己的密碼

    本文給大家分享的是使用python加密自己的密碼的思路和代碼,非常的簡單實(shí)用,有需要的小伙伴可以參考下。
    2015-08-08
  • 教你使用Python連接oracle

    教你使用Python連接oracle

    今天教各位小伙伴怎么用Python連接oracle,文中附帶非常詳細(xì)的圖文示例,對正在學(xué)習(xí)的小伙伴們很有幫助喲,需要的朋友可以參考下
    2021-05-05
  • python和shell獲取文本內(nèi)容的方法

    python和shell獲取文本內(nèi)容的方法

    今天小編就為大家分享一篇python和shell獲取文本內(nèi)容的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • Python通過Socket手動實(shí)現(xiàn)HTTP協(xié)議

    Python通過Socket手動實(shí)現(xiàn)HTTP協(xié)議

    這篇文章主要為大家詳細(xì)介紹了Python如何通過Socket手動實(shí)現(xiàn)HTTP協(xié)議,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一
    2024-03-03
  • python中tf.boolean_mask()函數(shù)的使用方法詳解

    python中tf.boolean_mask()函數(shù)的使用方法詳解

    這篇文章主要介紹了python中tf.boolean_mask()函數(shù)的使用方法詳解,?tf.boolean_mask()?函數(shù)的作用是通過布爾值對指定的列的元素進(jìn)行過濾,需要的朋友可以參考下
    2023-11-11
  • python 下劃線的不同用法

    python 下劃線的不同用法

    在本文中,我們將介紹 Python 中 _ 字符的不同用法。就像 Python 中的許多其他內(nèi)容一樣,我們會看到 “_” 的不同用法主要是慣例問題。這里我們將介紹幾種不同的情況。
    2020-10-10
  • Django ModelForm組件使用方法詳解

    Django ModelForm組件使用方法詳解

    這篇文章主要介紹了Django ModelForm組件使用方法詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-07-07
  • win10下python2和python3共存問題解決方法

    win10下python2和python3共存問題解決方法

    在本篇文章里小編給大家整理了關(guān)于win10下python2和python3共存問題解決方法,有興趣的朋友們參考下。
    2019-12-12
  • Python實(shí)現(xiàn)用戶名和密碼登錄

    Python實(shí)現(xiàn)用戶名和密碼登錄

    這篇文章主要為大家詳細(xì)介紹了Python實(shí)現(xiàn)用戶名和密碼登錄,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02

最新評論