数值型数据描述统计

目录

七、数值型数据描述统计

数值型数据描述统计概论

数据分析思想中重要的一环就是统计学分析,这涉及到常见统计学指标的运用及分析,需要数据分析师掌握相关统计学知识。

常见指标主要有:

  1. 算数平均值
  2. 加权平均值
  3. 最值、中位数
  4. 频数、众数
  5. 四分位数
  6. 方差、标准差

1. 算数平均值(arithmetic mean)

样本中的每个值都是真值与误差的和,算数平均值表示对真值的无偏估计。

数学表示

样本: S = [ s 1 , s 2 , s 3 , … , s n ] S = [s_1, s_2, s_3, …, s_n] S=[s1,s2,s3,,sn]

算数平均值: M e a n = ( s 1 + s 2 + s 3 + . . . + s n ) n Mean = \frac{(s_1 + s_2 + s_3 + ... + s_n)}{n} Mean=n(s1+s2+s3+...+sn)

python表示

数据集

S = [s1, s2, s3, ..., sn]

样本中的每个值都是真值与误差的和。

算数平均值:

mean = (s1 + s2 + s3 + ... + sn) / n

求算数平均值的函数和方法

Numpy 中使用mean 函数

import numpy
numpy.mean(数据数组, axis=, dtype=数据类型)

Pandas 中 的Series 和 DataFrame 都使用 mean 方法

import pandas
s = pandas.Series(...)
s.mean()
df = pandas.DataFrame(...)
df.mean([axis=]))

示例

# 测试数据
data = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9],
]

import numpy
print(numpy.mean(data))  # 求所有
print(numpy.mean(data, axis=0))  # 轴0行(垂直方向)
print(numpy.mean(data, axis=1))  # 轴1行(水平方向)

import pandas
s = pandas.Series([1, 2, 3, 4])
print(s.mean())

df = pandas.DataFrame(data)
print(df.mean())  # 等同于 df.mean(axis=0)
print(df.mean(axis=0))
print(df.mean(axis=1))

2. 加权平均值(weighted average)

求平均值时,考虑不同样本的重要性,赋予不同的权重。

样本: S = [ s 1 , s 2 , s 3 , … , s n ] S = [s_1, s_2, s_3, …, s_n] S=[s1,s2,s3,,sn]

权重: W = [ w 1 , w 2 , w 3 , … , w n ] W =[w_1, w_2, w_3, …, w_n] W=[w1,w2,w3,,wn]

加权平均值:
a = s 1 w 1 + s 2 w 2 + . . . + s n w n w 1 + w 2 + . . . + w n a = \frac{s_1w_1 + s_2w_2 + ... + s_nw_n}{w_1+w_2+...+w_n} a=w1+w2+...+wns1w1+s2w2+...+snwn

求加权平均值的函数

a = numpy.average(数据数组, weights=权重数组, axis=)

示例

import numpy

# 一维数据
data = [1, 2, 3]
weight = [10, 5, 1]# 权重

print(numpy.average(data))  # 求所有
print(numpy.average(data, weights=weight))  # 求所有

# 二维数据
data = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9],
]
weight = [
    [10, 10, 10],
    [20, 20, 20],
    [30, 30, 30],
]  # 权重

import numpy
print(numpy.average(data))  # 求所有
print(numpy.average(data, weights=weight))  # 求所有
print(numpy.average(data, axis=0))  # 轴0行(垂直方向),权重默认全为1
print(numpy.average(data, weights=weight, axis=0))  # 轴0行(垂直方向)
print(numpy.average(data, weights=weight, axis=1))  # 轴1行(水平方向)

3. 最值

最值分析即求一组数据的最小值、最大值、极差等数据指标,结合业务进行分析的方法

极差

是指在一组数据中最大值和最小值的差值。

numpy提供了一些求最值的API:

求最大值/最小值/极差

np.max/min/ptp(a, axis=)  # axis 省略代表所有数据求最大
# 或
a.max/min/ptp(axis=)  # a 为 ndarray 数组

求最大值索引 / 最小值索引

np.argmax/argmin(a, axis=)  # axis 省略代表所有数据求最大
# 或
a.argmax/argmin(axis=)  # a 为 ndarray 数

示例

import numpy as np

data = np.array([
    [4, 9, 3],
    [1, 5, 6],
    [2, 7, 8]
])
print(data)

# 计算 全部最小值:
mymin = data.min()
# 计算 行方向 最小值:
mymin = data.min(axis=0)
# 计算 列方向 最小值:
mymin = data.min(axis=1)
print(mymin)

