其實每一篇博客我都要用很多瑣碎的時間片段來學完寫完,每次一點點,用到了就學一點,學一點就記錄一點,要用上好幾天甚至一兩個禮拜才感覺某一小類的知識結構學的差不多了。
Pandas 是基於 NumPy 的一個開源 Python 庫,它被廣泛用於快速分析數據,以及數據清洗和准備等工作。它的名字來源是由“ Panel data”(面板數據,一個計量經濟學名詞)兩個單詞拼成的。簡單地說,你可以把 Pandas 看作是 Python 版的 Excel。
一. 數據結構介紹
在pandas中有兩類非常重要的數據結構,即序列Series和數據框DataFrame。Series類似於numpy中的一維數組,除了通吃一維數組可用的函數或方法,而且其可通過索引標簽的方式獲取數據,還具有索引的自動對齊功能;DataFrame類似於numpy中的二維數組,同樣可以通用numpy數組的函數和方法,而且還具有其他靈活應用
1.Series的介紹
1)用一維數組創建序列
2)通過字典創建序列
2.DataFrame
1)用字典創建DataFrame
2)查 其中某一列
我們只獲取一列,所以返回的就是一個 Series。可以用 type() 函數確認返回值的類型
3)查多列
多列的是DataFrame
4)增加一個新列--------直接加
5)增加一個新列--------用現有的列去產生新的列
6)從 DataFrame 里刪除行/列
想要刪除某一行或一列,可以用 .drop() 函數。在使用這個函數的時候,你需要先指定具體的刪除方向,axis=0 對應的是行 row,而 axis=1 對應的是列 column 。
查一下
這是為了防止誤刪除
7) 真刪除某列,再加個參數就好了
8)獲取某行,或者某幾行
]
列是同一個道理
9)加篩選條件
10)新加一列
11)重置索引
可以用 .reset_index() 簡單地把整個表的索引都重置掉
和刪除操作差不多,.reset_index() 並不會永久改變你表格的索引,除非你調用的時候明確傳入了 inplace 參數,比如:.reset_index(inplace=True)
還可以用 .set_index() 方法,將 DataFrame 里的某一列作為索引來用
注意,不像 .reset_index() 會保留一個備份,然后才用默認的索引值代替原索引,.set_index() 將會完全覆蓋原來的索引值。
12)創建多級索引ata
多級索引其實就是一個由元組(Tuple)組成的數組,每一個元組都是獨一無二的
可以從一個包含許多數組的列表中創建多級索引(調用 MultiIndex.from_arrays ),
也可以用一個包含許多元組的數組(調用 MultiIndex.from_tuples )
用一對可迭代對象的集合(比如兩個列表,互相兩兩配對)來構建(調用MultiIndex.from_product )。
舉個例子
13) 獲取多級索引中的數據,還是用到 .loc[]
3.清洗數據
1)刪除或者填充空值
在許多情況下,如果你用 Pandas 來讀取大量數據,往往會發現原始數據中會存在不完整的地方。在 DataFrame 中缺少數據的位置, Pandas 會自動填入一個空值,比如 NaN或 Null 。因此,我們可以選擇用 .dropna() 來丟棄這些自動填充的值,或是用.fillna() 來自動給這些空值填充數據。
當你使用 .dropna() 方法時,就是告訴 Pandas 刪除掉存在一個或多個空值的行(或者列)。刪除行用的是 .dropna(axis=0) ,刪除列用的是 .dropna(axis=1) 。
請注意,如果你沒有指定 axis 參數,默認是刪除行。
2)替換na
如果你使用 .fillna() 方法,Pandas 將對這個 DataFrame 里所有的空值位置填上你指定的默認值
4.數據描述
1) describe()
Pandas 的 .describe() 方法將對 DataFrame 里的數據進行分析,並一次性生成多個描述性的統計指標,方便用戶對數據有一個直觀上的認識。
生成的指標,從左到右分別是:計數、平均數、標准差、最小值、25% 50% 75% 位置的值、最大值。
如果你不喜歡這個排版,你可以用 .transpose() 方法獲得一個豎排的格式:
2) 堆疊(Concat)
因為我們沒有指定堆疊的方向,Pandas 默認按行的方向堆疊,把每個表的索引按順序疊加。如果你想要按列的方向堆疊,那你需要傳入 axis=1 參數:
3)歸並(Merge)
使用 pd.merge() 函數,能將多個 DataFrame 歸並在一起,它的合並方式類似合並 SQL 數據表的方式。
歸並操作的基本語法是 pd.merge(left, right, how='inner', on='Key') 。其中 left 參數代表放在左側的 DataFrame,而 right 參數代表放在右邊的 DataFrame;how='inner' 指的是當左右兩個 DataFrame 中存在不重合的 Key 時,取結果的方式:inner 代表交集;Outer 代表並集。最后,on='Key' 代表需要合並的鍵值所在的列,最后整個表格會以該列為准進行歸並。
其他的 就 不 一一舉例了
同時,我們可以傳入多個 on 參數,這樣就能按多個鍵值進行歸並
4)join
如果你要把兩個表連在一起,然而它們之間沒有太多共同的列,那么你可以試試 .join() 方法。和 .merge() 不同,連接采用索引作為公共的鍵,而不是某一列。
同樣,inner 代表交集,Outer 代表並集
5.數值處理
1)查找不重復的值
unique() 方法
查個數
還可以用 .value_counts() 同時獲得所有值和對應值的計數
2).apply() 方法,應用自定義函數
用 .apply() 方法,可以對 DataFrame 中的數據應用自定義函數,進行數據處理
3)調用內置函數
4) 用 lambda 表達式
你定義了一個函數,而它其實只會被用到一次。那么,我們可以用 lambda 表達式來代替函數定義,簡化代碼
5) DataFrame 的屬性
DataFrame 的屬性包括列和索引的名字。假如你不確定表中的某個列名是否含有空格之類的字符,你可以通過 .columns 來獲取屬性值,以查看具體的列名。
6)排序
如果想要將整個表按某一列的值進行排序,可以用 .sort_values() :
如上所示,表格變成按 col2 列的值從小到大排序。要注意的是,表格的索引 index 還是對應着排序前的行,並沒有因為排序而丟失原來的索引數據。
7)查找空值
可以用 Pandas 的 .isnull() 方法,方便快捷地發現表中的空值
參考:
https://blog.csdn.net/qq_42156420/article/details/82813482
https://www.cnblogs.com/nxld/p/6058591.html