七、数值型数据统计

七、数值型数据统计本文详细介绍了数值型数据的统计分析 包括算数平均值 加权平均值 最值 中位数 频数与众数 四分位数 方差与标准差 协方差 相关系数 相关系数矩阵 Pandas 特殊值处理 数据排序及分组聚合

大家好,欢迎来到IT知识分享网。

七、数值型数据统计

数值型数据描述统计概论

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

常见指标主要有:

  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, ] 

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

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

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) 

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 numpy as np L1 = [1, 2, 3, 4, 5, 6, 7, 8, 9] L2 = [1, 2, 3, 10, 100, 101, 102, 103] n1 = np.quantile(L1, [0.25, 0.5, 0.75]) print(n1) # [3. 5. 7.] n2 = np.quantile(L2, q=[0.25, 0.5, 0.75]

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/141035.html

(0)
上一篇 2025-05-22 18:45
下一篇 2025-05-22 19:00

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信