NumPyNumPy是使用Python進(jìn)行科學(xué)計(jì)算的基本軟件包。它包含以下內(nèi)容:
除了其明顯的科學(xué)用途外,NumPy還可以用作通用數(shù)據(jù)的高效多維容器??梢远x任意數(shù)據(jù)類型。這使NumPy能夠無縫,快速地與各種數(shù)據(jù)庫集成。 1.argpartition() NumPy具有此驚人的功能,可以找到N個(gè)最大值索引。輸出將是N個(gè)最大值索引,然后可以根據(jù)需要對(duì)值進(jìn)行排序。 x = np.array([12, 10, 12, 0, 6, 8, 9, 1, 16, 4, 6, 0])index_val = np.argpartition(x, -4)[-4:]index_valarray([1, 8, 2, 0], dtype=int64)np.sort(x[index_val])array([10, 12, 12, 16]) 2. allclose() Allclose()用于匹配兩個(gè)數(shù)組,并根據(jù)布爾值獲取輸出。如果兩個(gè)數(shù)組中的項(xiàng)在公差范圍內(nèi)不相等,則將返回False。檢查兩個(gè)數(shù)組是否相似的好方法,實(shí)際上很難手動(dòng)實(shí)現(xiàn)。
3. clip() Clip()用于將值保留在一個(gè)間隔內(nèi)的數(shù)組中。有時(shí),我們需要將值保持在上限和下限之內(nèi)。出于上述目的,我們可以使用NumPy的clip()。給定一個(gè)間隔,該間隔以外的值將被裁剪到間隔邊緣。 x = np.array([3,17,14,23,2,2,6,8,1,1,2,16,0])np.clip(x,2,5)array([ 3,5,5 ,5、2、2、5、5、2、2、5、2]) 4. extract() 顧名思義,Extract()用于根據(jù)特定條件從數(shù)組中提取特定元素。通過extract(),我們還可以使用諸如and和or的條件。
5. where() where()用于從滿足特定條件的數(shù)組中返回元素。它返回在特定條件下的值的索引位置。這幾乎類似于我們在SQL中使用的where條件,我將在下面的示例中進(jìn)行演示。 y = np.array([1,5,6,8,1,7,3,6,9])# y大于5時(shí),返回索引位置np.where(y>5)array([2, 3, 5, 7, 8], dtype=int64),)# 首先將替換符合條件的值, # 其次將不替換np.where(y>5, 'Hit', 'Miss')array(['Miss', 'Miss', 'Hit', 'Hit', 'Miss', 'Hit', 'Miss', 'Hit', 'Hit'],dtype='<U4') 6. percentile() Percentile()用于計(jì)算沿指定軸的數(shù)組元素的第n個(gè)百分點(diǎn)。
如果你以前使用過這些函數(shù),那么你一定了解,這些函數(shù)對(duì)你有多大幫助! Pandaspandas是一個(gè)Python軟件包,提供快速,靈活和富于表現(xiàn)力的數(shù)據(jù)結(jié)構(gòu),旨在使處理結(jié)構(gòu)化(表格,多維,潛在異構(gòu))和時(shí)間序列數(shù)據(jù)既簡單又直觀。 pandas非常適合許多不同類型的數(shù)據(jù):
以下是pandas擅長處理的一些事情:
1.read_csv(nrows = n) 可能你已經(jīng)知道 read_csv 函數(shù)的使用。但是,即使不需要,我們大多數(shù)人仍然會(huì)錯(cuò)誤地讀取整個(gè).csv文件。讓我們考慮第一種情況,即我們不知道10gb的.csv文件中的列和數(shù)據(jù),在這里讀取整個(gè).csv文件將不是一個(gè)明智的決定,因?yàn)檫@將不必要地占用我們的內(nèi)存,并且會(huì)花費(fèi)很多時(shí)間。我們可以從.csv文件中導(dǎo)入幾行,然后根據(jù)需要進(jìn)行進(jìn)一步操作。 import ioimport requests# 、為了讓你們更輕松地使用,在這里我們將使用在線數(shù)據(jù)集url = 'https://raw.github.com/vincentarelbundock/Rdatasets/master/csv/datasets/AirPassengers.csv's = requests.get(url).content# 僅讀取前10行df = pd.read_csv(io.StringIO(s.decode('utf-8')),nrows=10 , index_col=0) 2. map() map()函數(shù)用于根據(jù)輸入對(duì)應(yīng)關(guān)系映射Series的值。用于將系列中的每個(gè)值替換為可以從函數(shù),字典或系列中得出的另一個(gè)值。
3. apply() apply()允許用戶傳遞一個(gè)函數(shù)并將其應(yīng)用于Pandas系列的每個(gè)單個(gè)值。 # 最大值減去最小值的混合 lambda fnfn = lambda x: x.max() - x.min()# 將其應(yīng)用于上面剛剛創(chuàng)建的dframedframe.apply(fn) 4. isin() isin()用于過濾數(shù)據(jù)幀。isin()幫助選擇在特定列中具有特定(或多個(gè))值的行。這是我遇到的最有用的功能。
5. copy() copy()用于創(chuàng)建Pandas對(duì)象的副本。將數(shù)據(jù)幀分配給另一個(gè)數(shù)據(jù)幀時(shí),在另一個(gè)數(shù)據(jù)幀中進(jìn)行更改時(shí)其值也會(huì)更改。為了防止出現(xiàn)上述問題,我們可以使用copy()。 #創(chuàng)建樣本系列data = pd.Series(['India', 'Pakistan', 'China', 'Mongolia'])#分配我們面臨的問題data1 = data #修改值data1 [0] ='USA' #還要更改舊數(shù)據(jù)框中的值#為防止這種情況,我們使用#創(chuàng)建系列的副本new = data.copy()#分配新的值new [1] ='Changed value' #打印數(shù)據(jù)print(new)print(data) 6. select_dtypes() select_dtypes()函數(shù)基于列dtypes返回?cái)?shù)據(jù)框的列的子集。可以將此函數(shù)的參數(shù)設(shè)置為包括具有某些特定數(shù)據(jù)類型的所有列,也可以設(shè)置為排除具有某些特定數(shù)據(jù)類型的所有那些列。
其他的收獲:數(shù)據(jù)透視表() Pandas 最神奇、最有用的功能是 pivot_table。如果你還在猶豫使用 groupby 并想擴(kuò)展其功能,那么可以很好試試 pivot_table 。如果你知道數(shù)據(jù)透視表在excel中是如何工作的,那么對(duì)你來說可能就是小菜一碟。數(shù)據(jù)透視表中的級(jí)別將存儲(chǔ)在結(jié)果 DataFrame 的索引和列上的MultiIndex對(duì)象(分層索引)中。 #創(chuàng)建一個(gè)樣本數(shù)據(jù)school = pd.DataFrame({'A': ['Jay', 'Usher', 'Nicky', 'Romero', 'Will'], 'B': ['Masters', 'Graduate', 'Graduate', 'Masters', 'Graduate'], 'C': [26, 22, 20, 23, 24]})#讓我們根據(jù)年齡和課程來創(chuàng)建數(shù)據(jù)透視表table = pd.pivot_table(school, values ='A', index =['B', 'C'], columns =['B'], aggfunc = np.sum, fill_value='Not Available') table 學(xué)習(xí)是為了更加方便我們的工作,這12個(gè)函數(shù),不僅能方便我們處理數(shù)據(jù),還能提高我們的工作效率。希望能對(duì)你帶來收獲! 以上所有代碼都給你整理好了:https ://github.com/kunaldhariwal/Medium-12-Amazing-Pandas-NumPy-Functions 本文由未艾信息(www.weainfo.net)編譯, |
|