在这里插入图片描述

在数据处理和分析中,我们经常遇到这样的问题:

如何快速了解数据的基本特征?
如何计算数据的均值、中位数、标准差等统计量?
如何识别数据的分布特征和异常值?

数据统计摘要分析 (Data Statistics Summary Analysis) 是数据处理的基础工具,通过计算数据序列的基本统计量(均值、中位数、标准差、方差、最大值、最小值、四分位数等),帮助我们快速了解数据的基本特征,识别数据分布和异常值。
本案例基于 Kotlin Multiplatform(KMP)与 OpenHarmony,实现了一个数据统计摘要分析器

  • 基本统计量:计算总和、均值、中位数、最大值、最小值、极差;
  • 离散度统计:计算方差、标准差、变异系数;
  • 四分位数:计算第一四分位数、中位数、第三四分位数、四分位距;
  • 分布特征:计算偏度和峰度,识别数据分布特征;
  • 通过 ArkTS 单页面展示原始序列、基本统计量、离散度统计、四分位数和分布特征,帮助你直观理解数据的统计特征。

一、问题背景与典型场景

典型场景包括:

  1. 性能指标分析
    对接口耗时、CPU 使用率等性能指标进行统计摘要分析,了解指标的基本特征和分布情况。

  2. 数据质量评估
    通过统计摘要分析,评估数据的质量,识别异常值和数据分布问题。

  3. 异常检测
    通过统计摘要分析,识别数据中的异常值(如超出 3 倍标准差的值),用于异常检测。

  4. 数据探索
    在数据分析前,通过统计摘要分析快速了解数据的基本特征,为后续分析提供基础。

  5. 报告生成
    生成数据的统计摘要报告,用于数据报告和可视化。

相比直接查看原始数据,数据统计摘要分析的优势在于:

  • 快速了解数据的基本特征;
  • 识别数据分布和异常值;
  • 为后续分析提供基础;
  • 支持数据质量评估。

二、Kotlin 数据统计摘要引擎

1. 输入格式设计

本案例沿用统一的文本输入风格:

series=10,12,11,13,15,18,20,19,17

或直接输入数值序列:

10,12,11,13,15,18,20,19,17
2. 核心算法实现

App.kt 中,我们实现了 dataStatisticsSummaryAnalyzer 函数:

@JsExport
fun dataStatisticsSummaryAnalyzer(inputData: String): String {
    // 1. 解析输入序列
    val values = parseSeries(inputData)
    
    // 2. 排序用于计算中位数和四分位数
    val sorted = values.sorted()
    
    // 3. 基本统计量
    val sum = values.sum()
    val mean = values.average()
    val median = calculateMedian(sorted)
    val min = sorted.first()
    val max = sorted.last()
    val range = max - min
    
    // 4. 方差和标准差
    val variance = values.map { (it - mean) * (it - mean) }.average()
    val stdDev = sqrt(variance)
    
    // 5. 四分位数
    val q1 = calculatePercentile(sorted, 25)
    val q3 = calculatePercentile(sorted, 75)
    val iqr = q3 - q1
    
    // 6. 偏度和峰度
    val skewness = calculateSkewness(values, mean, stdDev)
    val kurtosis = calculateKurtosis(values, mean, stdDev)
    
    // 7. 生成报告
    return buildReport(...)
}
3. 关键统计量计算

基本统计量

  • 总和:所有数据值的和
  • 均值:所有数据值的平均值
  • 中位数:数据排序后的中间值
  • 最大值和最小值:数据中的最大和最小值
  • 极差:最大值与最小值的差

离散度统计

  • 方差:数据值与均值差的平方的平均值
  • 标准差:方差的平方根
  • 变异系数:标准差与均值的比值(百分比)

四分位数

  • 第一四分位数 (Q1):25% 分位数
  • 中位数 (Q2):50% 分位数
  • 第三四分位数 (Q3):75% 分位数
  • 四分位距 (IQR):Q3 与 Q1 的差

分布特征

  • 偏度:数据分布的对称性,正值为右偏,负值为左偏
  • 峰度:数据分布的尖锐程度,正值为尖峰,负值为平峰

三、OpenHarmony ArkTS 前端集成

1. 导入 Kotlin/JS 函数

index.ets 中导入:

import { dataStatisticsSummaryAnalyzer } from './hellokjs'
2. 状态变量定义
@State seriesInput: string = "10,12,11,13,15,18,20,19,17"
@State result: string = ""
@State isLoading: boolean = false
3. 执行分析逻辑
executeDemo() {
  this.isLoading = true
  
  const seriesLine = this.seriesInput.includes('series=') 
    ? this.seriesInput 
    : `series=${this.seriesInput}`
  const payload = seriesLine
  
  setTimeout(() => {
    try {
      this.result = dataStatisticsSummaryAnalyzer(payload)
    } catch (e) {
      this.result = "❌ 执行失败: " + e.message
    }
    this.isLoading = false
  }, 100)
}
4. UI 布局设计
  • 顶部标题栏:使用渐变背景(紫色-蓝色主题),展示"数据统计摘要分析"标题
  • 输入区域:单行文本输入框,支持 series=... 格式或直接输入数值序列
  • 执行按钮:运行分析按钮和重置按钮
  • 结果展示区:使用 Scroll 组件展示分析报告,包括原始序列、基本统计量、离散度统计、四分位数和分布特征

四、算法复杂度分析

  • 时间复杂度:O(n log n),其中 n 为序列长度。主要时间消耗在排序操作。
  • 空间复杂度:O(n),需要存储原始序列和排序后的序列。

五、工程化应用建议

  1. 性能指标分析
    对接口耗时、CPU 使用率等性能指标进行统计摘要分析,了解指标的基本特征和分布情况。

  2. 数据质量评估
    通过统计摘要分析,评估数据的质量,识别异常值和数据分布问题。

  3. 异常检测
    通过统计摘要分析,识别数据中的异常值(如超出 3 倍标准差的值),用于异常检测。

  4. 数据探索
    在数据分析前,通过统计摘要分析快速了解数据的基本特征,为后续分析提供基础。

  5. 统计量选择

    • 均值:适合描述数据的平均水平,但对异常值敏感
    • 中位数:对异常值更鲁棒,适合存在异常值的数据
    • 标准差:反映数据的离散程度,标准差越大,数据波动越大
    • 四分位数:帮助识别数据的分布特征和异常值

六、总结

数据统计摘要分析是数据处理的基础工具,通过计算数据序列的基本统计量,帮助我们快速了解数据的基本特征,识别数据分布和异常值。本案例展示了如何在 KMP + OpenHarmony 架构下实现一个轻量级的数据统计摘要分析器,适用于性能指标分析、数据质量评估、异常检测等场景。

核心优势

  • 计算全面的统计量:基本统计量、离散度统计、四分位数、分布特征
  • 实现简单,计算高效
  • 结果直观,易于理解
  • 适用广泛,可用于多种场景

适用场景

  • 性能指标分析
  • 数据质量评估
  • 异常检测
  • 数据探索
  • 报告生成

通过本案例,你可以快速掌握数据统计摘要分析的核心思想,并在实际项目中灵活应用。

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.csdn.net

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