Python数据分析笔记——Numpy、Pandas库
Python數據分析——Numpy、Pandas庫
總第48篇
▼
利用Python進行數據分析中有兩個重要的庫是Numpy和Pandas,本章將圍繞這兩個庫進行展開介紹。
Numpy庫
Numpy最重要的一個特點是就是其N維數組對象,即ndarray,ndarray是一個通用的同構數據多維容器,其中的所有元素必須是相同類型的。每個數組都有一個shape(一個表示各維度大小的元組,即表示有幾行幾列)和dtype(一個用于說明數組數據類型的對象)。本節將圍繞ndarray數組展開。
?
Numpy基礎
1、創建ndarray數組
使用array函數,它接受一切序列型的對象,包括其他數組,然后產生一個新的Numpy數組。
嵌套序列將會被轉換成一個多維數組。
np.array會嘗試為每一個新建的數組推斷出適合它的數據類型。
arange是Python內置函數range的數組版。
2、數據類型
dtype是一個用來說明數組的數據類型的對象。其命名方式是一個類型名(float和int)后面跟一個用于表示各元素位長的數字。常用的是float64和int32.
也可以使用astype進行數組中數據類型的轉化。
3、基本的索引和切片
(1)元素索引、根據元素在數組中的位置來進行索引。
一維數組的索引
多維數組的索引
(2)切片索引
一維數組的切片索引(與Python列表的切片索引一樣)
多維數組的切片索引
(3)花式索引
元素索引和切片索引都是僅局限于連續區域的值,而花式索引可以選取特定區域的值。
上述語句選出的是元素(1,0)、(5,3)、(7,1)、(2,2)。
上述語句按0、3、1、2列的順序依次顯示1、5、7、2行。下述語句能實現同樣的效果。
?
Numpy數組的基本運算
1、數組和標量之間的預算
2、元素級數組函數
是指對數組中每個元素執行函數運算。下面例子是對數組各元素執行平方根操作。還有abs、exp、sin、cos、log、sum、mean(算術平均數)、cumsum(所有元素的累計和)、cumprod(所有元素的累計積)、sort(將元素進行排序)等函數。
Pandas庫
?
Pandas數據結構
1、Series
(1)概念:
Series是一種類似于一維數組的對象,它由一組數據以及一組與之相關的數據標簽(即索引)組成。
(2)創建Series
a、通過series來創建
Series的字符串表現形式為:索引在左邊,值在右邊。當我們沒有為數據指定索引時,Series會自動創建一個0到N-1(N為數據的長度)的整數型索引??梢酝ㄟ^Series的values和index屬性獲取其數組的值和對應的屬性。
也可以在創建Series的時候為值直接創建索引。
b、通過字典的形式來創建Series。
(3)獲取Series中的值
通過索引的方式選取Series中的單個或一組值。
??2、DataFrame
(1)概念:
DataFrame是一個表格型的數據結構,含有一組有序的列,每列可以是不同的值類型(數值、字符串、布爾值等)。DataFrame既有行索引也有列索引,其中的數據是以一個或多個二維塊存放的,而不是列表、字典或別的一維數據結構。
(2)創建DataFrame:
最常用的一種方法是直接傳入一個等長列表或numpy數組組成的字典:
結果DataFrame會自動加上索引(添加方法與Series一樣),且全部列會被有序排列。
如果指定了列序列、索引,則DataFrame的列會按指定順序及索引進行排列。
也可以設置DataFrame的index和columns的name屬性,則這些信息也會被顯示出來。
(3)獲取DataFrame的值(行或列)
通過查找columns值獲取對應的列。(下面兩種方法)
通過索引字段ix查找相應的行。
(4)對列進行賦值處理。
對某一列可以賦一個標量值也可以是一組值。
也可以給某一列賦值一個列表或數組,其長度必須跟DataFrame長度相匹配。如果賦值的是一個Series,則對應的索引位置將被賦值,其他位置的值被賦予空值。
?
Pandas基本功能
1、重新索引
Pandas對象的一個方法就是重新索引(reindex),其作用是創建一個新的索引,pandas對象將按這個新索引進行排序。對于不存在的索引值,引入缺失值。
也可以按columns(行)進行重新索引,對于不存在的列名稱,將被填充空值。
對于不存在的索引值帶來的缺失值,也可以在重新索引時使用fill_value給缺失值填充指定值。
對于缺失值除使用fill_value的方式填充特定值以外還可以使用method=ffill(向前填充、即后面的缺失值用前面非缺失值填充)、bfill(向后填充,即前面的缺失值用后面的非缺失值填充)。
2、丟棄指定軸上的項
使用drop方法刪除指定索引值對應的對象。
可以同時刪除多個索引對應的值。
對于DataFrame,可以刪除任意軸上(columns)的索引值。
3、算數運算和數據對齊
(1)Series 與Series之間的運算
將不同索引的對象進行算數運算,在將對象進行相加時,如果存在時,則結果的索引就是該索引的并集,而結果的對象為空。
(2)DataFrame與Series之間的運算
將DataFrame的每一行與Series分別進行運算。(索引相同的進行算數運算,索引不同的被賦予空值)
4、排序和排名
根據某種條件對數據集進行排序。
(1)Series數據結構的排序和排名
a、按索引值進行排序
b、按值進行排序
默認情況下,排序是按升序排列的,但也可通過ascending=False進行降序排列。
排名跟排序不同的是,排名會增設一個排名值。obj.rank()
(2)DataFrame數據結構的排序和排名
按索引值進行排列,一列或多列中的值進行排序,通過by將列名傳遞給sort_index.
5、缺失數據處理
(1)濾出缺失數據
使用data.dropna()可以濾出缺失數據,默認情況下,data.dropna()濾出含有缺失值的所有行(是含有缺失數據的那一整行)。
傳入how=‘all’將只濾出全是缺失值的那一行。
要用這種方式濾出列,只需傳入axis=1即可。
?
(2)填充缺失數據
通過調用函數fillna,并給予這個函數一個值,則該數組中所有的缺失值都將被這個值填充。df.fillna(0)——缺失值都將被0填充。
?
也可以給fillna函數一個字典,就可以實現對不同的列填充不同的值。
Df.fillna({1:0.5,3:-1})——1列的缺失值用0.5填充,3列的缺失值用-1填充。(列從0開始計數)
6、匯總和計算描述統計
就是針對數組進行常用的數學和統計運算。大部分都屬于約簡和匯總統計。
其中有求和(sum)運算、累計(cumsum)運算、平均值(mean)等運算。這些運算默認都是針對于行的運算,通過使用axis=1進行列的運算。
?
Describe既不是約簡型也不是累計型,他是用于一次性產生多個匯總統計指標的運算。根據數組中數據的類型不同,產生的統計指標不同,有最值、分位數(四分位、四分之三)、標準差、方差等指標。
7、唯一值的獲取
此方法可以用于顯示去重后的數據。
8、值計數
用于計算一個Series中各值出現的次數。?
9、層次化索引
層次化索引是pandas的一個重要功能,它的作用是使你在一個軸上擁有兩個或多個索引級別。相當于Excel中vlookup函數的多條件查找中的多條件。?
對于層次化索引對象,選取數據的方式可以通過內層索引,也可以通過外層索引來選取,選取方式和單層索引選取的方式一致。?
總結
以上是生活随笔為你收集整理的Python数据分析笔记——Numpy、Pandas库的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ChatGPT 等生成式 AI 逐渐兴起
- 下一篇: 我的所想——短暂的北漂