数据分析利器--Pandas
1、前言
pandas是python數據分析中一個很重要的包;
在學習過程中我們需要預備的知識點有:DataFrame、Series、NumPy、NaN/None;
2、預備知識點詳解
- NumPy詳解:標準安裝的Python中用列表(list)保存一組值,可以用來當作數組使用,不過由于列表的元素可以是任何對象,因此列表中所保存的是對象的指針。這樣為了保存一個簡單的[1,2,3],需要有3個指針和三個整數對象。對于數值運算來說這種結構顯然比較浪費內存和CPU計算時間。NumPy的誕生彌補了這些不足,NumPy提供了兩種基本的對象:ndarray(N-dimensional array object)和 ufunc(universal function object)。ndarray是存儲單一數據類型的多維數組,而ufunc則是能夠對數組進行處理的函數。(參考:Python 科學計算 – Numpy)
- Series: Series是一個一維的類似的數組對象,包含一個數組的數據(任何NumPy的數據類型)和一個與數組關聯的數據標簽,被叫做 索引。(參考:Series與DataFrame)
- DataFrame:一個Datarame表示一個表格,類似電子表格的數據結構,包含一個經過排序的列表集,它們每一個都可以有不同的類型值(數字,字符串,布爾等等)。Datarame有行和列的索引;它可以被看作是一個Series的字典(每個Series共享一個索引)。與其它你以前使用過的(如R 的 data.frame)類似Datarame的結構相比,在DataFrame里的面向行和面向列的操作大致是對稱的。在底層,數據是作為一個或多個二維數組存儲的,而不是列表,字典,或其它一維的數組集合。因為DataFrame在內部把數據存儲為一個二維數組的格式,因此你可以采用分層索引以表格格式來表示高維的數據。(參考:Series與DataFrame)
- NaN/None: python原生的None和pandas, numpy中的numpy.NaN盡管在功能上都是用來標示空缺數據。但它們的行為在很多場景下確有一些相當大的差異。(參考:NaN 和None 的詳細比較)
3、pandas詳解
3.1 簡介:
pandas是一個Python語言的軟件包,在我們使用Python語言進行機器學習編程的時候,這是一個非常常用的基礎編程庫。pandas提供了快速,靈活和富有表現力的數據結構,目的是使“關系”或“標記”數據的工作既簡單又直觀。它旨在成為在Python中進行實際數據分析的高級構建塊。
3.2 pandas的安裝:
pip install pandas3.3 核心數據結構
pandas最核心的就是Series和DataFrame兩個數據結構。
| Series | 1維 | 帶有標簽的同構類型數組 |
| DataFrame | 2維 | 表格結構,帶有標簽,大小可變,且可以包含異構的數據列 |
DataFrame可以看做是Series的容器,即:一個DataFrame中可以包含若干個Series。更詳細的解釋參考:Series與DataFrame
3.4 讀取CSV文件
data = pd.read_csv("fileName.csv")read_csv()中可以用的參數:
| path | 文件路徑 |
| sep或者delimiter | 字段分隔符 |
| header | 列名的行數,默認是0(第一行) |
| index_col | 列號或名稱用作結果中的行索引 |
| names | 結果的列名稱列表 |
| skiprows | 從起始位置跳過的行數 |
| na_values | 代替NA的值序列 |
| comment | 以行結尾分隔注釋的字符 |
| parse_dates | 嘗試將數據解析為datetime。默認為False |
| keep_date_col | 如果將列連接到解析日期,保留連接的列。默認為False。 |
| converters | 列的轉換器 |
| dayfirst | 當解析可以造成歧義的日期時,以內部形式存儲。默認為False |
| data_parser | 用來解析日期的函數 |
| nrows | 從文件開始讀取的行數 |
| iterator | 返回一個TextParser對象,用于讀取部分內容 |
| chunksize | 指定讀取塊的大小 |
| skip_footer | 文件末尾需要忽略的行數 |
| verbose | 輸出各種解析輸出的信息 |
| encoding | 文件編碼 |
| squeeze | 如果解析的數據只包含一列,則返回一個Series |
| thousands | 千數量的分隔符 |
3.5處理無效值
這里需要掌握三個函數:
pandas.isna(): 判斷哪些值是無效的
pandas.DataFrame.dropna(): 拋棄無效值
pandas.DataFrame.fillna(): 將無效值替換成為有效值
具體用法參照:處理無效值
4、Pandas常用函數
| DataFrame.duplicated() | DataFrame的duplicated方法返回一個布爾型Series,表示各行是否重復行。 |
| DataFrame.drop_duplicates() | 它用于返回一個移除了重復行的DataFrame |
| DataFrame.fillna() | 將無效值替換成為有效值 |
5、Pandas常用知識點
5.1 Dataframe寫入到csv文件
df.to_csv('D:\\a.csv', sep=',', header=True, index=True)第一個參數是說把dataframe寫入到D盤下的a.csv文件中,參數sep表示字段之間用’,’分隔,header表示是否需要頭部,index表示是否需要行號。
5.2 Dataframe寫入到數據庫中
df.to_sql('tableName', con=dbcon, flavor='mysql')第一個參數是要寫入表的名字,第二參數是sqlarchmy的數據庫鏈接對象,第三個參數表示數據庫的類型,“mysql”表示數據庫的類型為mysql。
總結
以上是生活随笔為你收集整理的数据分析利器--Pandas的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python--状态码的简介与获取方法
- 下一篇: gitHub使用记录