panda python_12个很棒的Pandas和NumPy函数,让分析事半功倍
本文轉載自公眾號“讀芯術”(ID:AI_Discovery)
大家都知道Pandas和NumPy函數很棒,它們在日常分析中起著重要的作用。沒有這兩個函數,人們將在這個龐大的數據分析和科學世界中迷失方向。
今天,小芯將分享12個很棒的Pandas和NumPy函數,這些函數將會讓生活更便捷,讓分析事半功倍。
在本文結尾,讀者可以找到文中提到的代碼的JupyterNotebook。
從NumPy開始:
NumPy是使用Python進行科學計算的基本軟件包。它包含以下內容:
強大的N維數組對象
復雜的(廣播broadcasting)功能
集成C / C++和Fortran代碼工具
有用的線性代數,傅立葉變換和隨機數功能
除明顯的科學用途外,NumPy是高效的通用數據多維容器,可以定義任意數據類型。這使NumPy能夠無縫且高速地與各種數據庫進行集成。
1. allclose()
Allclose() 用于匹配兩個數組并且以布爾值形式輸出。如果兩個數組的項在公差范圍內不相等,則返回False。這是檢查兩個數組是否相似的好方法,因為這一點實際很難手動實現。
array1=np.array([0.12,0.17,0.24,0.29])
array2=np.array([0.13,0.19,0.26,0.31])#?with?a?tolerance?of?0.1,?it?shouldreturn?False:
np.allclose(array1,array2,0.1)
False#?with?a?tolerance?of?0.2,?it?should?return?True:
np.allclose(array1,array2,0.2)
True
2. argpartition()
NumPy的這個函數非常優秀,可以找到N最大值索引。輸出N最大值索引,然后根據需要,對值進行排序。
x=np.array([12,?10,?12,?0,?6,?8,?9,?1,?16,?4,?6,0])index_val=np.argpartition(x,?-4)[-4:]
index_val
array([1,?8,?2,?0],?dtype=int64)np.sort(x[index_val])
array([10,?12,?12,?16])
3. clip()
Clip() 用于將值保留在間隔的數組中。有時,需要將值保持在上限和下限之間。因此,可以使用NumPy的clip()函數。給定一個間隔,該間隔以外的值都將被裁剪到間隔邊緣。
x=np.array([3,?17,?14,?23,?2,?2,?6,?8,?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() 函數用于根據特定條件從數組中提取特定元素。有了該函數,還可以使用and和or等的語句。
#?Random?integers
array=np.random.randint(20,size=12)
array
array([?0,??1,??8,?19,?16,?18,?10,?11,??2,?13,?14,?3])#??Divide?by?2?and?check?ifremainder?is?1
cond=np.mod(array,?2)==1
cond
array([False,??True,?False,??True,?False,?False,?False,??True,?False,?True,?False,??True])#?Use?extract?to?get?the?values
np.extract(cond,?array)
array([?1,?19,?11,?13,??3])#?Applycondition?on?extract?directly
np.extract(((array?<3)?|?(array>15)),?array)
array([?0,??1,?19,?16,?18,??2])
5. percentile()
Percentile()用于計算沿指定軸的數組元素的第n個百分位數。
a=np.array([1,5,6,8,1,7,3,6,9])print("50thPercentile?of?a,axis=0:?",
np.percentile(a,?50,?axis=0))
50th?Percentile?of?a,?axis=0:6.0b=np.array([[10,?7,?4],?[3,?2,?1]])print("30th?Percentile?of?b,axis=0:",
np.percentile(b,?30,?axis=0))
30th?Percentile?of?b,?axis=0:??[5.13.5?1.9]
6. where()
Where() 用于從滿足特定條件的數組中返回元素。它返回在特定條件下值的索引位置。這差不多類似于在SQL中使用的where語句。請看以下示例中的演示。
y=np.array([1,5,6,8,1,7,3,6,9])#?Where?y?is?greaterthan?5,?returns?index?position
np.where(y>5)
array([2,?3,?5,?7,?8],?dtype=int64),)#?First?will?replace?the?values?that?matchthe?condition,
#?second?will?replace?the?values?that?does?not
np.where(y>5,?"Hit",?"Miss")
array(['Miss',?'Miss',?'Hit',?'Hit',?'Miss',?'Hit',?'Miss',?'Hit','Hit'],dtype='
接著來講一講神奇的Pandas函數。
Pandas
Pandas是一個Python軟件包,提供快速、靈活和富有表現力的數據結構,旨在使處理結構化(表格,多維,潛在異構)的數據和時間序列數據既簡單又直觀。
Pandas非常適合許多不同類型的數據:
具有異構類型列的表格數據,例如在SQL表或Excel電子表格中
有序和無序(不一定是固定頻率)的時間序列數據。
具有行和列標簽的任意矩陣數據(同類型或異類)
觀察/統計數據集的任何其他形式。實際上,數據根本不需要標記,即可放入Pandas數據結構。
以下是Pandas的優勢:
輕松處理浮點數據和非浮點數據中的缺失數據(表示為NaN)
大小可變性:可以從DataFrame和更高維的對象中插入和刪除列
自動和顯式的數據對齊:在計算中,可以將對象顯式對齊到一組標簽,或者用戶可以直接忽略標簽,并讓Series,DataFrame等自動對齊數據
強大靈活的分組功能,可對數據集執行拆分-應用-合并操作,以匯總和轉換數據
輕松將其他Python和NumPy數據結構中的不規則的、索引不同的數據轉換為DataFrame對象
大數據集的智能標簽的切片,高級索引和子集化
直觀的合并和聯接數據集
數據集的靈活重塑和旋
坐標軸的分層標簽(每個刻度可能有多個標簽)
強大的IO工具,用于從平面文件(CSV和定界文件)、 Excel文件,數據庫加載數據,以及以超高速HDF5格式保存/加載數據
特定于時間序列的功能:日期范圍生成和頻率轉換、移動窗口統計、日期移位和滯后。
1. apply()
Apply() 函數允許用戶傳遞函數并將其應用于Pandas序列中每個單一值。
#?max?minus?mix?lambda?fn
fn=lambdax:?x.max()?-?x.min()#?Apply?this?on?dframe?that?we've?just?createdabove
dframe.apply(fn)
2. copy()
Copy()函數用于創建Pandas對象的副本。將數據幀分配給另一個數據幀時,在另一個數據幀中進行更改,其值也會進行同步更改。為了避免出現上述問題,可以使用copy()函數。
#?creating?sample?series
data=pd.Series(['India',?'Pakistan',?'China',?'Mongolia'])#?Assigning?issuethat?we?face
datadata1=?data
#?Change?a?value
data1[0]='USA'
#?Also?changes?value?in?old?dataframe
data#?To?prevent?that,?we?use
#?creating?copy?of?series
new=data.copy()#?assigning?new?values
new[1]='Changed?value'#?printing?data
print(new)
print(data)
3. read_csv(nrows=n)
總結
以上是生活随笔為你收集整理的panda python_12个很棒的Pandas和NumPy函数,让分析事半功倍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 产品结构bom设计 mongodb_超全
- 下一篇: leetcode4两数相加