Pandas基本屬性和統計方法

上一篇文章中介紹了數據結構,其中尤爲重要的是DataFrame。

Series的基本屬性和方法

在這裏插入圖片描述

DataFrame的基本屬性和方法

DataFrame的屬性和方法
代碼示例

import pandas as pd
df = pd.DataFrame([{'名字':'小明','年齡':18},
                   {'名字':'小亮','年齡':16},
                   {'名字':'小紅','年齡':17},
                   {'名字':'小黑'}],index=['A','B','C','D'])
                
=====輸出=====
   名字    年齡
A  小明  18.0
B  小亮  16.0
C  小紅  17.0
D  小黑   NaN

df.T # 轉置行列
=====輸出=====
     A   B   C    D
名字  小明  小亮  小紅   小黑
年齡  18  16  17  NaN

df.axes # 返回行軸標籤和列軸標籤列表
=====輸出=====
[Index(['A', 'B', 'C', 'D'], dtype='object'),
 Index(['名字', '年齡'], dtype='object')]

df.dtypes # 返回每列的數據類型
=====輸出=====
名字     object
年齡     float64
dtype:   object

df.empty # 顯示對象是否爲空
=====輸出=====
 False # 爲空返回True
 
 df.ndim # 輸出數據的維度
=====輸出=====
 2 # DataFrame 二維數據結構
 
df.shape# 對象的維數
=====輸出=====
(4, 2) # 4行2列

df.size # 返回DataFrame中的元素數
=====輸出=====
 8 # 8個元素
 
df.values # 將DataFrame中的實際數據作爲NDarray返回
=====輸出=====
array([['小明', 18.0],
       ['小亮', 16.0],
       ['小紅', 17.0],
       ['小黑', nan]], dtype=object)

df.head(),df..tail() # 返回數據的前幾行、後幾行可膚質默認是5

統計函數

以下是比較重要的統計函數
統計函數注 - 由於DataFrame是異構數據結構。通用操作不適用於所有函數。一些如sum(),cumsum() 的函數 雖然對字符操作不會報錯,但是一些函數如abs()報錯。
DataFrame作爲二維數據結構,對不同的軸使用不同的函數會有不同的效果,以下以sum() 爲例

import pandas as pd
df = pd.DataFrame([{'名字':'小明','年齡':18},
                   {'名字':'小亮','年齡':16},
                   {'名字':'小紅','年齡':17},
                   {'名字':'小黑'}],index=['A','B','C','D'])
                   
df.sum(0) # 默認是0即按照列進行操作
	=====輸出=====
	名字    小明小亮小紅小黑 # 對於字符串直接進行拼接操作
	年齡          51
	dtype: object

df.sum(1) # 忽略了字符,對數字操作
	=====輸出=====
	A    18.0
	B    16.0
	C    17.0
	D     0.0
	dtype: float64

彙總方法

除了以上的幾種方法,還有一個彙總方法:describe()函數是用來計算有關DataFrame列的統計信息的摘要。include屬性是用於傳遞關於什麼列需要考慮用於總結的必要信息的參數。獲取值列表; 默認情況下是”數字值”。

object number all
彙總字符串列 彙總數字列 將所有列彙總在一起(不應將其作爲列表值傳遞)
f4.describe()
	=====輸出=====
	         年齡 											
	count   3.0
	mean   17.0
	std     1.0
	min    16.0
	25%    16.5
	50%    17.0
	75%    17.5
	max    18.0

f4.describe(include=['object'])
	=====輸出=====
	        名字
	count    4
	unique   4
	top     小紅
	freq     1

f4.describe(include='all') # 將上方兩種輸出結果一起輸出

唯一去重和按值計數

這裏包括兩個方法:unique()value_counts()要對某一列進行使用,直接對DataFrame對象使用會報錯。

import pandas as pd

df = pd.DataFrame([{'名字':'小明','年齡':18},
                   {'名字':'小亮','年齡':16},
                   {'名字':'小紅','年齡':17},
                   {'名字':'小明','年齡':16},
                   {'名字':'小紅','年齡':18},
                   {'名字':'小黑'}],index=['A','B','C','D'])
                   
df['名字'].unique() # 輸出唯一的
	=====輸出=====
	array(['小明', '小亮', '小紅', '小黑'], dtype=object)

df['名字'].value_counts() # 統計出現的次數並降序排列
	=====輸出=====
	小明    2
	小紅    2
	小亮    1
	小黑    1
	Name: 名字, dtype: int64

相關係數和協方差

  1. 協方差:衡量同向反向程度,如果協方差爲正,說明X, Y同向變化,協方差越大說明同向程度
    越高;如果協方差爲負,說明X, Y反向運動,協方差越小說明反向程度越高。當Cov(X,Y) = 0 時 二者不相關。
  2. 相關係數:衡量相似度程度,當他們的相關係數爲1時,說明兩個變量變化時的正向相似度最
    大,當相關係數爲- 1時,說明兩個變量變化的反向相似度最大。

爲了體現這兩個函數,上面的DataFrame不足以支撐,我直接引用了籃球比賽的得分情況作爲示例,對數據源有興趣的話可以去網站爬取。

df.corr()
=====輸出=====
	                命中     投籃數   投籃命中率 3分命中率   籃板      助攻    得分
	命中     	 1.000000  0.634690  0.839126  0.798088 -0.150331 -0.100641  0.867068
	投籃數   	 0.634690  1.000000  0.123891  0.294384 -0.001462 -0.233715  0.675462
	投籃命中率   0.839126  0.123891  1.000000  0.829982 -0.204990  0.052883  0.650011
	3分命中率    0.798088  0.294384  0.829982  1.000000 -0.092656 -0.061292  0.776918
	籃板    	-0.150331 -0.001462 -0.204990 -0.092656  1.000000 -0.132013 -0.086104
	助攻    	-0.100641 -0.233715  0.052883 -0.061292 -0.132013  1.000000 -0.131812
	得分    	 0.867068  0.675462  0.650011  0.776918 -0.086104 -0.131812  1.000000

df.cov()
=====輸出=====	
	              命中      投籃數    投籃命中率  3分命中率   籃板      助攻       得分
	命中         9.083333   6.408333  0.263117  0.370050 -1.233333  -0.983333  22.800000
	投籃數       6.408333  11.223333  0.043182  0.151727 -0.013333  -2.538333  19.743333
	投籃命中率   0.263117   0.043182  0.010824  0.013285 -0.058055   0.017837   0.590035
	3分命中率    0.370050   0.151727  0.013285  0.023669 -0.038803  -0.030570   1.042848
	籃板        -1.233333  -0.013333 -0.058055 -0.038803  7.410000  -1.165000  -2.045000
	助攻        -0.983333  -2.538333  0.017837 -0.030570 -1.165000  10.510000  -3.728333
	得分        22.800000  19.743333  0.590035  1.042848 -2.045000  -3.728333  76.123333

# 我們還可以分析兩個因素之間的關係
df['得分'].corr(f6['命中'])
Out[7]: 0.8670683274541471
f6['得分'].corr(f6['助攻'])
Out[8]: -0.13181185657005592
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章