- Python廣告數據挖掘與分析實戰
- 楊游云 周健
- 634字
- 2021-04-02 14:21:22
3.2.1 數據結構概述
1.Series
Series與NumPy中的一維數組array類似,與Python的基本數據結構list也很相近,區別在于list中的元素可以是不同的數據類型,而Series中只允許存儲相同的數據類型。
下面嘗試創建一個簡單的Series,并分析其特點。
In [13]: s = pd.Series([1,2,3,np.nan,5]) In [14]: s Out[14]: 0 1.0 1 2.0 2 3.0 3 NaN 4 5.0 dtype: float64
Series中的每個數據對應一個索引值,在默認情況下,索引都是從0開始的整數。不過,我們也可以自定義索引:
In [15]: s2 = pd.Series([1,2,3,np.nan,5],index =[100,101,102,103,104]) In [16]: s2 Out[16]: 100 1.0 101 2.0 102 3.0 103 NaN 104 5.0 dtype: float64
可以通過以下兩個屬性依次顯示Series對象的索引和值。
In [19]: s2.index Out[19]: Int64Index([100, 101, 102, 103, 104], dtype='int64') In [20]: s2.values Out[20]: array([ 1., 2., 3., nan, 5.])
2.DataFrame
DataFrame提供的是一個類似表的結構,可以將其看作由多個Series組成的數據框,它的列名稱為columns,行名稱為index,而表中間的就是數據值。
下面看一個用字典創建DataFrame的例子。
In [21]: df1 = pd.DataFrame({'ID':pd.Series([1,2,3,4,5,6]), ...: 'Age':pd.Series([18,50,32,22,16,25])} ) In [22]: df1 Out[22]: Age ID 0 18 1 1 50 2 2 32 3 3 22 4 4 16 5 5 25 6
現在嘗試獲取列,若只想獲取其中的某一列,返回的就是一個Series,若想同時獲取多列,返回的就是一個DataFrame。
In [23]: df1['ID'] Out[23]: 0 1 1 2 2 3 3 4 4 5 5 6 Name: ID, dtype: int64 In [24]: df1[['ID','Age']] Out[24]: ID Age 0 1 18 1 2 50 2 3 32 3 4 22 4 5 16 5 6 25
如果想在前面的基礎上新增一些列,在DataFrame中也可以輕松實現。
In [25]: df1['Sex'] = ['F','M','M','F','M','F'] In [26]: df1 Out[26]: Age ID Sex 0 18 1 F 1 50 2 M 2 32 3 M 3 22 4 F 4 16 5 M 5 25 6 F
同樣,如果我們想要刪除列,直接使用DataFrame中的drop函數即可,但需要用axis=1來表示刪除列,否則默認是刪除行。
In [27]: df1.drop('Sex',axis=1) Out[27]: Age ID 0 18 1 1 50 2 2 32 3 3 22 4 4 16 5 5 25 6
另外,我們還可以使用loc函數進行一些查詢行內容的操作。
In [28]: df1.loc[3] Out[28]: Age 22 ID 4 Sex F Name: 3, dtype: object
以上是對Pandas中兩種常用數據結構Series和DataFrame的簡單介紹,接下來我們將正式介紹Pandas常用功能。