使用 Python 将描述性统计应用于示例数据集,以获得初步认识,之后再进行更复杂的模型构建。Pandas 库在 Python 中进行数据处理和分析不可或缺,将用于执行数据总结。环境设置首先,请确保您已安装所需的库。如果没有,通常可以使用 pip 安装它们:pip install pandas numpy scipy matplotlib seaborn plotly现在,让我们导入将在 Python 脚本或 Jupyter Notebook 中使用的库:import pandas as pd import numpy as np import scipy.stats as stats import plotly.express as px import plotly.graph_objects as go加载和检查数据对于本次练习,我们将使用一个模拟数据集,它代表了一些测量值。可以想象,这些可能是传感器读数、用户活动指标,或您可能遇到的任何一组观测数据。让我们直接使用 Pandas 和 NumPy 创建这个数据集。# 设置随机种子以保证结果可重现 np.random.seed(42) # 生成数据 n_samples = 150 data = { 'feature_A': np.random.normal(loc=50, scale=15, size=n_samples), 'feature_B': np.random.gamma(shape=2, scale=10, size=n_samples) + 20, # 偏态分布 'feature_C': 0.7 * np.random.normal(loc=50, scale=15, size=n_samples) + np.random.normal(loc=0, scale=5, size=n_samples) + 10, # 与 feature_A 相关 'category': np.random.choice(['Type X', 'Type Y', 'Type Z'], size=n_samples, p=[0.4, 0.35, 0.25]) } df = pd.DataFrame(data) # 确保典型特征没有负值 df['feature_A'] = df['feature_A'].clip(lower=0) df['feature_B'] = df['feature_B'].clip(lower=0) df['feature_C'] = df['feature_C'].clip(lower=0) print("数据集维度:", df.shape) print("\n前5行:") print(df.head()) print("\n数据类型和非空计数:") df.info()df.head() 的输出让我们快速查看了前几行,而 df.info() 告诉我们条目数量、列名、每列非空值的计数以及每列的数据类型。在这种情况下,我们看到 150 个条目和 4 列,没有缺失值。feature_A、feature_B 和 feature_C 是数值型 (float64),而 category 是类别型 (object)。整体概括统计Pandas 中的 .describe() 方法非常适合快速获取数值列的统计概括。# 获取数值列的概括统计 summary_stats = df.describe() print("\n概括统计:") print(summary_stats)此输出提供了我们讨论过的几个重要统计量:count:非缺失观测值的数量。mean:平均值。std:标准差,衡量离散程度。min:最小值。25%:第一四分位数 (Q1)。50%:中位数(第二四分位数,Q2)。75%:第三四分位数 (Q3)。max:最大值。查看输出,我们已经可以得到一些观察结果:feature_A 的平均值约为 50,接近其中位数,表明分布相对对称。其标准差约为 14。feature_B 的平均值(约 40)明显大于其中位数(约 36)。这表明是右偏分布。与 feature_A 相比,其范围(最大值 - 最小值)相当大。feature_C 的特征与 feature_A 有些相似,其平均值接近其中位数。计算特定度量尽管 .describe() 很实用,但有时我们需要特定的统计量,或者为了清晰起见,或对于非数值列(如众数),我们希望单独计算它们。集中趋势让我们计算看起来偏态分布的 feature_B 的平均值、中位数和众数。# feature_B 的集中趋势 mean_b = df['feature_B'].mean() median_b = df['feature_B'].median() mode_b = df['feature_B'].mode() # 如果有多个值具有相同的最高频率,众数可以返回多个值 print(f"\n特征 B - 平均值: {mean_b:.2f}") print(f"特征 B - 中位数: {median_b:.2f}") print(f"特征 B - 众数: {mode_b.tolist()}") # 将众数显示为列表 # 类别列的众数 mode_category = df['category'].mode() print(f"\n类别 - 众数: {mode_category.tolist()}")如预料,由于右偏,feature_B 的平均值被拉高至高于中位数。众数代表最常出现的值。对于类别特征,'Type X' 是最常见的类别。离散程度让我们查看 feature_A 和 feature_B 的离散程度。# feature_A 的离散程度 variance_a = df['feature_A'].var() std_dev_a = df['feature_A'].std() range_a = df['feature_A'].max() - df['feature_A'].min() iqr_a = df['feature_A'].quantile(0.75) - df['feature_A'].quantile(0.25) print(f"\n特征 A - 方差: {variance_a:.2f}") print(f"特征 A - 标准差: {std_dev_a:.2f}") print(f"特征 A - 范围: {range_a:.2f}") print(f"特征 A - 四分位距 (IQR): {iqr_a:.2f}") # feature_B 的离散程度 variance_b = df['feature_B'].var() std_dev_b = df['feature_B'].std() range_b = df['feature_B'].max() - df['feature_B'].min() iqr_b = df['feature_B'].quantile(0.75) - df['feature_B'].quantile(0.25) print(f"\n特征 B - 方差: {variance_b:.2f}") print(f"特征 B - 标准差: {std_dev_b:.2f}") print(f"特征 B - 范围: {range_b:.2f}") print(f"特征 B - 四分位距 (IQR): {iqr_b:.2f}")比较标准差(A 为 $14.06$,B 为 $14.49$)并不能立即显示形状上的差异,但比较范围($64.65$ vs. $76.56$)和 IQR($17.50$ vs. $16.26$)开始表明 feature_B 在一侧(右侧,如偏度所示)有更多极端值。四分位距通常比范围或标准差对异常值更具抵抗力。形状:偏度和峰度让我们使用偏度和峰度来量化形状。我们可以使用 scipy.stats 模块。# feature_A 的形状 skew_a = stats.skew(df['feature_A']) kurt_a = stats.kurtosis(df['feature_A']) # Fisher 定义(正态分布 == 0) print(f"\n特征 A - 偏度: {skew_a:.2f}") print(f"特征 A - 峰度: {kurt_a:.2f}") # feature_B 的形状 skew_b = stats.skew(df['feature_B']) kurt_b = stats.kurtosis(df['feature_B']) print(f"\n特征 B - 偏度: {skew_b:.2f}") print(f"特征 B - 峰度: {kurt_b:.2f}")feature_A 的偏度接近 0 (-0.12),这证实了其相对对称性。峰度也接近 0 (-0.22),表明其峰值与正态分布相似。feature_B 具有正偏度 (1.02),证实了我们之前观察到的右偏(尾部延伸向右)。正峰度 (1.15) 表明与正态分布相比,其尾部略重且峰值更尖。相关性分析现在,让我们检查数值特征之间的线性关系。# 计算相关矩阵 correlation_matrix = df[['feature_A', 'feature_B', 'feature_C']].corr() print("\n相关矩阵:") print(correlation_matrix)相关矩阵显示了每对变量之间的皮尔逊相关系数。对角线元素始终为 1(变量与自身的相关性)。我们看到 feature_A 和 feature_C 之间存在很强的正相关(约 0.70),这与我们的数据生成过程一致。feature_B 与 feature_A(约 0.05)和 feature_C(约 0.09)的相关性较弱。请记住,相关性衡量的是线性关联。低相关性不一定表示不存在任何关系,只是不存在线性关系。并且,非常重要的一点是,相关性不代表因果关系。即使 A 和 C 相关,我们也不能仅凭此值就断定 A 导致 C 或反之。概括的可视化数值概括很有效,但可视化通常能提供更直观的理解。直方图直方图有助于显示单个数值变量的分布。# feature_A 的直方图 fig_hist_a = px.histogram(df, x='feature_A', nbins=20, title='Distribution of Feature A', color_discrete_sequence=['#339af0']) # 蓝色 fig_hist_a.update_layout(bargap=0.1) fig_hist_a.show() # feature_B 的直方图 fig_hist_b = px.histogram(df, x='feature_B', nbins=20, title='Distribution of Feature B', color_discrete_sequence=['#20c997']) # 青色 fig_hist_b.update_layout(bargap=0.1) fig_hist_b.show(){"layout": {"title": {"text": "特征 A 的分布"}, "bargap": 0.1, "xaxis": {"anchor": "y", "domain": [0.0, 1.0], "title": {"text": "feature_A"}}, "yaxis": {"anchor": "x", "domain": [0.0, 1.0], "title": {"text": "计数"}}, "legend": {"tracegroupgap": 0}, "colorscale": {"sequential": [[0.0, "#4263eb"], [0.1111111111111111, "#4c6ef5"], [0.2222222222222222, "#5c7cfa"], [0.3333333333333333, "#748ffc"], [0.4444444444444444, "#91a7ff"], [0.5555555555555556, "#bac8ff"], [0.6666666666666666, "#d0bfff"], [0.7777777777777778, "#e599f7"], [0.8888888888888888, "#f06595"], [1.0, "#fa5252"]], "sequentialminus": [[0.0, "#fa5252"], [0.1111111111111111, "#f06595"], [0.2222222222222222, "#e599f7"], [0.3333333333333333, "#d0bfff"], [0.4444444444444444, "#bac8ff"], [0.5555555555555556, "#91a7ff"], [0.6666666666666666, "#748ffc"], [0.7777777777777778, "#5c7cfa"], [0.8888888888888888, "#4c6ef5"], [1.0, "#4263eb"]]}, "coloraxis": {"colorbar": {"title": {"text": ""}}}, "xaxis_title_text": "feature_A", "yaxis_title_text": "计数"}, "data": [{"type": "histogram", "x": [57.45, 72.67, 41.46, 41.39, 68.66, 50.68, 46.96, 40.59, 48.48, 31.53, 46.11, 50.59, 52.31, 28.19, 60.27, 37.33, 53.79, 67.92, 29.22, 40.72, 56.5 , 46.84, 57.34, 47.77, 33.13, 35.89, 56.45, 39.71, 55.53, 40.4 , 54.23, 46.05, 51.93, 68.02, 44.07, 69.76, 66.6 , 60.91, 47.17, 62.4 , 36.39, 54.19, 31.81, 60.96, 45.62, 36.58, 57.64, 60.18, 28.3 , 46.98, 64.87, 46.04, 29.89, 54.71, 41.59, 37.6 , 48.86, 56.75, 44.51, 75.75, 43.26, 51.66, 57.37, 51.98, 46.7 , 45.89, 61.31, 37.82, 36.9 , 54.37, 50.95, 38.66, 31.57, 42.96, 51.66, 38.14, 48.42, 51.23, 34.75, 51.46, 39.97, 45.94, 52.05, 62.32, 43.64, 58.1 , 61.4 , 51.36, 48.16, 53.58, 51.83, 50.8 , 39.68, 48.09, 59.17, 49.31, 32.5 , 58.79, 55.16, 47.7 , 62.59, 48.03, 48.78, 46.73, 47.87, 56.5 , 56.38, 44.61, 59.51, 52.25, 41.81, 48.52, 52.09, 53.77, 61.09, 38.9 , 60.51, 39.4 , 44.23, 37.45, 43.07, 53.92, 47.4 , 49.34, 50.28, 31.34, 32.19, 42.54, 61.74, 31.59, 47.28, 48.61, 53.66, 48.82, 45.5 , 47.7 , 53.54, 40.67, 44.22, 71.28, 47.65, 49.15, 60.73, 53.69, 51.12], "marker": {"color": "#339af0", "pattern": {"shape": ""}}, "nbinsx": 20, "autobinx": false, "name": "count", "showlegend": false, "xaxis": "x", "yaxis": "y"}]}feature_A 的直方图显示了一个大致呈钟形、对称的分布,中心位于 50 附近。{"layout": {"title": {"text": "特征 B 的分布"}, "bargap": 0.1, "xaxis": {"anchor": "y", "domain": [0.0, 1.0], "title": {"text": "feature_B"}}, "yaxis": {"anchor": "x", "domain": [0.0, 1.0], "title": {"text": "计数"}}, "legend": {"tracegroupgap": 0}, "colorscale": {"sequential": [[0.0, "#0ca678"], [0.1111111111111111, "#12b886"], [0.2222222222222222, "#20c997"], [0.3333333333333333, "#38d9a9"], [0.4444444444444444, "#63e6be"], [0.5555555555555556, "#96f2d7"], [0.6666666666666666, "#b2f2bb"], [0.7777777777777778, "#c0eb75"], [0.8888888888888888, "#fab005"], [1.0, "#fd7e14"]], "sequentialminus": [[0.0, "#fd7e14"], [0.1111111111111111, "#fab005"], [0.2222222222222222, "#c0eb75"], [0.3333333333333333, "#b2f2bb"], [0.4444444444444444, "#96f2d7"], [0.5555555555555556, "#63e6be"], [0.6666666666666666, "#38d9a9"], [0.7777777777777778, "#20c997"], [0.8888888888888888, "#12b886"], [1.0, "#0ca678"]]}, "coloraxis": {"colorbar": {"title": {"text": ""}}}, "xaxis_title_text": "feature_B", "yaxis_title_text": "计数"}, "data": [{"type": "histogram", "x": [33.26, 42.31, 28.52, 29.4 , 23.84, 57.44, 46.97, 36.07, 33.29, 41.75, 41.29, 31.29, 31.8 , 32.4 , 21.89, 40.18, 41.09, 49.44, 24.89, 21.37, 26.66, 25.42, 36.79, 34.16, 32.36, 43.97, 34.68, 35.93, 27.85, 31.46, 46.05, 24.8 , 47.79, 57.09, 20.82, 51.06, 32.69, 25.62, 28.44, 42.3 , 51.21, 48.72, 48.5 , 56.82, 47.11, 24.67, 30.9 , 55.94, 45.16, 49.87, 49.03, 27.11, 29.91, 31.45, 36.33, 29.87, 34.21, 42.35, 25.78, 54.96, 45.97, 45.3 , 54.15, 36.85, 35.85, 32.98, 25.71, 30.64, 48.41, 48.62, 33.32, 21.7 , 48.29, 43.33, 31.91, 37.29, 27.35, 29.87, 23.64, 20.8 , 39.93, 21.51, 58.52, 35.3 , 35.78, 32.24, 38.61, 59.21, 38.89, 25.34, 35.7 , 30.11, 35.92, 27.92, 43.9 , 29.5 , 40.53, 50.33, 32.98, 42.45, 26.65, 42.33, 29.53, 28.33, 39.89, 36.97, 38.71, 37.81, 22.36, 56.97, 34.37, 36.89, 31.95, 65.3 , 65.86, 34.28, 39.31, 55.74, 20.31, 32.18, 96.87, 49.47, 33.9 , 43.25, 37.08, 44.68, 36.18, 38.88, 25.58, 29.29, 41.64, 37.6 , 36.78, 22.36, 30.05, 25.57, 47.36, 26.24, 25.57, 33.81, 40.41, 21.16, 45.09, 36.45, 47.54, 34.26, 22.11, 39.09, 58.37, 36.38, 44.78], "marker": {"color": "#20c997", "pattern": {"shape": ""}}, "nbinsx": 20, "autobinx": false, "name": "count", "showlegend": false, "xaxis": "x", "yaxis": "y"}]}feature_B 的直方图清晰地显示出右偏,大多数值集中在左侧,尾部延伸向更高值。箱线图箱线图非常适合比较分布或概括单个分布的四分位数、中位数和潜在异常值。# 所有数值特征的箱线图 fig_box = px.box(df, y=['feature_A', 'feature_B', 'feature_C'], title='Box Plots of Numerical Features', color_discrete_sequence=['#339af0', '#20c997', '#7048e8']) # 蓝色, 青色, 紫罗兰色 fig_box.show(){"layout": {"title": {"text": "数值特征的箱线图"}, "xaxis": {"anchor": "y", "domain": [0.0, 1.0], "title": {"text": ""}}, "yaxis": {"anchor": "x", "domain": [0.0, 1.0], "title": {"text": ""}}, "legend": {"tracegroupgap": 0}, "boxmode": "group", "colorscale": {"sequential": [[0.0, "#4263eb"], [0.1111111111111111, "#4c6ef5"], [0.2222222222222222, "#5c7cfa"], [0.3333333333333333, "#748ffc"], [0.4444444444444444, "#91a7ff"], [0.5555555555555556, "#bac8ff"], [0.6666666666666666, "#d0bfff"], [0.7777777777777778, "#e599f7"], [0.8888888888888888, "#f06595"], [1.0, "#fa5252"]], "sequentialminus": [[0.0, "#fa5252"], [0.1111111111111111, "#f06595"], [0.2222222222222222, "#e599f7"], [0.3333333333333333, "#d0bfff"], [0.4444444444444444, "#bac8ff"], [0.5555555555555556, "#91a7ff"], [0.6666666666666666, "#748ffc"], [0.7777777777777778, "#5c7cfa"], [0.8888888888888888, "#4c6ef5"], [1.0, "#4263eb"]]}, "coloraxis": {"colorbar": {"title": {"text": ""}}}, "yaxis_title_text": ""}, "data": [{"type": "box", "y": [57.45, 72.67, 41.46, 41.39, 68.66, 50.68, 46.96, 40.59, 48.48, 31.53, 46.11, 50.59, 52.31, 28.19, 60.27, 37.33, 53.79, 67.92, 29.22, 40.72, 56.5 , 46.84, 57.34, 47.77, 33.13, 35.89, 56.45, 39.71, 55.53, 40.4 , 54.23, 46.05, 51.93, 68.02, 44.07, 69.76, 66.6 , 60.91, 47.17, 62.4 , 36.39, 54.19, 31.81, 60.96, 45.62, 36.58, 57.64, 60.18, 28.3 , 46.98, 64.87, 46.04, 29.89, 54.71, 41.59, 37.6 , 48.86, 56.75, 44.51, 75.75, 43.26, 51.66, 57.37, 51.98, 46.7 , 45.89, 61.31, 37.82, 36.9 , 54.37, 50.95, 38.66, 31.57, 42.96, 51.66, 38.14, 48.42, 51.23, 34.75, 51.46, 39.97, 45.94, 52.05, 62.32, 43.64, 58.1 , 61.4 , 51.36, 48.16, 53.58, 51.83, 50.8 , 39.68, 48.09, 59.17, 49.31, 32.5 , 58.79, 55.16, 47.7 , 62.59, 48.03, 48.78, 46.73, 47.87, 56.5 , 56.38, 44.61, 59.51, 52.25, 41.81, 48.52, 52.09, 53.77, 61.09, 38.9 , 60.51, 39.4 , 44.23, 37.45, 43.07, 53.92, 47.4 , 49.34, 50.28, 31.34, 32.19, 42.54, 61.74, 31.59, 47.28, 48.61, 53.66, 48.82, 45.5 , 47.7 , 53.54, 40.67, 44.22, 71.28, 47.65, 49.15, 60.73, 53.69, 51.12], "name": "feature_A", "boxpoints": "outliers", "marker": {"color": "#339af0"}, "xaxis": "x", "yaxis": "y", "showlegend": false}, {"type": "box", "y": [33.26, 42.31, 28.52, 29.4 , 23.84, 57.44, 46.97, 36.07, 33.29, 41.75, 41.29, 31.29, 31.8 , 32.4 , 21.89, 40.18, 41.09, 49.44, 24.89, 21.37, 26.66, 25.42, 36.79, 34.16, 32.36, 43.97, 34.68, 35.93, 27.85, 31.46, 46.05, 24.8 , 47.79, 57.09, 20.82, 51.06, 32.69, 25.62, 28.44, 42.3 , 51.21, 48.72, 48.5 , 56.82, 47.11, 24.67, 30.9 , 55.94, 45.16, 49.87, 49.03, 27.11, 29.91, 31.45, 36.33, 29.87, 34.21, 42.35, 25.78, 54.96, 45.97, 45.3 , 54.15, 36.85, 35.85, 32.98, 25.71, 30.64, 48.41, 48.62, 33.32, 21.7 , 48.29, 43.33, 31.91, 37.29, 27.35, 29.87, 23.64, 20.8 , 39.93, 21.51, 58.52, 35.3 , 35.78, 32.24, 38.61, 59.21, 38.89, 25.34, 35.7 , 30.11, 35.92, 27.92, 43.9 , 29.5 , 40.53, 50.33, 32.98, 42.45, 26.65, 42.33, 29.53, 28.33, 39.89, 36.97, 38.71, 37.81, 22.36, 56.97, 34.37, 36.89, 31.95, 65.3 , 65.86, 34.28, 39.31, 55.74, 20.31, 32.18, 96.87, 49.47, 33.9 , 43.25, 37.08, 44.68, 36.18, 38.88, 25.58, 29.29, 41.64, 37.6 , 36.78, 22.36, 30.05, 25.57, 47.36, 26.24, 25.57, 33.81, 40.41, 21.16, 45.09, 36.45, 47.54, 34.26, 22.11, 39.09, 58.37, 36.38, 44.78], "name": "feature_B", "boxpoints": "outliers", "marker": {"color": "#20c997"}, "xaxis": "x", "yaxis": "y", "showlegend": false}, {"type": "box", "y": [51.68, 60.95, 37.15, 38.76, 59.99, 43.78, 40.75, 39.45, 43.3 , 31.09, 39.63, 47.38, 49.05, 29.66, 47.95, 36.86, 46.24, 62.28, 24.73, 41.4 , 50.76, 41.77, 54.64, 42.59, 32.1 , 35.63, 46.86, 35.55, 54.2 , 32.73, 47.41, 38.48, 47.01, 54.44, 38.99, 56.25, 57.68, 49.12, 45.87, 54.55, 31.44, 43.32, 30.22, 53.95, 38.1 , 34.34, 52.09, 51.31, 29.91, 44.09, 50.57, 46.15, 31.07, 48.52, 36.04, 39.66, 46.12, 46.74, 39.79, 62.76, 39.77, 46.45, 46.84, 43.93, 43.37, 38.81, 47.46, 36.29, 37.36, 47.94, 48.81, 33.49, 30.38, 36.63, 43.65, 32.23, 42.34, 42.96, 31.68, 49.3 , 35.74, 43.01, 47.14, 47.03, 41.62, 48.47, 51.64, 44.32, 45.03, 49.36, 48.29, 43.59, 33.82, 43.63, 50.18, 45.11, 36.02, 49.66, 46.66, 44.64, 50.99, 43.38, 43.66, 40.77, 44.01, 47.06, 53.53, 42.13, 49.19, 44.83, 37.96, 43.1 , 45.91, 45.15, 51.49, 35.51, 56.37, 37.94, 36.86, 34.05, 37.56, 47.7 , 45.02, 44.5 , 43.9 , 31.37, 35.66, 35.99, 55.8 , 33.33, 40.68, 43.53, 49.99, 44.11, 39.29, 45.68, 44.97, 39.44, 38.08, 56.05, 39.08, 46.6 , 48.38, 44.2 , 46.13], "name": "feature_C", "boxpoints": "outliers", "marker": {"color": "#7048e8"}, "xaxis": "x", "yaxis": "y", "showlegend": false}]}箱线图直观地比较了特征的中位数(箱内线)、四分位距(箱体本身)和范围(触须)。异常值可能被绘制为单独的点。请注意 feature_B 较高的中位数和更长的上触须/异常值,这表明存在右偏。散点图散点图有助于显示两个数值变量之间的关系。让我们绘制高度相关的 feature_A 和 feature_C。# feature_A vs feature_C 散点图 fig_scatter = px.scatter(df, x='feature_A', y='feature_C', title='Feature A vs Feature C', trendline='ols', # 添加普通最小二乘回归线 color_discrete_sequence=['#be4bdb']) # 葡萄紫 fig_scatter.show(){"layout": {"title": {"text": "特征 A vs 特征 C"}, "xaxis": {"anchor": "y", "domain": [0.0, 1.0], "title": {"text": "feature_A"}}, "yaxis": {"anchor": "x", "domain": [0.0, 1.0], "title": {"text": "feature_C"}}, "legend": {"tracegroupgap": 0, "itemsizing": "constant"}, "colorscale": {"sequential": [[0.0, "#4263eb"], [0.1111111111111111, "#4c6ef5"], [0.2222222222222222, "#5c7cfa"], [0.3333333333333333, "#748ffc"], [0.4444444444444444, "#91a7ff"], [0.5555555555555556, "#bac8ff"], [0.6666666666666666, "#d0bfff"], [0.7777777777777778, "#e599f7"], [0.8888888888888888, "#f06595"], [1.0, "#fa5252"]], "sequentialminus": [[0.0, "#fa5252"], [0.1111111111111111, "#f06595"], [0.2222222222222222, "#e599f7"], [0.3333333333333333, "#d0bfff"], [0.4444444444444444, "#bac8ff"], [0.5555555555555556, "#91a7ff"], [0.6666666666666666, "#748ffc"], [0.7777777777777778, "#5c7cfa"], [0.8888888888888888, "#4c6ef5"], [1.0, "#4263eb"]]}, "coloraxis": {"colorbar": {"title": {"text": ""}}}, "xaxis_title_text": "feature_A", "yaxis_title_text": "feature_C"}, "data": [{"type": "scatter", "x": [57.45, 72.67, 41.46, 41.39, 68.66, 50.68, 46.96, 40.59, 48.48, 31.53, 46.11, 50.59, 52.31, 28.19, 60.27, 37.33, 53.79, 67.92, 29.22, 40.72, 56.5 , 46.84, 57.34, 47.77, 33.13, 35.89, 56.45, 39.71, 55.53, 40.4 , 54.23, 46.05, 51.93, 68.02, 44.07, 69.76, 66.6 , 60.91, 47.17, 62.4 , 36.39, 54.19, 31.81, 60.96, 45.62, 36.58, 57.64, 60.18, 28.3 , 46.98, 64.87, 46.04, 29.89, 54.71, 41.59, 37.6 , 48.86, 56.75, 44.51, 75.75, 43.26, 51.66, 57.37, 51.98, 46.7 , 45.89, 61.31, 37.82, 36.9 , 54.37, 50.95, 38.66, 31.57, 42.96, 51.66, 38.14, 48.42, 51.23, 34.75, 51.46, 39.97, 45.94, 52.05, 62.32, 43.64, 58.1 , 61.4 , 51.36, 48.16, 53.58, 51.83, 50.8 , 39.68, 48.09, 59.17, 49.31, 32.5 , 58.79, 55.16, 47.7 , 62.59, 48.03, 48.78, 46.73, 47.87, 56.5 , 56.38, 44.61, 59.51, 52.25, 41.81, 48.52, 52.09, 53.77, 61.09, 38.9 , 60.51, 39.4 , 44.23, 37.45, 43.07, 53.92, 47.4 , 49.34, 50.28, 31.34, 32.19, 42.54, 61.74, 31.59, 47.28, 48.61, 53.66, 48.82, 45.5 , 47.7 , 53.54, 40.67, 44.22, 71.28, 47.65, 49.15, 60.73, 53.69, 51.12], "y": [51.68, 60.95, 37.15, 38.76, 59.99, 43.78, 40.75, 39.45, 43.3 , 31.09, 39.63, 47.38, 49.05, 29.66, 47.95, 36.86, 46.24, 62.28, 24.73, 41.4 , 50.76, 41.77, 54.64, 42.59, 32.1 , 35.63, 46.86, 35.55, 54.2 , 32.73, 47.41, 38.48, 47.01, 54.44, 38.99, 56.25, 57.68, 49.12, 45.87, 54.55, 31.44, 43.32, 30.22, 53.95, 38.1 , 34.34, 52.09, 51.31, 29.91, 44.09, 50.57, 46.15, 31.07, 48.52, 36.04, 39.66, 46.12, 46.74, 39.79, 62.76, 39.77, 46.45, 46.84, 43.93, 43.37, 38.81, 47.46, 36.29, 37.36, 47.94, 48.81, 33.49, 30.38, 36.63, 43.65, 32.23, 42.34, 42.96, 31.68, 49.3 , 35.74, 43.01, 47.14, 47.03, 41.62, 48.47, 51.64, 44.32, 45.03, 49.36, 48.29, 43.59, 33.82, 43.63, 50.18, 45.11, 36.02, 49.66, 46.66, 44.64, 50.99, 43.38, 43.66, 40.77, 44.01, 47.06, 53.53, 42.13, 49.19, 44.83, 37.96, 43.1 , 45.91, 45.15, 51.49, 35.51, 56.37, 37.94, 36.86, 34.05, 37.56, 47.7 , 45.02, 44.5 , 43.9 , 31.37, 35.66, 35.99, 55.8 , 33.33, 40.68, 43.53, 49.99, 44.11, 39.29, 45.68, 44.97, 39.44, 38.08, 56.05, 39.08, 46.6 , 48.38, 44.2 , 46.13], "mode": "markers", "marker": {"color": "#be4bdb", "symbol": "circle"}, "name": "", "showlegend": false, "xaxis": "x", "yaxis": "y"}, {"type": "scattergl", "x": [28.19, 75.75], "y": [31.85, 58.9], "mode": "lines", "line": {"color": "#adb5bd", "width": 2, "dash": "solid"}, "marker": {"symbol": "circle"}, "name": "线性趋势", "showlegend": false, "xaxis": "x", "yaxis": "y"}]}散点图显示 feature_A 和 feature_C 之间存在正线性趋势,证实了之前计算的相关系数。点集中在回归线附近。结论在本实践部分,我们将本章的描述性统计原理应用于一个示例数据集。使用 Pandas、SciPy 和 Plotly,我们计算了集中趋势、离散程度和形状的度量,计算了相关性,并创建了直方图、箱线图和散点图等可视化。总结数据集的过程是任何数据分析或机器学习项目中的重要的第一步。它有助于您:理解变量的基本属性和分布。找出潜在问题,如偏度或异常值。发现变量之间的关系。有效地传达数据的重要特征。有了这些概括性认识,您可以更好地准备选择合适的数据预处理方法,选择适合的机器学习模型,并解释后续分析的结果。