思考python數據分析工具pandas-1簡介

2021-01-10 雪峰磁針石

介紹

我們生活在一個充滿數據的世界裡。事實上,數據如此之多,幾乎不可能全部理解。我們比以往任何時候都更加依賴計算機來幫助我們理解這些海量的信息。無論是通過搜尋引擎進行數據發現,還是通過圖形用戶界面進行展示,或是通過算法進行聚合,我們都會使用軟體來處理、提取並以對我們有意義的方式呈現數據。"pandas "已經成為一個越來越受歡迎的處理大數據集的軟體包。無論是分析大量數據、呈現數據,還是對數據進行歸一化處理並重新存儲,pandas都有廣泛的功能支持大數據需求。雖然pandas並不是目前性能最強的選擇,但它是用Python編寫的,所以對於初學者來說,它很容易學習,編寫速度快,而且有豐富的API。

關於pandas

pandas 是用 Python 處理大數據集的常用包。它是為處理一般小於等於1 GB 的數據集而設計的,但實際上這個限制取決於設備的內存限制。經驗法則是至少有五到十倍於數據集的內存量。一旦數據集開始超過G字節的範圍,一般建議使用不同的庫,如Vaex。

pandas這個名字來自於面板數據(panel data)一詞,指的是表格數據。其想法是,你可以用更大的數據面板來製作面板。當pandas首次實現時,它與NumPy緊密耦合,NumPy是一個流行的Python包,用於科學計算,提供了一個n維數組對象,用於執行高效的矩陣數學運算。現在pandas實現依然有Not a Number (NaN)類型的闡述和它的API中看到它緊密耦合的證據,比如dtype參數。

pandas從一開始就是真正的開源項目。原作者 Wes McKinney 在 Python Podcast.init中承認,為了促進開源社區和鼓勵貢獻,pandas 與 NumPy Python 軟體包的聯繫可能有點太緊密了,但回過頭來看,他不會有任何不同的做法。NumPy曾經是而且現在仍然是非常流行和強大的Python庫,用於高效的數學運算。在pandas誕生之初,NumPy是科學界主要的數據計算包,為了以現有用戶和貢獻者群體熟悉的方式快速簡單地實現pandas,NumPy包成為pandas DataFrame的底層數據結構。NumPy建立在C語言擴展之上,雖然它提供了Python API,但主要的計算幾乎全部發生在C語言中,這也是為什麼它如此高效的原因。C語言比Python快得多,因為它是一種低級語言,因此不會像Python那樣為了提供所有高級的好東西(如內存管理)而消耗內存和CPU開銷。

即使到了今天,開發人員仍然非常依賴NumPy,並且經常在他們的pandas程序中完全執行基於NumPy的操作。

對於普通開發者來說,Python和C語言在性能上的差異往往不是很明顯。在大多數情況下,Python的速度一般都足夠快,而且Python的高級特性(內置的內存管理和偽代碼一樣的語法等等)一般都超過了自己管理內存所帶來的頭痛。然而,當對數千行的龐大數據集進行操作時,這些微妙的性能差異會複合成更顯著的差異。對於普通的開發者來說,這可能看起來絕對離譜,但對於科研界來說,花幾天時間等待大數據計算運行並不稀奇。有時,計算確實需要這麼長的時間;然而,其他時候,程序只是以一種低效的方式編寫。在pandas中,有許多不同的方法可以做同樣的事情,這使得它靈活而強大,但也意味著它可能會導致開發人員走上效率較低的實現路徑,導致數據處理速度非常慢。

作為開發者,我們生活在一個計算資源被認為是廉價的時代。如果一個程序的CPU負擔很重,對我們來說,簡單地將AWS實例升級到更大的機器,多付幾塊錢,比投入時間去根治程序的問題,解決CPU的過度使用問題要容易得多。雖然擁有如此現成的計算資源是美好的,但也讓我們成為了懶惰的開發者。我們常常忘記,50年前的電腦佔據了整個房間,光是把兩個數字相加就需要幾秒鐘。很多程序的速度根本就夠快,即使不是以最優化的方式編寫,也能滿足性能要求。與簡單的網絡服務相比,大數據處理的計算資源佔用了大量的能源;它們需要大量的內存和CPU,往往需要大型機器在多個小時內以資源極限運行。這些程序對硬體的要求很高,有可能導致更快的老化,而且既要保持機器的冷卻,又要保證計算的運行,需要大量的能量。

