计算机毕业设计选题推荐|【基于大数据的全球经济社会发展指标数据可视化分析】Spark+K-Means 分群

精彩专栏推荐订阅:在下方主页👇🏻👇🏻👇🏻👇🏻

💖🔥作者主页计算机毕设木哥🔥 💖

一、项目介绍

全球经济社会发展指标分散在多国多年截面里,经济体量、民生状况与数字接入往往各看各的,研究者和学生想对照区域差距、发展分层和联网水平时,缺少一套能把指标清洗、统计分析和图表呈现串起来的系统。手工拼表既费时,也难把聚类、关联这类挖掘结果稳定展示出来。本文通过开发一个基于大数据的全球经济社会发展指标数据可视化分析系统,用以帮助解决全球发展指标难统一查看、难对照挖掘结果的问题。
本系统采用 Hadoop、Spark/PySpark、Python、Django、Vue、ECharts 与 MySQL 实现,业务侧覆盖经济实力、民生福祉、数字发展三个分析维度共十五项结果,含区域产值对比、人均产值走势、预期寿命走势、区域失业差异、网民占比走势等统计图,并用 K-Means 完成国别发展分群、用 FP-Growth 挖掘发展标签共现,同时提供可视化大屏与国别发展指标数据管理,管理员还可维护个人中心与密码信息。
经系统测试,本网站能满足计算机及相关专业学生毕业设计演示需求,也能给关注全球发展指标的教学与研究使用者提供按维度看图、按国别管数的入口,对大数据可视化类课题落地有参考意义。

二、视频展示

基于大数据的全球经济社会发展指标数据可视化分析

三、开发环境

  • 大数据技术:Hadoop、Spark、Hive
  • 开发技术:Python、Django框架、Vue、Echarts
  • 软件工具:Pycharm、DataGrip、Anaconda
  • 可视化 工具 Echarts

四、系统展示

系统页面模块模块:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

五、代码展示

