Pandas —— (1)基礎數據結構概念和創建

一、Pandas簡介

1.1 數據結構

在這裏插入圖片描述

1.2 大小可變與數據複製

  • Pandas 所有數據結構的值都是可變的,但數據結構的大小並非都是可變的,比如,Series 的長度不可改變,但 DataFrame 裏就可以插入列。

  • Pandas 裏,絕大多數方法都不改變原始的輸入數據,而是複製數據,生成新的對象。 一般來說,原始輸入數據不變更穩妥。

二、Series 數據結構

2.1 Series簡介

Series 是帶有標籤的一維數組,可以保存任何數據類型(整數,字符串,浮點數,Python對象等),軸標籤統稱爲索引

s = pd.Series(np.random.rand(5))
print(s)
print(type(s))
# 查看數據、數據類型

print(s.index,type(s.index))
print(s.values,type(s.values))
# .index查看series索引,類型爲rangeindex
# .values查看series值,類型是ndarray

在這裏插入圖片描述

核心:series相比於ndarray,是一個自帶索引index的數組 → 一維數組 + 對應索引
所以當只看series的值的時候,就是一個ndarray。 series和ndarray較相似,索引切片功能差別不大 series和dict相比,series更像一個有順序的字典(dict本身不存在順序),其索引原理與字典相似(一個用key,一個用index)

2.2 Series 創建方法

2.2.1 由字典創建

字典的key就是index,values就是values

dic = {'a':1 ,'b':2 , 'c':3, '4':4, '5':5}
s = pd.Series(dic)

2.2.2 由數組創建(一維數組)

arr = np.random.randn(5)
s = pd.Series(arr)
# 默認index是從0開始,步長爲1的數字

# 也可以自己設置index,dtype和 name參數
s = pd.Series(arr, index = ['a','b','c','d','e'],dtype = np.object, name = 'test')
# index參數:設置index,長度保持一致
# dtype參數:設置數值類型
# name爲Series的一個參數,創建一個數組的名稱,格式爲str,如果沒用定義輸出名稱,輸出爲None

重命名

# .rename()重命名一個數組的名稱,並且新指向一個數組,原數組不變
s2 = s.rename('hehehe')

三、Dataframe數據結構

3.1 Dataframe簡介

"二維數組"Dataframe:是一個表格型的數據結構,“帶有標籤的二維數組”。包含一組有序的列,其列的值類型可以是數值、字符串、布爾值等。

Dataframe中的數據以一個或多個二維塊存放,Dataframe帶有index(行標籤)和columns(列標籤)(不是列表、字典或一維數組結構。)

data = {'name':['Jack','Tom','Mary'],
        'age':[18,19,20],
       'gender':['m','m','w']}
frame = pd.DataFrame(data)
print(frame'\n該數據類型爲:',type(frame))  # 查看數據,數據類型爲dataframe
print(frame.index,'\n該數據類型爲:',type(frame.index))# .index查看行標籤
print(frame.columns,'\n該數據類型爲:',type(frame.columns))# .index查看行標籤
print(frame.values,'\n該數據類型爲:',type(frame.values))# .values查看值,數據類型爲ndarray

在這裏插入圖片描述

# to_list()數據類型轉換成列表
frame.index.to_list()
frame.columns.to_list()
frame.values.to_list()

3.2 Dataframe創建方法

3.2.1 由數組/list組成的字典創建

# 由數組/list組成的字典 創建Dataframe,columns爲字典key,index爲默認數字標籤
# 字典的值的長度必須保持一致!
data1 = {'a':[1,2,3],
        'b':[3,4,5],
        'c':[5,6,7]}
data2 = {'one':np.random.rand(3),
        'two':np.random.rand(3)}   # 這裏如果嘗試  'two':np.random.rand(4) 會怎麼樣?
df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)
# 和Series一樣也可以自己設置參數值
df1 = pd.DataFrame(data1, columns = ['b','c','a','d'])
df2 = pd.DataFrame(data2, index = ['f1','f2','f3'])

3.2.2 由Series組成的字典創建

data1 = {'one':pd.Series(np.random.rand(2)),
        'two':pd.Series(np.random.rand(3))}  # 沒有設置index的Series
data2 = {'one':pd.Series(np.random.rand(2), index = ['a','b']),
        'two':pd.Series(np.random.rand(3),index = ['a','b','c'])}  # 設置了index的Series
df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)

3.2.3 通過二維數組直接創建

ar = np.random.rand(9).reshape(3,3)
df2 = pd.DataFrame(ar, index = ['a', 'b', 'c'], columns = ['one','two','three'])  # 可以嘗試一下index或columns長度不等於已有數組的情況

打賞

碼字不易,如果對您有幫助,就打賞一下吧O(∩_∩)O

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章