python pandas效率到底如何?匿名使用者2017-04-06 18:10:34

工具的效能與資料本身和操作型別有關,這裡有一個關於dplyr,pandas和data。table的benchmark,可以參考

Rdatatable/data。table

python pandas效率到底如何?BigQuant2017-06-29 13:59:07

最初為金融資料分析而生,做了非常到位的效能最佳化,超出預期,99%的程式設計師完全用c也寫不出這麼高效。我們主力使用,非常推薦。

BigQuant - 人工智慧量化投資平臺

python pandas效率到底如何?豈安科技2017-09-21 15:53:49

在使用Pandas之前,大多數資料分析師已經掌握了Excel和SQL,並且在剛上手Pandas時會經常習慣性想到“老辦法”。“

如果誰能把常用的資料查詢語法做個對比就好了

”,我也曾不止一次地想享受前人的成果,無奈發現網上的文章側重不同且深淺不一,還涉及到一些Pandas新老版本的問題,於是決定自己動手。我是豈安科技業務風險分析師大毛,以下,GO~

一、舉例的資料

假設我有個六列的dataframe,一列是銷售員,一列是所屬團隊,其它四列分別是四個季度的銷售額。

python pandas效率到底如何?

python pandas效率到底如何?

新增列-基於原有列的全年銷售額

首先df[‘Total ’]確保了你在該df內新增了一個column,然後累加便可。

df[‘Total’] = df[‘Q1’]+df[‘Q2’]+df[‘Q3’]+df[‘Q4’]

python pandas效率到底如何?

python pandas效率到底如何?

你可能想使用諸如sum()的函式進行這步,很可惜,sum()方法只能對列進行求和,幸好它可以幫我們求出某季度的總銷售額。

df[‘Q1’]。sum(),你就能得到一個Q1的總銷售額,除此之外,其他的聚合函式,max,min,mean都是可行的。

分組統計 - 團隊競賽

那麼按團隊進行統計呢?

在mysql裡是group by,Pandas裡也不例外,你只需要df。groupby(‘Team’)。sum()就能看到期望的答案了。

python pandas效率到底如何?

python pandas效率到底如何?

排序 - 誰是銷售冠軍

如果你關心誰的全年銷售額最多,那麼就要求助於sort_values方法了,在excel內是右鍵篩選,SQL內是一個orderby。

預設是順序排列的,所以要人為設定為False,如果你只想看第一名,只需要在該語句末尾新增。head(1)

python pandas效率到底如何?

python pandas效率到底如何?

python pandas效率到底如何?

python pandas效率到底如何?

切片-只給我看我關心的行

接下來就是涉及一些條件值的問題,例如我只關心Team為A的資料,在Excel裡是篩選框操作,在SQL裡寫個where就能搞定,在Pandas裡需要做切片。

檢視Pandas文件時,你可能已經見過各種切片的函數了,有loc,iloc,ix,iy,這裡不會像教科書一樣所有都講一通讓讀者搞混。

這種根據列值選取行資料的查詢操作,推薦使用loc方法。

df。loc[df[‘Team’]== ‘A’,[‘Salesman’, ‘Team’,‘Year’]],這裡用SQL語法理解更方便,loc內部逗號前面可以理解為where,逗號後可以理解為select的欄位。

python pandas效率到底如何?

python pandas效率到底如何?

如果想全選出,那麼只需將逗號連帶後面的東西刪除作為預設,即可達到select *的效果。

python pandas效率到底如何?

python pandas效率到底如何?

切片 - 多條件篩選

在Pandas中多條件切片的寫法會有些繁瑣,df。loc[ (df[‘Team’]== ‘A’ ) & (df[‘Total’] > 15000 ) ],新增括號與條件符。

python pandas效率到底如何?

python pandas效率到底如何?

這裡有一個有意思的小應用,如果你想給符合某些條件的員工打上優秀的標籤,你就可以結合上述新增列和切片兩點,進行條件賦值操作。