作為開發者,我們有責任編寫高效的程序,這不僅僅是因為它們速度更快、成本更低,還因為它們將減少計算資源,這意味著更少的電力、更少的硬體,以及總體上更多的可持續性。

在接下來的章節中,本書的目標是幫助開發人員實現性能優異的pandas程序,並幫助他們形成選擇高效數據處理技術的直覺。在我們深入探討pandas所構建的底層數據結構之前,我們先來看看現有的一些有影響力的項目是如何利用pandas的。

pandas如何幫助構建黑洞的圖像

pandas被用來歸一化從幾臺大型望遠鏡收集到的所有數據,構建出第一張黑洞的圖像。由於黑洞離我們太遠,需要像地球一樣大的望遠鏡才能直接捕捉到黑洞的圖像,所以,科學家們想出了一個辦法,利用我們現在最大的望遠鏡來拼湊黑洞的圖像。

在這次國際合作中,地球上最大的望遠鏡被用作一個更大的理論望遠鏡的代表單鏡,而這個望遠鏡需要捕捉黑洞的圖像。由於地球會轉動,每個望遠鏡都可以作為一個以上的鏡子,填補理論上更大的望遠鏡圖像的重要部分。這些較大的理論圖像的碎片,然後通過幾個不同的圖像預測算法訓練,以識別不同類型的圖像。我們的想法是,如果這些不同的圖像再現技術中的每一種都輸出相同的圖像,那麼他們就可以確信黑洞的圖像是真實的圖像(或相當接近)。

image.png

1 來自射電望遠鏡的圖像被採集到硬碟上,然後飛到世界各地的麻省理工學院的實驗室,在那裡它們被加載到大熊貓中。然後對數據進行歸一化處理,將從望遠鏡中捕捉到的數據進行時間上的同步,去除來自地球大氣層的幹擾等,並計算出單個望遠鏡的絕對相位等隨時間變化的情況。然後將這些數據送入不同的圖像預測算法中,最終,第一張黑洞的圖像誕生了。

pandas如何幫助金融機構對未來市場做出更明智的預測

財務顧問一直在尋找競爭中的優勢。許多金融機構使用pandas以及機器學習庫來確定新的數據點是否可以幫助財務顧問做出更好的投資決策。新的數據集通常會被加載到pandas中,並進行歸一化處理,然後根據歷史市場數據進行評估,看數據是否與市場趨勢相關。如果相關,這些數據就會被傳遞給顧問,用於做出金融投資決策。它也可能被傳遞給他們的客戶,以便他們也能做出更明智的決定。

金融機構還使用pandas來監控他們的系統。他們尋找可能影響其交易表現的伺服器的中斷或緩慢。

pandas如何幫助提高內容發現?

公司每天都在收集大量的用戶數據。對於廣播公司的收視率,數據對於展示相關廣告和將正確的內容呈現在感興趣的用戶面前都特別有意義。通常情況下,收集到的用戶數據會被加載到pandas中,並分析他們觀看內容的瀏覽模式。他們可能會尋找一些模式,比如他們什麼時候看某些內容,看什麼內容,什麼時候看完某些內容,尋找新的內容。然後,根據這些模式推薦新的內容或相關產品廣告。最近有很多工作也是為了改善商業模式,讓用戶不至於被放到一個泡沫中(即推薦的內容並不是他們之前一直在看的同一類型的內容,或者呈現相同的觀點)。通常情況下,這是通過從業務方面避免內容孤島來實現的。

現在我們已經看了熊貓的一些有趣的用例,在第2章我們將看看如何使用pandas來訪問和合併數據。

