python3(四)Pandas库
數據摘要pandas
目錄
- 1 pandas庫
- 1.1 pandas庫
- 1.2 Series類型
- 1.3 Series類型的基本操作
- 1.4 DataFrame類型
- 1.5 數據類型操作
- 1.6 數據類型運算
- 2 ?數據特征分析
- 2.1 數據的排序
- 2.2 數據的基本統計分析
- 2.3 數據的累計統計分析?
- 2.4 數據的相關分析
?
正文
主要是用于分析數據的Pandas庫
先學習兩個數據類型DataFrame和series
進一步學習利用Pandas進行摘要的方法, 提取數據的特征
回到頂部1 pandas庫
1.1 pandas庫
pandas庫是處理和分析數據最好的庫
提供高性能易用數據類型和分析工具
引用
import pandas as pdPandas基于NumPy實現, 常與NumPy和Matplotlib一同使用
示范小例
得到的Series數據, 左邊的是索引, 右邊的數據
Pandas有兩個數據類型: Series(相當于一維數據類型)和DataFrame(二維到多維的數據類型)
基于上述數據類型的各類操作有:
基本操作, 運算操作, 特征類操作, 關聯類操作
NumPy與Pandas的區別
NumPy: 基礎數據類型; 關注數據結構(維度)的表達; 維度, 數據間關系
Pandas: 擴展數據類型; 關注數據的應用表達(提取, 運算); 數據與索引間關系
1.2 Series類型
Series類型由一組數據及與之相關的數據索引組成
Series數據類型的組成是索引+數據
如果不指定索引, 會自動生成索引, 是從0開始逐漸遞增的序列
可以在生成Series的時候指定index來自定義索引
當指定索引的序列是第二個參數的時候, 可以直接輸入序列, 不必寫全 index=序列
可以通過別的數據來創建Series類型數據
列表, 標量值, 字典, ndarray, 其他函數
1) 從標量創建
使用標量創建所有的值都是該標量, index=不能省略
2) 從字典類型創建
如果不指定index, 那么字典的key就是Series的索引, value就是Series的值
如果指定index, 則Series的值會根據index的內容比對字典中的鍵, 查看鍵對應的值作為Series的值
如果index中的值不在字典中, 那么值就設為NaN
3) 從ndarray類型創建
所需要的ndarray必須是一個一維數組
4) 從ndarray中創建
1.3 Series類型的基本操作
Series類型是由索引和值組成
因而基本操作類似字典和ndarray的操作
1) 獲得索引和值
Series數據.index ?獲得它對應的所有索引
Series數據.values 獲得它對應的所有值
其中索引是object類型, 是一個專門的索引類型
值是numpy數據類型
2) 根據鍵獲得值
Series數據[?索引或者索引列表?] (類似于字典的處理)
其中需要注意的是, 如果自定義了索引, 那么可以通過自定義索引來獲得值, 亦可以通過原始索引(0,1,2…)獲得值
獲得多個值的時候可以在中括號中傳入一個索引列表
但是注意, 索引列表中要么是自定義索引, 要么是原始索引, 不能混用
可以通過切片的方式獲得值
同樣基于字典的性質, 還可以使用關鍵字in和方法get等
關鍵字in判斷的是自定義索引
?
利用numpy的處理來過濾數據
3) 對值的操作
Series數據采用隨時修改立即生效
基本上都是通過索引來指定修改的值
由于Series數據的值是numpy的值, 因此同樣可以使用numpy的操作來處理Series的數據
4) 對齊操作
還可以進行對齊操作?+?
生成的結果是一個Series數據, 索引是所有索引的并集
只計算索引交集部分的值進行相加, 其余部分的索引對應的值為NaN
5) 對名字的操作
Series數據的數據對象本身和索引都有一個名字, 存儲在 .name 中, 可以直接修改
1.4 DataFrame類型
DataFrame數據類型可以表示二維或者多維的數據, 但是由于在生產環境中, 大多都是二維數據, 因此先主要集中處理二維數據
DataFrame類型是由共用相同索引的一組列組成
實際二維數據可以看做是一個表格, 索引就是行頭, 列的名字就是列頭
?
1) DataFrame數據類型的創建
可以通過 二維ndarray對象; 由一組ndarray, 列表, 字典, 元組, Series構成的字典; Series數據, 其他DataFrame數據 構成
從ndarray創建
可以通過傳入一個二維的ndarray數據來直接形成一個DataFrame數據
從一維ndarray對象字典創建
也可以傳入一個一維的字典
DataFrame的處理是, 把字典的鍵作為列的索引值, 字典的值一般設置為Series數據, Series的值就是值, 索引就是整個DataFrame的索引
但是需要處理的是, 整個索引是各個Series值的索引的并集
如果涉及該索引沒值的, 值設為NaN, 這個操作叫做 數據根據行列索引自動補齊
從列表類型的字典創建
道理和用以為的字典創建類似
只是由于字典的值僅僅只是列表, 沒有二維信息, 所以需要在創建的時候, 加入index信息
2) 一些簡單的操作
可以使用 .index .columns .values分別獲取索引, 列名, 值的信息
獲得一列的值可以直接使用 數據[列名]
獲得一行的值需要使用 數據.ix[行名]
要獲得具體的值只需要 數據[列名][行名] 或者 數據.ix[行名][列名]
1.5 數據類型操作
數據操作主要有兩種
增加和重排: 解決辦法是重新索引
刪除: 使用的是drop
重新索引
使用 .reindex()能夠改變或重排Series和DataFrame索引
.reindex(index=None, columns=None, …) 的參數
向前填充指的是, 當值為空時, 該值設為前面的值的值, 同理向后填充就是值設為后面的值的值
具體使用如下
索引類型
Series和DataFrame的索引是Index類型
Index對象是不可修改類型
對索引類型的常用方法
使用
要注意, 序號的是要順序排列的, 新增的需要也需要按序新增, 不然對應的就是不能生成nd和新生成的一行是NaN
核心提醒, 對索引的操作實際上也是對數據的操作, 這點是pandas與numpy的區別, pandas引入對索引的處理讓護具處理更加簡便, 而numpy對數據的處理需要對數據維度進行控制管理
刪除指定索引對象
.drop()能夠刪除Series和DataFrame指定行或列索引
drop()操作DataFrame數據的時候, 由于DataFrame有0軸和1軸, 默認是刪除0軸的數據
1.6 數據類型運算
算數運算法則
算術運算根據行列索引,索引首先補齊后運算,不同索引之間不進行運算, 運算默認產生浮點數
補齊時缺項填充NaN (空值)
二維和一維、一維和零維間為廣播運算
采用+ ‐ * /符號進行的二元運算產生新的對象
數據類型的算數運算
NaN與任何類型的數據進行運算都是NaN
關于行列補齊的標準解釋: 小的缺少的部分都補全成一樣大小的, 補全的值一般默認是NaN, 再進行運算
數據類型的方法形式的運算
使用方法形式的原因是因為可以有一些可選參數, 這些可選參數可以進一步擴展運算的功能
廣播運算是逐個進行運算, Series數據與標量進行運算的時候, 是Series的每個值與該標量進行運算
DataFrame數據與Series數據進行運算, 是二維數據與一維數據進行運算, 其中默認情況是在軸1上進行運算
也就是說, 行的每個值對應的與Series的值對象進行運算
結論: DataFrame數據的1軸是一行, 0軸是一行的每一列的數據, 也就是如下的形式:
要想在二維與一維的數據進行運算, 需要使用方法的形式, 并且傳入參數axis=0才能保證在每一列上運行
快捷的看法是, 默認軸1是先行后列, 軸0是先列后行
比較運算法則
比較運算只能比較相同索引的元素,不進行補齊
二維和一維、一維和零維間為廣播運算
采用> < >= <= == !=等符號進行的二元運算產生布爾對象
數據類型的比較運算
特別注意, 維度相同的時候,?比較運算需要是兩者是相同size的, 不同是無法運算的
當維度不同時, 也就是二維與一維的運算, 默認也是在軸1上運算
回到頂部
2 ?數據特征分析
2.1 數據的排序
一組數據的含義主要是看它表現的摘要
摘要, 將一組數據?有損的提取?數據特征的過程
摘要的形成的數據特征有: 基本統計(含排序);?分布/累計統計;?數據特征;?相關性、周期性等;?數據挖掘(形成知識)
1) 排序
pandas支持對索引的運算和對數據的運算兩個方面, 對索引的運算采用sort_index方法, 對數據的運算采用的是.sort_values()方法
.sort_index() 指定軸上根據索引進行排序, 默認是升序
.sort_index(axis=0, ascending=True)其中軸默認是0, 也就是對行名字進行排序, 軸設為1時, 對一行中的值進行排序
默認是升序為True, 降序為False
.sort_values()指定在軸上根據數值進行排序, 默認升序
Series.sort_values(axis=0, ascending=True) DataFrame.sort_values(by, axis=0, ascending=True)其中by指定行名字或者是列名字, 寫入的是索引或者索引列表, 需要與axis配合使用
axis默認是0, 是列; 設為1時, 是行
ascending默認是True為升序; 設為False為降序
當值有NaN時, 排序會把它放到末尾
2.2 數據的基本統計分析
基本的統計分析函數
1) Series和DataFrame類型都可以使用的函數
Series數據只有0軸, 如果Series和DataFrame數據都可以使用, 那么默認的就是應該處理0軸
有一個可以囊括所有結果的函數describe()函數
具體使用實例
.describe()函數返回的結果是Series類型的數據, 所以可以通過Series數據的處理方式可以分析describe()的結果
2) 僅僅是Series類型使用的函數
2.3 數據的累計統計分析?
累計統計分析就是對序列的前1~n個數進行一些累計運算, 這樣可以減少一些for循環, 使得數據運算更加的靈活
1)?適用于Series和DataFrame類型, 用于累計計算, 默認也是0軸的運算
使用實例
2)?適用于Series和DataFrame類型, 滾動計算(窗口計算)
使用實例
2.4 數據的相關分析
相關分析
針對值X和Y, X的變化會引起Y的變化
當?X增大,Y增大,兩個變量正相關
當?X增大,Y減小,兩個變量負相關
當?X增大,Y無視,兩個變量不相關
協方差
協方差>0 X和Y正相關
協方差<0 X和Y負相關
協方差=0 X和Y獨立無關
但是協方差獲得的相關性不是很精確, 有更多用于描述相關性的參數, 如Pearson相關系數
Pearson相關系數
計算公式
r的取值范圍是[-1, 1]
取得r的絕對值:
當r在0.8-1.0 極強相關
當r在0.6-0.8 強相關
當r在0.4-0.6 中等程度相關
當r在0.2-0.4 弱相關
當r在0.0-0.2 極弱相關或者無相關
相關分析函數
適用于Series和DataFrame類型
分類: 數據分析
總結
以上是生活随笔為你收集整理的python3(四)Pandas库的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 前长城汽车总经理王凤英加盟小鹏汽车 何小
- 下一篇: 京东回应关闭泰国印尼站:集中资源投入跨境