df。loc[ (df[‘Team’]== ‘A’ ) & (df[‘Total’] > 15000 ) , ‘Tag’] = ‘Good’

python pandas效率到底如何?

python pandas效率到底如何?

刪除列 - 和查詢無關,但是很有用

當然這裡只是個舉例,這時候我想刪除Tag列,可以del df[‘Tag’],又回到了之前。

二、連線

接下來要講join了,現在有每小時銷售員的職位對應表pos,分為Junior和Senior,要將他們按對應關係查到df中。

python pandas效率到底如何?

python pandas效率到底如何?

這裡需要認識一下新朋友,merge方法,將兩張表作為前兩個輸入,再定義連線方式和對應鍵。對應到Excel中是Vlookup,SQL中就是join。在pandas裡的連線十分簡單。

df = pd。merge(df, pos, how=‘inner’, on=‘Salesman’)

注意,這個時候其實我們是得到了新的df,如果不想覆蓋掉原有的df,你可以在等號左邊對結果重新命名。

這時候有了兩組標籤列(對應數值列),就可以進行多重groupby了。

python pandas效率到底如何?

python pandas效率到底如何?

當然這樣的結果並不能公平地反應出哪一組更好,因為每組的組員人數不同,可能有平均數的參與會顯得更合理,並且我們只想依據全年綜合來評價。

python pandas效率到底如何?

python pandas效率到底如何?

這裡的資料是捏造的,不過也一目瞭然了。

三、合併操作

最後以最簡單的一個合併操作收尾。

如果我又有一批資料df2,需要將兩部分資料合併。只需要使用concat方法,然後傳一個列表作為引數即可。不過前提是必須要保證他們具有相同型別的列,即使他們結構可能不同(df2的Team列在末尾,也不會影響concat結果,因為pandas具有自動對齊的功能)

pd。concat([df,df2])

python pandas效率到底如何?

python pandas效率到底如何?

python pandas效率到底如何?

python pandas效率到底如何?

尾聲

以上就是一些基礎的Pandas資料查詢操作了。作為Pandas初學者,如果能善用類比遷移的方法進行學習並進行總結是大有裨益的。如果看完本文還沒有能瞭解到你關心的查詢方法,可以留言聯絡,或許還可以有續集。

python pandas效率到底如何?DolphinDB智臾科技2018-12-12 11:12:38

Pandas最初被作為金融資料分析工具而開發出來,對時間序列分析提供了很好的支援。它還提供了處理大文字檔案的方法,在遇到SQL不能解決的問題時,其中一個可行的方案就是把檔案下載下來用Pandas來處理。

在DolphinDB與Pandas對於大文字檔案處理的效能對比中,我們測試了Pandas處理40G文字檔案的耗時和記憶體佔用,測試結果如下:

python pandas效率到底如何?

從結果中可以看到,Pandas處理大文字檔案的效能還不錯,但是DolphinDB比Pandas還要快1~2個數量級,並且記憶體佔用通常小於Pandas的1/2,記憶體佔用的最大值僅為pandas的1/3到1/2。在Pandas中對於一些特定任務如增加一列資料,記憶體佔用在執行前後不會發生變化,這是因為Pandas會預先分配一定的記憶體供後續使用。

效能對比報告中提供了測試指令碼,感興趣的朋友可以自行驗證~

python pandas效率到底如何?netkiller2021-06-20 14:03:29

通俗的講資料幀(DataFrame)是二維資料矩陣,即資料由行和列組成的表格,類似資料庫中的表和 Excel 電子表格。

Pandas 資料分析過程,首先從各種媒體中載入資料,然後將資料放入 DataFrame 處理,最後輸出,輸出包括輸出到各種媒體和視覺化圖表。

DataFrame 都能做哪些資料處理呢?

矩陣運算,排序,篩選,過濾,分組,以及各種函式(例如求和)等等,這些操作很類似 Excel 對錶格的操作。

DataFrame 是 Pandas 中最重要的物件,把它搞定,也就是熟練掌握 Pandas 資料分析了。