相關焦點

  • Python數據分析:pandas讀取和寫入數據
    我的公眾號是關於自己在數據分析/挖掘學習過程中的一些技術和總結分享,文章會持續更新......繼續深入學習pandas相關操作,數據讀取寫入、分組、合併,轉換等等。前面一篇文章裡已經寫了關於描述性統計以及常用的基本操作。接下來的一段時間裡,我將陸續地去掌握並輸出。這篇文章是關於數據讀取與寫入的知識點。
  • python數據分析專題 (7):python數據分析模塊
    python是一門優秀的程式語言,而是python成為數據分析軟體的是因為python強大的擴展模塊。
  • 基於python的大數據分析-pandas數據讀取(代碼實戰)
    長按上方二維碼加入千人QQ群基於python的大數據分析實戰學習筆記-Anaconda基於python的大數據分析實戰學習筆記-pandas(數據分析包)基於python的大數據分析實戰學習筆記-pandas之DataFrame我們常見的數據存儲格式無非就是csv、excel、txt以及資料庫等形式
  • Python學習120課 pandas簡介kaggle下載數據及pandas讀取外部數據
    【每天幾分鐘,從零入門python編程的世界!】numpy的基本的東西我們學習差不多了,後面具體應用中遇到問題具體分析,然後去深入了解遇到的新的知識點就行。現在我們開始學習pandas,pandas一般用的更多,pandas是基於numpy去寫的。pandas是一個專門做數據結構和數據分析的庫。
  • Python數據分析之pandas數據讀寫
    引言我們現在已經基本熟悉了pandas庫以及它所提供的用於數據分析的基礎功能,也知道了DataFrame和Series是這個庫的核心,數據處理、計算和分析都是圍繞他們展開的。本節將學習pandas從多種存儲媒介(比如文件和資料庫)讀取數據的工具,還將學到直接將不同的數據結構寫入不同格式文件的方法,而無需過多考慮所使用的技術。本節的主要內容為pandas的多種I/O API函數,它們為大多數常用格式的數據作為DataFrame對象進行讀寫提供了很大便利。
  • Python數學建模技巧之pandas數據處理
    既然提前將數據集公布了出來,準備做C題的隊伍肯定都是會在賽前就將數據集進行一些基本的預處理,包括數據清洗、數據集成、數據轉換、數據規約、數據離散化等操作,甚至在不知道題目的情況下就嘗試著用一些數據挖掘的算法去試圖發現一些數據集中所包含的潛在規律。基本工具Excel肯定沒法去完成這些複雜的數據處理任務,而用matlab去完成這些任務的話,又會極為繁瑣複雜和不方便。
  • python數據分析常用庫之pandas入門(2)
    索引、選擇和賦值昨天介紹了pandas的模塊引入、創建和讀取數據,今天主要看看怎麼從數據結構中獲得想要的值,也就是數據的索引查找、
  • 大數據下Python的三款大數據分析工具
    /venvs/python-big-data/bin/activate$ pip install ipython$ pip install pandas$ pip install pyspark$ pip install scikit-learn$ pip install scipy好的,讓我們開始大數據處理之旅~
  • python數據分析萬字乾貨!一個數據集全方位解讀pandas
    說到python與數據分析,那肯定少不了pandas的身影,本文希望通過分析經典的NBA數據集來系統的全方位講解pandas包,建議搭配IDE一遍敲一邊讀哦。話不多說,開始吧!>對列進行操作指定數據類型數據清洗數據可視化pandas的安裝建議直接安裝anaconda,會預置安裝好所有數據分析相關的包,當然也可以使用pip安裝。
  • Python數據核對系列之2—power query VS pandas
    table1 as table:選擇表格1(也就是查詢生成的結果表),我們選擇的是BIkey1 as any : 選擇任意格式的關鍵欄位。我們選擇的是BI表裡的GID欄位。它需要用列表形式展示。上面說完了query的模式,下面我們聊聊python的數據分析庫pandas。query好用是好用,但遇到千萬級別的數據量就會慢到懷疑人生,它會多次加載,計算性能也會很慢。這時就得用python這種編程數據處理工具了。關於python的安裝、環境設置,大家可以百度即可。python免費,可以官網直接下載就行。
  • Python數據分析之NumPy庫
    NumPy庫簡介NumPy庫使用Python進行科學計算,尤其是數據分析時,所用到的一個基礎庫。它是大量Python數學和科學計算包的基礎,比如我們後面會講到的pandas庫就用到了NumPy。pandas庫專門用於數據分析,充分借鑑了Python標準庫NumPy的相關概念。
  • Python視頻教程網課編程零基礎入門數據分析網絡爬蟲全套Python...
    因篇幅有限,以下展示的只是課程裡部分內容如對python課程有更多疑問 請諮詢客服 1零基礎入門全能班 01 –python簡介 02 第一個程序 03-python執行方式和pycharm設置 04-程序的注釋和算術運算符 05 程序執行原理 06變量的使用以及類型 07
  • 《pandas數據讀取》
    今天呢就給大家分享一個數據分析裡面的基礎內容之pandas數據讀取 數據讀取是進行數據預處理,建模與分析的前提,不同的數據源
  • 數據分析工具篇——pandas高效函數
    ,這些方法圍繞數據的查詢結果進行深入處理,在數據分析中主要做特徵處理工作。   這一功能顧名思義即為多列合一列以及一列分多列,在EXCEL和SQL中都有對應的函數可以完成操作,pandas中也給出了相應的方法:數據的拆分:df = pd.DataFrame({'AB': ['A1-B1-C1', 'A2-B2-C1']})df['C'], df['D'], df['E'] = df['AB']
  • 數據科學 | pandas數據導入與導出
    當我們開始著手做一個數據分析項目時,選擇和導入數據集是第一個步驟,而導出數據雖然非必需,但有時候我們也需要保存處理或者分析後的結果,方便下次使用。在pandas中,它已經為我們提供了很多不同格式數據的導入和導出方法,下面這篇文章將具體介紹一些較為常用的方法,包括excel、csv文件以及資料庫的導入導出等。數據導入和導出是pandas中很基礎且重要的一個部分。
  • Python Excel 辦公自動化系列——win32com/pandas庫使用詳解
    ) # 獲取單元格信息 第n行n列,不用-1    cell01_value = sheet.Cells(1,2).Value print("cell01的內容為:",cell01_value) # 寫入表格信息    sheet.Cells(2, 1).Value = "win32com"    # 保存表格
  • 懂Excel輕鬆入門Python數據分析包pandas(二十八):二分法查找
    此系列文章收錄在:數據大宇宙 > 數據處理 > E-pd轉發本文並私信我"python",即可獲得Python資料以及更多系列文章(持續更新的)經常聽別人說 Python 在數據領域有多厲害,結果學了很長時間,連數據處理都麻煩得要死。
  • 自動生成pandas代碼,python數據處理神器
    今天我要說的不是怎麼寫代碼,而是介紹一款我親手打造的小工具,它作為探索數據的工具,你不僅不需要寫任何的代碼,它最終還會自動生成pandas代碼。python 上其實有一些庫或者工具,是基於pandas做的界面操作,而我的工具有兩大特性可以秒殺他們。現在來簡單看看所見即所得,人工操作轉代碼這個工具的核心功能,就是自動生成代碼!!
  • Python做數據分析-簡潔、易讀、強大
    在數據分析和交互、探索性計算以及數據可視化等方面,相對於R、MATLAB、SAS、Stata等工具,Python都有其優勢。近年來,由於Python庫的不斷發展(如pandas),使其在數據挖掘領域嶄露頭角。結合其在通用編程方面的強大實力,我們完全可以只使用Python這一種語言去構建以數據為中心的應用程式。
  • python-pandas讀寫csv數據
    sex", "age"],index_col=0,sep=",") #指定列display(df.head(3), df1.head(3), df2.head(3), df3.head(3), df4.head(3), df5.head(3))1、使用pandas讀取csv文件的全部數據:pd.read_csv("filepath",[encoding='編碼'])(1)用記事本打開