python pandas效率到底如何?

時間 2021-05-30 00:05:06

1樓:Database666

如果使用的資料不大,哪個系統都能做,效能差別也不算大,pandas的問題在於無法處理資料規模超過10G左右的資料。沒辦法,人家開始的時候就不是為處理10G以上規模的資料而設計的。有時候要merge_asof兩個表,3/5G的表都沒法處理。

2樓:豈安科技

在使用Pandas之前,大多數資料分析師已經掌握了Excel和SQL,並且在剛上手Pandas時會經常習慣性想到「老辦法」。"如果誰能把常用的資料查詢語法做個對比就好了",我也曾不止一次地想享受前人的成果,無奈發現網上的文章側重不同且深淺不一,還涉及到一些Pandas新老版本的問題,於是決定自己動手。我是豈安科技業務風險分析師大毛,以下,GO~

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

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

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

df['Total'] = df['Q1']+df['Q2']+df['Q3']+df['Q4']

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

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

那麼按團隊進行統計呢?

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

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

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

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

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

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

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

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

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

df.loc[ (df['Team']== 'A' ) & (df['Total'] > 15000 ) , 'Tag'] = 'Good'

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

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

df = pd.merge(df, pos, how='inner', on='Salesman')

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

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

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

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

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

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

pd.concat([df,df2])

尾聲

3樓:BigQuant

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

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

4樓:

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

Rdatatable/data.table

python pandas是否能代替excel vba

坦克 要麼Access,要麼MySQL。我現在的資料量比你多些,二十多萬吧,用MySQL比較舒服。Access的話有時候匯入存在一些小問題,搞得不舒服。Python就沒必要吧,sql語句比較好用的,用幾次就習慣了,下一次使用直接複製修改一些東西就行。 數分高階 資料量達到幾十萬後用 Excel 做運...

Python Pandas如何處理百億行,數十列的資料?

find goo 使用Koalas,支援大資料處理利器spark,使用pandas API on Apache Spark,這樣你使用的pandas程式改動比較小,相對於pyspark。Virgin Hyperloop One如何使用Koalas將處理時間從幾小時降到幾分鐘 無縫的將pandas切換...

Python pandas怎麼把幾個列求和連線呢?

Self discipline import pandas as pd list 梁海峰 71,83,143,40,1988 12 18 楊亞夫 56,34,110,104,1988 05 21 周峰 45,42,102,67,1988 05 14 鄒鵬 134,122,137,136,1988 0...