5. pandas基本数据类型---DataFrame描述性统计

pandas提供了一些实用方法可以让我们快速获得DataFrame的描述性信息,下表总结了可以获得的描述性统计信息,本文将重点讲解几个描述性统计的功能

序号 方法 说明
1 count() 非空观测值的数量
2 sum() 值的总和
3 mean() 平均值
4 median() 中间值
5 mode() 模式
6 std() 标准差
7 min() 最小值
8 max() 最大值
9 abs() 绝对值
10 prod() 不同维度上的乘积
11 cumsum() 累计和
12 cumprod() 累积产品
13 describe() 数据帧列的统计信息的摘要

1. sum

DataFrame既有行也有列,因此sum求和时需要指定按行求和还是按列求和,本文所有示例代码统一使用下面这份数据

import pandas as pd

data = [
    {'语文': 90, '数学': 92},
    {'语文': 98, '数学': 87},
    {'语文': 87, '数学': 90},
    {'语文': 90, '数学': 98},
]

df = pd.DataFrame(data, index=['小明', '小红', '小刚', '小丽'])
df.index.name = '姓名'
df.columns.name = '科目'

print(df.sum(axis=0))   # 按列求和
print("*"*20)
print(df.sum(axis=1))   # 按行求和

程序输出结果

科目
数学    367
语文    365
dtype: int64
********************
姓名
小明    182
小红    185
小刚    177
小丽    188
dtype: int64

2. mean, 平均值

DataFrame的mean方法可以计算行和里的平均值

print(df.mean(axis=0))   # 按列求均值
print("*"*20)
print(df.mean(axis=1))   # 按行求均值

程序输出结果

科目
数学    91.75
语文    91.25
dtype: float64
********************
姓名
小明    91.0
小红    92.5
小刚    88.5
小丽    94.0
dtype: float64

3. median, 中间值

DataFrame的median方法可以计算行与列的中间值

print(df.median(axis=0))   # 按列求中间值
print("*"*20)
print(df.median(axis=1))   # 按行求中间值

程序输出结果

科目
数学    91.75
语文    91.25
dtype: float64
********************
姓名
小明    91.0
小红    92.5
小刚    88.5
小丽    94.0
dtype: float64

4. std, 标准差

DataFrame的std方法可以计算行与列的标准差

print(df.std(axis=0))   # 按列求标准差
print("*"*20)
print(df.std(axis=1))   # 按行求标准差

程序输出结果

科目
数学    4.645787
语文    4.716991
dtype: float64
********************
姓名
小明    1.414214
小红    7.778175
小刚    2.121320
小丽    5.656854
dtype: float64

5. min, max

DataFrame的min和max分别可以计算行列的最小值和最大值

print(df.min(axis=0))   # 按列求最小值
print("*"*20)
print(df.min(axis=1))   # 按行求最小值

print("*"*20)

print(df.max(axis=0))   # 按列求最大值
print("*"*20)
print(df.max(axis=1))   # 按行求最大值

程序输出结果

科目
数学    87
语文    87
dtype: int64
********************
姓名
小明    90
小红    87
小刚    87
小丽    90
dtype: int64
********************
科目
数学    98
语文    98
dtype: int64
********************
姓名
小明    92
小红    98
小刚    90
小丽    98
dtype: int64

6. abs

DataFrame的abs方法可以将负数转为正数

import pandas as pd

data = [
    {'语文': 90, '数学': 92},
    {'语文': 98, '数学': -87},
    {'语文': 87, '数学': 90},
    {'语文': -90, '数学': 98},
]

df = pd.DataFrame(data, index=['小明', '小红', '小刚', '小丽'])
df.index.name = '姓名'
df.columns.name = '科目'

print(type(df.abs()))

分数里出现了负数,abs将所有数值转为绝对值

7. describe

print(df.describe())

程序输出结果

科目            数学         语文
count   4.000000   4.000000
mean   91.750000  91.250000
std     4.645787   4.716991
min    87.000000  87.000000
25%    89.250000  89.250000
50%    91.000000  90.000000
75%    93.500000  92.000000
max    98.000000  98.000000

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

扫描关注, 与我技术互动

QQ交流群: 211426309

加入知识星球, 每天收获更多精彩内容

分享日常研究的python技术和遇到的问题及解决方案