教程 > pandas 教程 > 阅读:153

python pandas 描述性统计——迹忆客-ag捕鱼王app官网

pandas 使用大量的方法计算 基于dataframe 数据的描述性统计,和其他一些相关的操作。其中大多数是sum()、mean() 之类的聚合函数。但其中一些函数(例如sumsum() )会生成相同大小的对象。一般来说,这些方法采用轴参数,就像ndarray.{sum, std, ...} 一样,但轴可以通过名称或整数指定。

dataframe - “行索引”(轴= 0,默认),“列”(轴= 1)

接下来让我们创建一个 dataframe 数据,然后用这个数据演示一下这些函数的应用

import pandas as pd
import numpy as np
#创建一个 series 字典
d = {'name':pd.series(['tom','james','ricky','vin','steve','smith','jack',
   'lee','david','gasper','betina','andres']),
   'age':pd.series([25,26,25,23,30,29,23,34,40,30,51,46]),
   'rating':pd.series([4.23,3.24,3.98,2.56,3.20,4.6,3.8,3.78,2.98,4.80,4.10,3.65])
}
df = pd.dataframe(d)
print(df)

运行结果如下

    age    name  rating
0    25     tom    4.23
1    26   james    3.24
2    25   ricky    3.98
3    23     vin    2.56
4    30   steve    3.20
5    29   smith    4.60
6    23    jack    3.80
7    34     lee    3.78
8    40   david    2.98
9    30  gasper    4.80
10   51  betina    4.10
11   46  andres    3.65

sum()

返回请求轴的值的总和。默认情况下,轴是索引(轴=0)。

import pandas as pd
import numpy as np
#创建一个 series 字典
d = {'name':pd.series(['tom','james','ricky','vin','steve','smith','jack',
   'lee','david','gasper','betina','andres']),
   'age':pd.series([25,26,25,23,30,29,23,34,40,30,51,46]),
   'rating':pd.series([4.23,3.24,3.98,2.56,3.20,4.6,3.8,3.78,2.98,4.80,4.10,3.65])
}
df = pd.dataframe(d)
print(df.sum())

运行结果如下

name      tomjamesrickyvinstevesmithjackleedavidgasperbe...
age                                                     382
rating                                                44.92
dtype: object

每个单独的列都是单独添加的(附加字符串)。

接下来我们指定 axis = 1

print(df.sum(1))

结果如下

0     29.23
1     29.24
2     28.98
3     25.56
4     33.20
5     33.60
6     26.80
7     37.78
8     42.98
9     34.80
10    55.10
11    49.65
dtype: float64

mean()

返回平均值

import pandas as pd
import numpy as np
#创建一个 series 字典
d = {'name':pd.series(['tom','james','ricky','vin','steve','smith','jack',
   'lee','david','gasper','betina','andres']),
   'age':pd.series([25,26,25,23,30,29,23,34,40,30,51,46]),
   'rating':pd.series([4.23,3.24,3.98,2.56,3.20,4.6,3.8,3.78,2.98,4.80,4.10,3.65])
}
df = pd.dataframe(d)
print(df.mean())

运行结果如下

age       31.833333
rating     3.743333
dtype: float64

std()

返回数值列的 bressel 标准差。

import pandas as pd
import numpy as np
#创建一个 series 字典
d = {'name':pd.series(['tom','james','ricky','vin','steve','smith','jack',
   'lee','david','gasper','betina','andres']),
   'age':pd.series([25,26,25,23,30,29,23,34,40,30,51,46]),
   'rating':pd.series([4.23,3.24,3.98,2.56,3.20,4.6,3.8,3.78,2.98,4.80,4.10,3.65])
}
df = pd.dataframe(d)
print(df.std())

运行结果如下

age       9.232682
rating    0.661628
dtype: float64

方法说明

上面一些示例,我们大概了解了一些统计性的方法,下面我们列出pandas 中描述性统计下的函数

序号 方法 描述
1 count() 非空元素的数量
2 sum() 值的总和
3 mean() 平均值
4 median() 值的中位数
5 mode() 值模式
6 std() 值的标准偏差
7 min() 最小值
8 max() 最大值
9 abs() 绝对值
10 prod() 返回值的乘积
11 cumsum() 和的累积
12 cumprod() 乘积的累积

注意- 由于 dataframe 是异构数据结构。通用操作不适用于所有函数。

  • sum()、cumsum() 之类的函数可以处理数字和字符(或)字符串数据元素,不会出现任何错误。
  • 当 dataframe 包含字符或字符串数据时,abs()、cumprod()等函数会抛出异常,因为无法执行此类操作。

汇总数据

describe() 函数计算关于所述数据帧列的统计信息的摘要。

import pandas as pd
import numpy as np
#创建一个 series 字典
d = {'name':pd.series(['tom','james','ricky','vin','steve','smith','jack',
   'lee','david','gasper','betina','andres']),
   'age':pd.series([25,26,25,23,30,29,23,34,40,30,51,46]),
   'rating':pd.series([4.23,3.24,3.98,2.56,3.20,4.6,3.8,3.78,2.98,4.80,4.10,3.65])
}
df = pd.dataframe(d)
print(df.describe())

运行结果如下

            age     rating
count  12.000000  12.000000
mean   31.833333   3.743333
std     9.232682   0.661628
min    23.000000   2.560000
25%    25.000000   3.230000
50%    29.500000   3.790000
75%    35.500000   4.132500
max    51.000000   4.800000

此函数给出均值、标准差和iqr值。并且,函数排除了字符列并给出了关于数字列的摘要。include 是用于指定有关需要考虑哪些列进行汇总的必要信息的参数。

获取值列表;默认情况下,“number”。

  • object - 汇总字符串列
  • number - 汇总数字列
  • all - 将所有列汇总在一起(不应将其作为列表值传递)

现在,在程序中使用以下语句并检查输出

import pandas as pd
import numpy as np
#创建一个 series 字典
d = {'name':pd.series(['tom','james','ricky','vin','steve','smith','jack',
   'lee','david','gasper','betina','andres']),
   'age':pd.series([25,26,25,23,30,29,23,34,40,30,51,46]),
   'rating':pd.series([4.23,3.24,3.98,2.56,3.20,4.6,3.8,3.78,2.98,4.80,4.10,3.65])
}
df = pd.dataframe(d)
print(df.describe(include=['object']))

运行结果如下

         name
count      12
unique     12
top     ricky
freq        1

再看下面这个示例

import pandas as pd
import numpy as np
#创建一个 series 字典
d = {'name':pd.series(['tom','james','ricky','vin','steve','smith','jack',
   'lee','david','gasper','betina','andres']),
   'age':pd.series([25,26,25,23,30,29,23,34,40,30,51,46]),
   'rating':pd.series([4.23,3.24,3.98,2.56,3.20,4.6,3.8,3.78,2.98,4.80,4.10,3.65])
}
df = pd.dataframe(d)
print(df.describe(include=['number']))

运行结果如下

             age     rating
count  12.000000  12.000000
mean   31.833333   3.743333
std     9.232682   0.661628
min    23.000000   2.560000
25%    25.000000   3.230000
50%    29.500000   3.790000
75%    35.500000   4.132500
max    51.000000   4.800000

查看笔记

扫码一下
查看教程更方便
网站地图