【学习笔记】 Python - Pandas
Pandas
一、Pandas簡介
Pandas是數據分析三劍客之一(Pandas、Matplotlib、Numpy),是Python核心數據分析庫,提供了快速、靈活、明確的數據結構,能夠簡單、直觀、快速地處理各種類型地數據。
Pandas能夠處理以下類型地的數據:
- 與SQL或者Excel表類似的數據;
- 有序和無序(非固定頻率)的時間序列數據;
- 帶行、列標簽的矩陣數據;
- 任意其他形式的觀測、統計數據等;
Pandas提供了兩個主要數據結構Series (一維數組結構)和DataFrame(二維數組結構),可以處理金融、統計、社會科學、工程等領域的大多數典型案例,并且Pandas是基于Numpy開發的,可以與其他第三方科學計算庫完美集成。
| 維數 | 名稱 | 描述 |
| 1 | Series | 帶標簽的一維同構數組 |
| 2 | DataFrame | 帶標簽的大小可變的二維異構數組 |
Pandas主要優勢如下:
- 處理浮點與非浮點數據里的缺失數據,表示為NaN;
- 大小可變,例如插入或者刪除DataFrame等多維對象的列;
- 自動、顯式數據對齊,顯式地將對象與一組標簽對齊,也可以忽略標簽,在Series和DataFrame計算時自動與數據對齊;
- 強大、靈活的分組統計功能(groupby),即數據聚合、數據轉換;
- 把Python和Numpy數據結構里不規則、不同索引的數據輕松地轉換為DataFrame對象;
- 智能標簽,對大型數據集進行切片、花式索引、子集分解等操作;
- 靈活地重塑(reshape)、透視(pivot)數據集;
- 直觀地合并(merge)、連接(join)數據集;
- 成熟的導入、導出工具,導入文本文件(csv等支持分隔符的文件)、Excel文件、數據庫等來源的數據,導出Excel文件、文本文件等,利用超快的HDF5格式保存或加載數據;
- 時間序列:支持日期范圍生成、頻率轉換、移動窗口統計、移動窗口線性回歸、日期位移等時間序列功能;
二、Pandas安裝和簡單使用
最簡單的可以通過PyPI(Python Package Index)的pip(python install packages)工具安裝。
安裝命令:pip install Pandas
?Note: you may need to restart the kernel to use updated packages.
更新庫:pip install --upgrade Pandas?
下面通過一個Excel數據導入的例子來初識Pandas。
?
?
三、Series對象
Pandas是Python數據分析重要的庫,而Series和DataFrame是Pandas庫中兩個重要的對象,也是Pandas中兩個重要的數據結構。
Series是Python的Pandas庫中一種數據結構,類似一維數組,由一組數據以及與這組數據相關的標簽(即索引)組成,或者僅有一組數據沒有索引也可以創建一個簡單的Series。Series可以存儲整數、浮點數、字符串、Python對象等多種類型的數據。
比如上面的Excel,就包含了Series對象和DataFrame對象。其中“得分”、“籃板”、“助攻”等每一列都是一個Series對象,其共同組成了一個DataFrame對象。
創建Series對象語法: s = pd.Series(data,index = index)
data:表示數據,支持Python字典、多維數組、標量值(只有大小沒有方向的量);
index:表示行標簽(索引);
返回值:Series對象;
?
手動設置Series索引
如上例所示,創建Series對象時會自動生成整數索引,默認值從0開始至數據長度減1。
除了使用默認索引,我們還可以通過index參數手動指定設置索引。
?
Series位置索引
位置索引是從0開始數數的,[0]是Series的第一個數,以此類推。
?
Series標簽索引
與位置索引類似,用“[]”表示,里面是索引的名稱,注意index的數據類型是字符串,如果需要獲取多個標簽索引值,需要用“[[]]”表示。
?
Series切片索引
用標簽索引做切片,包頭包尾(即包含索引開始位置的數據,也包含索引結束位置的數據)。
用位置索引做切片,包頭不包尾(即包含索引開始位置的數據,但不包含索引結束位置的數據),這個和列表是一樣的。
?
獲取Series的索引和值
獲取Series的索引和值可以使用Series的index和values方法。
?
四、DataFrame對象
DataFrame是Pandas庫中一種由多種類型的列組成的二維表數據結構,類似于Excel、SQL或者Series對象構成的字典。
DataFrame是一個二維數據結構,由行、列數據組成的表格。DataFrame既有行索引又有列索引,可以看作是由Series對象組成的字典,不過這些Series對象共用一個索引。
創建DataFrame對象語法: df = pd.DataFrame(data,index,columns,dtype,copy)
data:表示數據,可以是ndarray數組、Series對象、列表、字典等;
index:表示行標簽(索引);
columns:表示列標簽(索引);
dtype:每一列數據的數據類型;
copy:用于復制數據;
返回值:返回DataFrame對象;
| Pandas dtype | Python type |
| object | str |
| int64 | int |
| float64 | float |
| bool | bool |
| datatime64 | datetime64[ns] |
| timedelta[ns] | NA |
| category | NA |
?
通過字典創建DataFrame
字典中的value值只能是一維數組或者單個簡單數據類型,如果是數組,要求所有的數組長度一致,如果是單個數據,要求每行都添加相同的數據。
?
import pandas as pd# 使列名對齊pd.set_option('display.unicode.east_asian_width',True)df = pd.DataFrame({'班級':'三年二班','語文':[98,95,85],'數學':[79,66,90],'英語':[100,92,89],},index = [0,1,2])print(df)DataFrame的重要屬性和函數
| 屬性 | 描述 | 例子 |
| values | 查看所有元素的值 | df.values |
| dtypes | 查看所有元素的類型 | df.dtypes |
| index | 查看所有行名、重命名行名 | df.index??? df.index = [1,2,3] |
| columns | 查看所有列名、重命名列名 | df.columns? df.columns=[‘1’,’2’,’3’] |
| T | 行列數據轉換 | df.T |
| head | 查看前n條數據,默認5條 | df.head()?? df.head(10) |
| tail | 查看后n條數據,默認5條 | df.tail()???? df.tail(10) |
| shape | 查看行數和列數,[0]行[1]列 | df.shape[0]? df.shape[1] |
| info | 查看索引、數據類型和內存信息 | df.info |
| 函數 | 描述 | 例子 |
| describe | 查看每列的統計匯總信息,DataFrame類型 | df.describe() |
| count | 返回每一列中的非空值的個數 | df.count() |
| sum | 返回每一列的和,無法計算返回空值 | df.sum() |
| max | 返回每一列的最大值 | df.max() |
| min | 返回每一列的最小值 | df.min() |
| argmax | 返回最大值所在的自動索引位置 | df.argmax() |
| argmin | 返回最小值所在的自動索引位置 | df.argmin() |
| idxmax | 返回最大值所在的自定義索引位置 | df.idxmax() |
| idxmin | 返回最小值所在的自定義索引位置 | df.idxmin() |
| mean | 返回每一列的平均值 | df.mean() |
| median | 返回每一列的中位數(中值) | df.median() |
| var | 返回每一列的方差 | df.var() |
| std | 返回每一列的標準差 | df.std() |
| isnull | 檢查df中的空值,空值為True,否則False | df.isnull() |
| notnull | 檢查df中的空值,非空值為True,否則False | df.notnull() |
?
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的【学习笔记】 Python - Pandas的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Python 爬虫】 4、爬虫基本原理
- 下一篇: websocket python爬虫_p