methods: {
  fetchList(url) {
    return this.$http({ url: url, method: 'get' }).then(res => {
      const d = (res.data && res.data.data) || []
      return Array.isArray(d) ? d : []
    }).catch(() => [])
  },
  loadAll() {
    Promise.all([
      this.fetchList('analysis/internet_users_trend'),
      this.fetchList('analysis/region_internet_level'),
      this.fetchList('analysis/internet_adoption_layers'),
      this.fetchList('analysis/country_dev_clusters'),
      this.fetchList('analysis/dev_label_association')
    ]).then(arr => {
      this.initNetTrend(arr[0])
      this.initRegionNet(arr[1])
      this.initAdopt(arr[2])
      this.initCluster(arr[3])
      this.initAssoc(arr[4])
    })
  },
  initNetTrend(data) {
    const el = this.$refs.netTrendChart
    if (!el) return
    const rows = (data || []).slice().sort((a, b) => Number(a.year || 0) - Number(b.year || 0))
    const width = el.clientWidth || 800
    let opt = buildLineSingle(rows, {
      xField: 'year', yField: 'avg_internet_users_pct',
      yName: '网民占比(%)', xName: '年份', area: true, width
    })
    opt = deepMerge(opt, this.netTrendConfig.override)
    safeInit(el, chart => {
      chart.setOption(opt)
      refitGrid(chart, { xLabels: rows.map(r => String(r.year || '')), width })
      this.charts.netTrend = chart
    }, this)
  },
  initRegionNet(data) {
    const el = this.$refs.regionNetChart
    if (!el) return
    const rows = (data || []).slice().sort(
      (a, b) => Number(b.avg_internet_users_pct || 0) - Number(a.avg_internet_users_pct || 0)
    )
    const width = el.clientWidth || 480
    let opt = buildBarH(rows, {
      yField: 'region', xField: 'avg_internet_users_pct', xName: '网民占比(%)', width
    })
    opt = deepMerge(opt, this.regionNetConfig.override)
    safeInit(el, chart => {
      chart.setOption(opt)
      refitGrid(chart, { yLabels: rows.map(r => String(r.region || '')), width })
      this.charts.regionNet = chart
    }, this)
  },
  initAdopt(data) {
    const el = this.$refs.adoptChart
    if (!el) return
    const children = data.map(r => ({
      name: String(r.internet_adoption_category || ''),
      value: Number(r.count || 0)
    }))
    const tree = [{ name: '联网采纳', children: children }]
    let opt = buildSunburst(tree, { name: '国家数' })
    opt = deepMerge(opt, this.adoptConfig.override)
    safeInit(el, chart => {
      chart.setOption(opt)
      this.drills.adopt = setupSunburstDrill(chart, opt, {
        container: this.$refs.adoptCrumb, rootLabel: '联网采纳', theme: 'light'
      })
      this.charts.adopt = chart
    }, this)
  },
  initCluster(data) {
    const el = this.$refs.clusterChart
    if (!el) return
    const width = el.clientWidth || 800
    let opt = buildEffectScatter(data, {
      xField: 'gdp_per_capita', yField: 'life_expectancy',
      sizeField: 'internet_users_pct', nameField: 'country',
      xName: '人均GDP', yName: '预期寿命', width
    })
    const byCountry = {}
    data.forEach(r => { byCountry[String(r.country || '')] = r })
    opt = deepMerge(opt, this.clusterConfig.override)
    if (opt.tooltip) {
      opt.tooltip.formatter = function (p) {
        const name = (p.value && p.value[3]) || p.name || ''
        const row = byCountry[name] || {}
        const label = row.cluster_label || ''
        return '<b>' + name + '</b><br/>人均GDP:' + (row.gdp_per_capita || '') +
          '<br/>预期寿命:' + (row.life_expectancy || '') +
          '<br/>联网占比:' + (row.internet_users_pct || '') +
          (label ? ('<br/>分群:' + label) : '')
      }
    }
    safeInit(el, chart => {
      chart.setOption(opt)
      refitGrid(chart, { width })
      this.charts.cluster = chart
    }, this)
  },
  initAssoc(data) {
    const el = this.$refs.assocChart
    if (!el) return
    const rows = (data || []).slice()
      .map(r => ({
        rule: String(r.antecedents || '') + ' → ' + String(r.consequents || ''),
        lift: Number(r.lift || 0)
      }))
      .filter(r => r.rule.indexOf('→') > 0 && r.lift > 0)
      .sort((a, b) => b.lift - a.lift)
      .slice(0, 12)
    const width = el.clientWidth || 800
    let opt = buildBarH(rows, {
      yField: 'rule', xField: 'lift', xName: '提升度', yLabelWidth: 200, width
    })
    opt = deepMerge(opt, this.assocConfig.override)
    safeInit(el, chart => {
      chart.setOption(opt)
      refitGrid(chart, { yLabels: rows.map(r => r.rule), width })
      this.charts.assoc = chart
    }, this)
  }
}

六、项目文档展示

在这里插入图片描述

七、项目总结

本课题围绕全球经济社会发展指标,构建了一套从数据处理到结果展示的可视化分析系统。系统以 2000–2024 年国别发展数据为基础,经预处理后由 Hadoop 与 Spark 完成指标统计与挖掘,覆盖经济实力、民生福祉、数字发展三个维度共十五项分析,并用 K-Means 完成国别发展分群、用 FP-Growth 挖掘发展标签共现。前端基于 Django、Vue 与 ECharts,提供三维分析页、可视化大屏和国别发展指标管理,便于对照区域产值、收入结构、寿命与失业、网民与联网水平等结果。经测试,本系统能支撑毕业设计演示与指标查阅需求,对大数据类课题落地具有参考价值。

大家可以帮忙点赞、收藏、关注、评论啦 👇🏻

💖🔥作者主页计算机毕设木哥🔥 💖

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值