https://m.py.cn/jishu/jichu/30289.html
數據結構上
1、numpy的核心數據結構是ndarray,支持任意維數的數組,但要求單個數組內所有數據是同質的,即類型必須相同;而pandas的核心數據結構是series和dataframe,僅支持一維和二維數據,但數據內部可以是異構數據,僅要求同列數據類型一致即可。
numpy的數據結構僅支持數字索引,而pandas數據結構則同時支持數字索引和標簽索引。
2、numpy用於數值計算,pandas主要用於數據處理與分析。
numpy雖然也支持字符串等其他數據類型,但仍然主要是用於數值計算,尤其是內部集成了大量矩陣計算模塊,例如基本的矩陣運算、線性代數、fft、生成隨機數等,支持靈活的廣播機制。
pandas主要用於數據處理與分析,支持包括數據讀寫、數值計算、數據處理、數據分析和數據可視化全套流程操作。
以上就是Python pandas和numpy的區別,希望對大家有所幫助。
https://blog.csdn.net/pfm685757/article/details/108699003
一、什么是Pandas?
Pandas被定義為一個開源庫, 可在Python中提供高性能的數據處理。它建立在NumPy軟件包的頂部, 這意味着操作Numpy需要Pandas。Pandas的名稱源自”面板數據”一詞, 這表示來自多維數據的計量經濟學。它用於Python中的數據分析, 由Wes McKinney在2008年開發。
在Pandas之前, Python能夠進行數據准備, 但是它僅提供了有限的數據分析支持。因此, Pandas嶄露頭角, 並增強了數據分析的功能。無論數據的來源如何, 它都可以執行處理和分析數據所需的五個重要步驟, 即加載, 操作, 准備, 建模和分析。
二、什么是NumPy?
NumPy主要用C語言編寫, 它是Python的擴展模塊。它被定義為Python軟件包, 用於執行多維和一維數組元素的各種數值計算和處理。使用Numpy數組的計算比普通的Python數組快。
NumPy包是由Travis Oliphant在2005年創建的, 方法是將祖先模塊Numeric的功能添加到另一個模塊Numarray中。它還能夠處理大量數據, 並通過矩陣乘法和數據重塑而方便。
Pandas和NumPy都可以被視為任何科學計算(包括機器學習)的必不可少的庫, 因為它們具有直觀的語法和高性能的矩陣計算功能。這兩個庫也最適合數據科學應用程序。
三、Pandas和NumPy之間的區別
下面列出了Pandas和NumPy之間的一些區別:
- Pandas模塊主要處理表格數據, 而NumPy模塊處理數字數據。
- Pandas提供了一些強大的工具集, 例如DataFrame和Series, 主要用於分析數據, 而NumPy模塊提供了一個強大的對象, 稱為Array。
- Instacart, SendGrid和Sighten是使用Pandas模塊的一些著名公司, 而SweepSouth使用NumPy。
- Pandas涵蓋了更廣泛的應用程序, 因為它在73個公司堆棧和46個開發人員堆棧中被提及, 而在NumPy中, 提到了62個公司堆棧和32個開發人員堆棧。
- 對於50K或更少的行, NumPy的性能優於NumPy。
- 對於50萬行或更多的行, Pandas的性能要優於NumPy。在50K到500K行之間, 性能取決於操作的類型。
- NumPy庫提供用於多維數組的對象, 而Pandas能夠提供稱為DataFrame的內存中二維表對象。
- 與Pandas相比, NumPy消耗更少的內存。
- 與NumPy數組相比, Series對象的索引非常慢。
下表顯示了Pandas和NumPy之間的比較表:
比較基礎 | Pandas | NumPy |
---|---|---|
Works with | Pandas模塊適用於表格數據。 | NumPy模塊可用於數值數據。 |
Powerful Tools | Pandas擁有強大的工具, 例如Series, DataFrame等。 | NumPy具有像Arrays這樣的強大工具。 |
組織用途 | Pandas用於Instacart, SendGrid和Sighten等受歡迎的組織。 | NumPy用於像SweepSouth這樣的流行組織。 |
Performance | Pandas對於50萬行或更多行具有更好的性能。 | NumPy對於5萬行或更少的行具有更好的性能。 |
內存利用率 | 與NumPy相比, Pandas消耗大量內存。 | 與Pandas相比, NumPy消耗的內存更少。 |
Industrial Coverage | 在73個公司堆棧和46個開發人員堆棧中提到了Pandas。 | 在62個公司堆棧和32個開發人員堆棧中都提到了NumPy。 |
Objects | Pandas提供了稱為DataFrame的2d表對象。 | NumPy提供了多維數組。 |
知乎:一只小猴 https://zhuanlan.zhihu.com/p/146754890
本文我們就來了解一下在數據處理時常用到的numpy和pandas到底是什么?該如何使用呢?
一、Numpy
numpy是以矩陣為基礎的數學計算模塊,提供高性能的矩陣運算,數組結構為ndarray。
首先需要明確數組與列表的區別:數組是一種特殊變量,雖與列表相似,但列表可以存儲任意類型的數據,數組只能存儲一種類型的數據,同時,數組提供了許多方便統計計算的功能(如平均值mean、標准差std等)。
那么numpy有哪些功能呢?
首先在使用前要導入該模塊(導入前要安裝,方法自行搜索吧(*^-^*)),代碼如下:
import numpy as np
1. 通過原有列表轉化為數組
2. 直接生成數組
① 生成一維數組
上圖中由於生成一維數組時,沒有給參數10 定義數據類型,所以數組元素的類型默認為float64。那定義數據類型為整型時會是什么結果呢?
② 生成多維數組
zeros返回來一個給定形狀和類型的用0填充的數組,同理,ones返回來一個給定形狀和類型的用1填充的數組。但更多情況下我們想指定某個值,這時用np.full(shape, val)生成全為val的值,如下:
3. 隨機數取值
我們知道random庫中可以通過random.randint(5,10)來隨機生成一個5-10的數,如下:
在numpy中也有一個類似的加強版的功能。
4. 范圍取值
5. 訪問數組中的元素
6. 基本數學運算
numpy在做運算時,是對數組中每個元素都進行運算。
常用的運算符號及等價函數總結如下:
7. 數組變形
數組變形時,數組總大小保持不變,如上圖中我們定義了一個兩行五列的數組,總大小為2*5=10,經變形后得到一行十列的數組,總大小仍為10,但我們無法變成3*4或6*9等類型。
8. 數組拼接
9. 數組排序
二、Pandas
pandas是基於numpy數組構建的,但二者最大的不同是pandas是專門為處理表格和混雜數據設計的,比較契合統計分析中的表結構,而numpy更適合處理統一的數值數組數據。pandas數組結構有一維Series和二維DataFrame。
使用前同樣需要先導入該模塊,代碼如下:
import pandas as pd
1. Series
Series是一種類似於一維數組的對象,它由一組數據以及一組與之相關的數據標簽(索引index)組成。
Series的字符串表現形式為:索引在左邊,值在右邊。如果不為數據指定索引,則會默認創建一個0到n-1的整數型索引。
① 通過原有字典轉化為數組
② 訪問元素
與numpy相比,除了根據位置獲取值外,還可以根據索引獲取。
③ 向量化運算
上圖運行結果可以看到出現了缺失值NaN(not a number),這是因為索引值b、c、d、e、f、g只出現在一個一維數組中。在數據分析過程中,我們通常不希望缺失值出現,那么如何解決呢?
一般常用的有兩種方法:
2. DataFrame
DataFrame是一個表格型的數據結構,其中的數據是以一個或多個二維塊存放的,而不是列表、字典或別的一維數據結構。它含有一組有序的列,每列可以是不同的數據類型,它既有行索引,也有列索引。
① 將原有字典轉化為DataFrame
② 訪問元素
③ 條件篩選
④ 排序
⑤ 應用函數
其他常用函數舉例如下:
# 取前五行 table.head() # 取后五行 table.tail() # 查看行列數 table.shape() # 查看每一列的統計信息 table.describe() ......
以上就是numpy與pandas的基礎內容,如有遺漏或錯誤,歡迎評論區指正~~