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

猜你喜欢

转载自blog.csdn.net/qq_44091773/article/details/105879430