pandas中用來承載數據的兩個最重要的結構分別是: Series:相當於增強版的一維數組 DataFrame:相當於增強版的二維數組 pandas最大的優勢在於處理表格類數據,如果數據維度超過二維,一般我們會使用另一個 python的庫 numpy。 本篇主要介紹這兩種核心數據結構的創建方式。 1 ...
pandas
中用來承載數據的兩個最重要的結構分別是:
- Series:相當於增強版的一維數組
- DataFrame:相當於增強版的二維數組
pandas
最大的優勢在於處理表格類數據,如果數據維度超過二維,一般我們會使用另一個 python
的庫 numpy
。
本篇主要介紹這兩種核心數據結構的創建方式。
1. Series
pandas
的Series
是一種帶有標簽索引的一維數據結構。
它可以表示任何一維帶標簽的數據,例如時間序列數據、運動員數據、股票價格等等。
pandas
的Series
由兩個數組構成:一個是數據數組,它可以是numpy數組、列表、字典等;另一個是索引數組,它指定數據數組中每個元素的標簽。
Series
可以進行各種數學運算、邏輯運算和複製操作,可以輕鬆創建、操作和使用。
pandas
的Series
特別強大之處就是可以使用各種方法進行數據的操作、處理和分析,因此在數據分析、數據處理和科學計算方面非常有用。
常用的創建 Series
有兩種方式:
1.1 從列表創建
l = [78, 89, 95]
s = pd.Series(l)
s.head()
從列表可以直接創建出 Series
,可以看出,與一般的一維數組相比,Series
多了一列索引信息。
其實,除此之外,Series
還有很多用於分析和統計的方法,後續我們再介紹。
索引預設是從0開始的數字,也可以在創建時設置有意義的索引名稱。
l = [78, 89, 95]
s = pd.Series(l, index=["語文", "數學", "英語"])
s.head()
1.2 從字典創建
d = {"a": 78, "b": 89, "c": 95}
s = pd.Series(d)
s.head()
從字典創建Series
時,會將字典的 key
作為了索引。
修改索引不用 index
參數,而是直接修改字典的 key
。
d = {"語文": 78, "數學": 89, "英語": 95}
s = pd.Series(d)
s.head()
2. Dataframe
pandas
的DataFrame
是一個二維的數據結構,可以存儲各種類型的數據,類似於Excel中的表格。
它由行和列組成,每一行和每一列都有一個索引值,可以通過索引值進行讀寫操作。
DataFrame支持許多操作,包括對數據的過濾、切片、排序、連接和聚合等。
它還可以從各種數據源(如CSV、SQL資料庫和Excel)中讀取數據,並將數據寫入這些數據源。
在 pandas
中,DataFrame
可以使用字典、列表、Numpy數組、其他pandas數據框等構建。
DataFrame
還有一些重要的屬性和方法,例如head
、tail
、describe
等,用於查看數據、統
計數據、隨機抽樣等。
除此之外,DataFrame
還支持pandas
中的許多高級操作,例如多重索引、透視表、重塑等。
這些功能使DataFrame
成為數據分析中必不可少的工具。
2.1 從列表創建
l = [[78, 89, 95], [65, 84, 100]]
df = pd.DataFrame(l)
df.head()
從列表創建DataFrame
之後,預設的索引和列名稱都是從0開始的數字。
也可以自定義DataFrame
的索引名稱和列名稱,通過 index
和 columns
參數。
l = [[78, 89, 95], [65, 84, 100]]
df = pd.DataFrame(l, index=["小明", "小紅"], columns=["語文", "數學", "英語"])
df.head()
2.2 從字典創建
d = [{"語文": 78, "數學": 89, "英語": 95}, {"語文": 65, "數學": 84, "英語": 100}]
df = pd.DataFrame(d)
df.head()
字典的key
作為列名稱,索引不設置的話,預設還是從0開始的數字。
2.3 從 numpy 數組創建
import numpy as np
data = np.array([[78, 89, 95], [65, 84, 100]])
df = pd.DataFrame(data)
df.head()
從 numpy
二維數組創建 DataFrame
和直接從列表創建類似。
註意,這裡只能從 numpy
的二維數組創建,如果是維度更高的數組,創建時會出錯。
data = np.array([[[78, 89, 95], [65, 84, 100]]])
df = pd.DataFrame(data)
df.head()
上面的 data
是三維數組,執行上面的代碼會有如下的錯誤信息:
3. 兩種結構互相轉換
pandas
的兩種核心結構之間是可以互相轉換的,可以將 Series
理解為 DataFrame
的一列。
3.1 Series 到 DataFrame
對於一個 Series
來說,可以理解成一列是索引,一列是數據。
將 Series
轉換為 DataFrame
有多種方式,通過字典來中轉是比較直觀的一種方式。
d = {"語文": 78, "數學": 89, "英語": 95}
s = pd.Series(d)
s.head()
由前面的介紹可知,紅色框內的是 Series
的索引(即 s.index
),
右邊一列數字部分是Series
的值(即s.values
)。
df = pd.DataFrame({"學科": s.index, "分數": s.values})
df.head()
這樣就轉換成了一個 DataFrame
,列名就是字典的key
,學科和分數。
3.2 DataFrame 到 Series
DataFrame
轉 Series
更加簡單,DataFrame
的每一列都可以轉成 Series
。
l = [[78, 89, 95], [65, 84, 100]]
df = pd.DataFrame(l, index=["小明", "小紅"], columns=["語文", "數學", "英語"])
df.head()
df["數學"]
type(df["數學"])
註意,DataFrame
只有選擇一列的時候才是一個 Series
,如果選擇多列的話,則還是一個 DataFrame
。
print(type(df[["數學", "語文"]]))
df[["數學", "語文"]]
4. 總結回顧
本篇主要介紹了pandas
的兩個核心數據結構 Series
和 DataFrame
。
首先介紹了它們各自的創建方式,即從普通的python
數據結構創建 Series
和 DataFrame
的常用方式。
然後也介紹了它們之間常用的互相轉換方法。
Series
和 DataFrame
的數據部分就是一維數組和二維數組,pandas
不過是在數據部分之上封裝了各種各樣的管理和分析統計的函數。
然而正因為有了這些函數,才讓pandas
成為數據分析的一件利器。
本文關聯的微信視頻號短視頻: