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