# 求极差
myptp = data.ptp()
myptp = data.ptp(axis=0)
myptp = data.ptp(axis=1)
myptp = np.ptp(data, axis=1)
print(myptp)

将两个同维数组中对应元素中最大/最小元素构成一个新的数组

np.maximum(a, b)
np.minimum(a, b)

示例

import numpy as np

a = np.array([
    [4, 9, 3],
    [1, 5, 6],
    [2, 7, 8]
])

b = np.array([
    [1, 5, 2],
    [4, 8, 9],
    [3, 7, 6]
])

mymax = np.maximum(a, b)
print(mymax)

pandas提供了一些求最值的API:

求最大值/最小值/极差

Series.max/min()
# 或
DataFrame.max/min(axis=)

求最大值索引 / 最小值索引

Series.idxmax/dixmin(axis=)
# 或
DataFrame.idxmax/idxmin(axis=)  # 返回最大值的行标签

4. 中位数

将多个样本按照大小排序,取中间位置的元素。

若样本数量为奇数,中位数为最中间的元素即 3000

# 如下数据中位数为3000
[1, 2000, 3000, 4000, 10000000]

若样本数量为偶数,中位数为最中间的两个元素的平均值

# 如下数据中位数为3500
[1,2000,3000,4000,5000,10000000]

numpy求中位数的API:

numpy.median(a, axis=)  # 求 数组a 的中位数

pandas求中位数的API:

Series.median(axis=)
# 或
DataFrame.median(axis=)

示例

import pandas as pd
import numpy as np

# 读取 JSON 文件的内容
data = pd.read_json("ratings.json")
print(data)

# 获取每个人评分的中位数
mymedian = data.median()

# 获取每部电影评分的中位数
mymedian = data.median(axis=1)
print(mymedian)

# 用numpy 获取每个人评分的中位数
arr = data.values  # arr 绑定 ndarray 数组
mymedian = np.median(arr, axis=0)
print(mymedian)

day07

5. 频数与众数

频数指一组数据中各离散值出现的次数。

众数是指一组数据中出现次数最多的值。

示例:

import numpy as np
import pandas as pd

# Series 的 value_counts() 方法求频数
data = np.array(['bmw', 'bmw', 'bz', 'audi', 'bz', 'bmw'])
cars = pd.Series(data)
vc = cars.value_counts()  # 频数
print(vc)

# Series 的 mode() 方法求众数
mode = cars.mode()  # 众数
print(mode)

6 .四分位数

所谓四分位数,即把数值由小到大排列并分成四等份,处于三个分割点位置的数值就是四分位数。

四分位数的三个位置:

  • 第1四分位数 (Q1),又称“较小四分位数”,等于该样本中所有数值由小到大排列后第25%的数字。
  • 第2四分位数 (Q2),又称“中位数”,等于该样本中所有数值由小到大排列后第50%的数字。
  • 第3四分位数 (Q3),又称“较大四分位数”,等于该样本中所有数值由小到大排列后第75%的数字。

示例:

# 四分位数
import pandas as pd

data = pd.read_json("ratings.json")
print(data)

# 求取 四分位数
myquantile = data.quantile([.0, .25, .5, .75, 1.])
print(myquantile)

7. 标准差

标准差(Standard Deviation) ,中文又常称均方差,在概率统计中最常使用作为统计分布程度上的测量。
标准差能反映一个数据集的离散程度,是方差的算术平方根平均数相同的两组数据,标准差未必相同。

样本(sample):
S = [ s 1 , s 2 , s 3 , . . . , s n ] S = [s_1, s_2, s_3, ..., s_n] S=[s1,s2,s3,...,sn]

平均值:
m = s 1 + s 2 + s 3 + . . . + s n n m = \frac{s_1 + s_2 + s_3 + ... + s_n}{n} m=ns1+s2+s3+...+sn

离差(deviation):表示某组数据距离某个中心点的偏离程度
D = [ d 1 , d 2 , d 3 , . . . , d n ] d i = S i − m D = [d_1, d_2, d_3, ..., d_n]\\ d_i = S_i-m D=[d1,d2,d3,...,dn]di=Sim
离差方:
Q = [ q 1 , q 2 , q 3 , . . . , q n ] q i = d i 2 Q = [q_1, q_2, q_3, ..., q_n]\\ q_i=d_i^2 Q=[q1,q2,q3,...,qn]qi=di2

总体方差(variance):
v = ( q 1 + q 2 + q 3 + . . . + q n ) n v = \frac{(q_1+q_2+q_3 + ... + q_n)}{n} v=n(q1+q2+q3+...+qn)

总体标准差(standard deviation):
s = v s = \sqrt{v} s=v

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值