上一節,我們已經安裝了numpy,基於numpy,我們繼續來看下pandas
pandas用於做數據分析與數據挖掘
pandas安裝
使用命令
pip install pandas
出現上圖表示安裝成功。
pandas又兩大數據結構,數據分析相關的都圍繞着這兩種結構進行:
①Series
②DataFrame
Series用於存儲序列這樣的一維數據,DataFrame用於存儲多維數據
Series對象
主要有2個相關聯的數組組合在一起:①主元素數組 ②Index數組
index value 0 -12 1 5 2 7 3 2
1.聲明Series對象
從上圖可以看出,左側的是index,右側的是標簽對應的元素
若不指定標簽,默認的標簽是從0開始的的遞增數值標簽,最好使用有意義的便簽,用以區分和識別每個元素
分別查看組成Series的兩個數組,可以像下面一樣調用它的兩個屬性:index(索引)和values(元素)
2.選擇內部元素
或者直接使用index訪問
選擇多個元素時
3.元素賦值
既然知道如何選取單個元素,那么元素賦值就不言而喻了
使用index:
4.用NumPy數組或其他Series對象定義新的Series對象
4.1使用NumPy定義
4.2使用原有Series對象定義
然后,這樣做的時候千萬要小心,新的Series中的元素是引用的NumPy數組或原有Series對象中的,並不是其副本。簡而言之,如果改變原NumPy數組中的值,那么新的Series中的值也會發生改變。
5.篩選元素
獲取s對象中所有大於8的元素
6.Series對象運算和數學函數
數學中的加減乘除同樣適用Series
7.Series對象的組成元素
Series對象往往包含重復的元素,你很可能想知道里邊包含哪些元素,統計元素重復出現的次數或者判斷一個元素是否在Series中
接下來,還可以統計重復元素在在Series中出現的次數
isin()函數用來判斷所屬關系,也就是判斷給定的一列元素是否包含在數據結構之中,isin()函數返回布爾值
8.NaN
我們在做運算的時候,如果出現下面這種情況,對負數求對數會怎么樣呢?
NaN(not a Nmber,非數值)
當數據結構中若字段為空或者不符合數字的定義時,用這個特定的來表示
創建數據結構時,可以為缺失的項輸入np.NaN
isnull()和notnull()函數用來識別沒有對應元素的索引時非常好用
上面兩個函數返回兩個由布爾值組成的Series對象,其元素時True或者False取決於原Series對象是否為NaN.如果是NaN,isnull()函數值返回為True,反之。
9.Series用作字典
在上述例子中,索引數組用字典的鍵來填充,每個索引所對應的元素為用作索引的鍵在字典中對應的值。如遇缺失值,pandas就會為添加NaN
10.Series對象之間的運算
根據上圖我們可以看出,Series對象之間的運算
只對標簽相同的元素求和
DataFrame對象
DataFrame這種列表式數據結構跟工作表(最常見的是Excle工作表)極為相似,其設計初衷是將Series的使用場景由一維擴展到二維。
index | first_name | last_name | sex |
0 | Tom | Green | Man |
1 | Json | Smith | Man |
2 | Alice | Smith | Woman |
DataFrame有兩個索引組,第一個數組與行相關,第二個數組與列相關。
1.定義DataFrame對象
新建DataFrame對象的常用方法是傳遞一個dict對象給DataFrame()構造函數。
如果用來創建DataFrame對象的dict對象包含一些用不到的數據,你可以只選擇自己感興趣的東西。在DataFrame構造函數中,用column選項指定需要的列即可。
DataFrame對象跟Series一樣,如果Index數組沒有明確指定標簽,pandas也會為其添加一列從0開始的數值作為索引。如果要指定索引,那么只需要把標簽放在數組中,賦給index選項
既然有index,columns選項,那么就可以使用新方法定義DataFrame
例如:使用np.arange(16).reshape((4,4))生成一個4*4型,包含數字0~15的矩陣
2.選取元素
2.1獲取列名
如果想知道DataFrame對象所有列的名稱,在它上面調用columns屬性即可
2.2獲取索引
類似的,獲取索引列表,調用index屬性即可
2.3獲取元素
獲取存儲在數據結構中的元素
2.4獲取指定列
選擇一列
另一種是用列名稱作為DataFrame實例的屬性
2.5獲取行
至於DataFrame中的行,用ix屬性和行的索引值就能獲取
同時,也可以使用索引來選取行,第一個索引作為起始,第二個作為結束。
2.6獲取具體的元素
如果要獲取存儲在DataFrame中一個具體的元素,需要指定元素所在的列名稱與行名稱
3.賦值
3.1添加二級標簽
根據index與columns屬性即可對DataFrame進行賦值
使用name屬性為二級結構指定標簽
3.2添加新列
我們從上面可以看出,新增的一列全部都是America,那么我們加入需要將數組更新到這一列怎么做呢
3.2為DataFrame的各列賦一個Series對象也可以創建DataFrame,例如使用np.arange()函數生成一個遞增序列
4.元素的所屬關系
isin()函數在DataFrame中也是適用的
使用上述的返回結果作為條件,將得到一個新的DataFrame,其中只包含滿足條件的元素
5.刪除一列
使用del刪除
6.篩選
7.用嵌套字典生成DataFrame對象
當不存在對應元素時候,使用NaN填補
8.DataFrame轉置