统计学---1.描述性统计分析
描述性统计所提取统计的信息,我们称为统计量,主要包括以下几个方面:
-
频数与频率:
-
频数:指数据中类别变量每个不同取值出现的次数。
- 频率:指每个类别变量的频数与总次数的比值,通常采用百分数表示。
# 获取数据,划分特征列和目标列 data = load_iris() X = data.data y = data.target # 拼接特征列和目标列,转成DataFrame且设置列名 data1 = np.concatenate([X, y.reshape(-1, 1)], axis=1) data_df = pd.DataFrame(data1, columns=['sepal_length', 'sepal_width', 'petal_length', 'petal_width', 'type']) # 频数 ps = data_df['type'].value_counts() print(ps) # 频率 pl = ps/len(data_df) print(pl) # 可视化 sns.countplot(x='type', data=data_df) plt.show()
-
-
集中趋势分析:
-
均值:即平均值,其为一组数据的总和除以数据个数。
-
中位数:将一组数据升序排列,位于该组数据最中间位置的值,就是中位数。如果数据个数为偶数,则取中间两个数值的均值。
-
众数:一组数据中出现次数最多的值。
-
分位数:分位数,通过n-1个分位将数据划分为n个区间,使得每个区间的数值个数相等(或近似相等)。其中, n为分位数的数量。以四分位数为例:
第1个分位称为1/ 4分位(下四分位)。数据中1/ 4的数据小于该分位值。
第2个分位称为2/ 4分位(中四分位)。数据中2/ 4的数据小于该分位值。
第3个分位称为3/ 4分位(上四分位)。数据中3/ 4的数据小于该分位值。# 均值 data_mean = data_df['sepal_length'].mean() # print('均值:', data_mean) # 中位数 data_median = data_df['sepal_length'].median() # print('中位数:', data_median) # 众数,没有办法保证唯一性,用索引取值 data_mode = data_df['sepal_length'].mode() # print('众数:', data_mode.iloc[0]) # 可视化 plt.rcParams['font.family'] = 'SimHei' plt.rcParams['font.size'] = 15 plt.figure(figsize=(8,6)) sns.histplot(data_df['sepal_length']) plt.axvline(data_mean,ls='-',color='r',label='均值') plt.axvline(data_median,ls='--',color='orange',label='中位数') plt.axvline(data_mode.iloc[0],ls='-.',color='green',label='众数') plt.legend() # plt.show() # 分位数 # 模拟数据,使用numpy data_np = [2, 4, 11, 1, 22, 32] # print('分位数方法一:', np.quantile(data_np, q=[0.25, 0.5, 0.75])) # print('分位数方法二:', np.percentile(data_np, q=[25, 50, 75])) # 使用pandas data_pd = [2, 4, 11, 1, 22, 32] # print('分位数方法三:\n',pd.Series(data_pd).describe())
-
-
离散程度分析:
-
极差:指一组数据中,最大值与最小值之差。
-
⽅差:能体现出一组数据中每个元素与均值偏离的大小。

-
标准差:标准差是一个描述数值分散程度的数字。低的标准差意味着大多数数值都接近均值(平均值)。高的标准差意味着数值分布在一个更宽的范围内。

# 分位数 # 模拟数据,使用numpy data_np = [2, 4, 11, 1, 22, 32] # print('分位数方法一:', np.quantile(data_np, q=[0.25, 0.5, 0.75])) # print('分位数方法二:', np.percentile(data_np, q=[25, 50, 75])) # 使用pandas data_pd = [2, 4, 11, 1, 22, 32] # print('分位数方法三:\n',pd.Series(data_pd).describe()) # 方差 df = pd.DataFrame([[93, 98, 89], [94, 95, 91], [93, 93, 93]], index=['张三', '李四', '王五'], columns=['语文', '数学', '英语']) # print('个人总分:', df.sum(axis=1)) # 每个人的总分 # print('方差:', df.var(axis=1)) # 通过查看方差来判断谁的综合能⼒好全面发展。 # 标准差 data_std = [32,111,138,28,59,77,97] # print('标准差:', np.std(data_std))
-
-
分布形状:
-
偏度:统计数据分布斜率方向和程度的度量,是统计数据分布非对称程度的数字特征,其计算公式为三阶中心距与标准差三次方的比值。


-
峰度:描述数据分布陡缓程度的统计量,可以将峰度理解为数据分布的高矮程度,其计算公式为四阶中心距与标准差四次方的比值。给定含有n个元素的样本,样本峰度的计算方式如下:

# 偏度,左偏和右偏 d1 = np.random.randint(1, 11, size=100) d2 = np.random.randint(11, 21, size=500) d3 = np.concatenate([d1, d2]) d4 = np.random.randint(1, 11, size=500) d5 = np.random.randint(11, 21, size=100) d6 = np.concatenate([d4, d5]) plt.figure(figsize=(10,8)) left_skew = pd.Series(d3) sns.kdeplot(left_skew, fill=True, label='左偏') right_skew = pd.Series(d6) sns.kdeplot(right_skew, fill=True, label='右偏') plt.legend() # plt.show() # 峰度,使用上面鸢尾花数据集的数据 # print(data_df['sepal_width'].kurt())
-
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐

所有评论(0)