博主介绍:✌全网粉丝10W+,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业项目实战6年之久,选择我们就是选择放心、选择安心毕业✌
> 🍅想要获取完整文章或者源码,或者代做,拉到文章底部即可与我联系了。🍅

点击查看作者主页,了解更多项目!

🍅感兴趣的可以先收藏起来,点赞、关注不迷路,大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助同学们顺利毕业 。🍅

1、毕业设计:2025年计算机专业毕业设计选题汇总(建议收藏)✅

2、最全计算机专业毕业设计选题大全(建议收藏)✅

1、项目介绍

技术栈:
python语言、Django框架、requests爬虫、数据分析、数据清洗、Echarts可视化、农业生产数据、农业指标数据、气象数据
农业数据可视化分析、农业生产+气象可视化分析系统+爬虫
农业指标数据、气象指标数据

功能模块:
一、农业数据分析
1、夏收粮食产量分析(各省份夏收粮食产量/万吨,近5、10、20年分析)
2、秋收粮食产量分析(各省份夏收粮食产量/万吨,近5、10、20年分析)
3、夏收粮食播种面积分析(各省份夏收粮食播种面积/千公顷,近5、10、20年分析)
4、秋收粮食播种面积分析(各省份秋收粮食播种面积/千公顷,近5、10、20年分析)
5、受灾面积分析(各省份受灾面积/千公顷,近5、10、20年分析)
6、有效灌溉面积分析(有效灌溉面积/千公顷,近5、10、20年分析)
7、农用化肥施用折纯量分析(农用化肥施用折纯量/万吨,近5、10、20年分析)

二、气候数据分析
1、全国各省份平均气温分析(最高气温、最低气温)
2、全国各省份平均降水量分析

三、注册登录

四、后台数据管理
1、用户管理
2、农业数据管理
3、气候数据管理

2、项目界面

(1)全国各城市平均降水量分析

在这里插入图片描述

(2)各省份粮食产量可视化分析

在这里插入图片描述

(3)粮食产量饼图分析

在这里插入图片描述

(4)各省份粮食播种面积分析
在这里插入图片描述

(5)各省份受灾面积分析

在这里插入图片描述

(6)各省份有效灌溉面积分析

在这里插入图片描述

(7)中国地图—各省份每个月平均最低气温分布分析

在这里插入图片描述

(8)中国地图—各省份每个月平均最高气温分布分析

在这里插入图片描述

(9)后台数据管理----农业数据
在这里插入图片描述

(10)后台数据管理----天气数据

在这里插入图片描述

(11)注册登录模块

在这里插入图片描述

3、项目说明

摘 要

随着信息技术的不断发展,农业数据的获取和分析已成为现代农业研究的重要组成部分。农业数据采集与分析可视化系统为人们提供了一种全新的农业数据处理和分析方法。该系统采用 Django 作为后端框架,利用其强大的数据处理能力,并结合 MySQL 数据库进行数据存储和管理。使用 Echarts 库进行数据可视化,支持用户直观地查看农业和气候数据的变化趋势。
该系统的主要模块包括用户登录注册模块、农业数据管理模块、气候数据管理模块、数据可视化模块。这些模块为用户提供了完整的农业数据管理和使用服务,包括对夏收和秋收粮食产量、播种面积、受灾面积、有效灌溉面积、农用化肥施用量及气候数据的查询、添加、修改和删除等操作。
该系统的实现为农业生产与管理提供了新的思路和工具。通过该系统,用户可以方便地获取和分析农业数据和气候数据,为农业生产决策提供更精确的数据支持。系统的可扩展性和可维护性也为未来的需求和变化提供了良好的适应性,用户能够持续有效地利用该系统进行农业数据分析和决策。
关键词:农业数据,数据分析,可视化,Django,MySQL

项目介绍

技术栈
  • 编程语言:Python
  • 后端框架:Django
  • 数据采集:requests 爬虫
  • 数据分析与处理:数据分析、数据清洗
  • 可视化工具:Echarts
  • 数据类型:农业生产数据、农业指标数据、气象数据
功能模块
一、农业数据分析
  1. 夏收粮食产量分析

    • 提供各省份夏收粮食产量数据(单位:万吨)。
    • 支持近5年、10年、20年的历史数据分析。
    • 可视化展示各省份产量变化趋势,帮助用户了解产量的增减情况。
  2. 秋收粮食产量分析

    • 提供各省份秋收粮食产量数据(单位:万吨)。
    • 支持近5年、10年、20年的历史数据分析。
    • 可视化展示各省份产量变化趋势,帮助用户了解产量的增减情况。
  3. 夏收粮食播种面积分析

    • 提供各省份夏收粮食播种面积数据(单位:千公顷)。
    • 支持近5年、10年、20年的历史数据分析。
    • 可视化展示各省份播种面积变化趋势,帮助用户了解播种面积的增减情况。
  4. 秋收粮食播种面积分析

    • 提供各省份秋收粮食播种面积数据(单位:千公顷)。
    • 支持近5年、10年、20年的历史数据分析。
    • 可视化展示各省份播种面积变化趋势,帮助用户了解播种面积的增减情况。
  5. 受灾面积分析

    • 提供各省份受灾面积数据(单位:千公顷)。
    • 支持近5年、10年、20年的历史数据分析。
    • 可视化展示各省份受灾面积变化趋势,帮助用户了解受灾情况。
  6. 有效灌溉面积分析

    • 提供有效灌溉面积数据(单位:千公顷)。
    • 支持近5年、10年、20年的历史数据分析。
    • 可视化展示有效灌溉面积的变化趋势,帮助用户了解灌溉设施的覆盖情况。
  7. 农用化肥施用折纯量分析

    • 提供农用化肥施用折纯量数据(单位:万吨)。
    • 支持近5年、10年、20年的历史数据分析。
    • 可视化展示化肥施用量的变化趋势,帮助用户了解化肥使用情况。
二、气候数据分析
  1. 全国各省份平均气温分析

    • 提供全国各省份的平均气温数据,包括最高气温和最低气温。
    • 支持按年份、季节或月份进行分析。
    • 可视化展示气温分布情况,帮助用户了解气温变化趋势。
  2. 全国各省份平均降水量分析

    • 提供全国各省份的平均降水量数据。
    • 支持按年份、季节或月份进行分析。
    • 可视化展示降水量分布情况,帮助用户了解降水变化趋势。
三、注册登录
  • 提供用户注册和登录功能。
  • 支持用户通过用户名和密码进行登录。
  • 注册时需要填写必要的用户信息,如用户名、密码、邮箱等。
四、后台数据管理
  1. 用户管理

    • 提供用户信息的增删改查功能。
    • 可以查看用户的基本信息、登录记录等。
    • 支持对用户权限的管理,如普通用户、管理员等。
  2. 农业数据管理

    • 提供农业数据的增删改查功能。
    • 可以上传、更新和删除农业相关的数据,如粮食产量、播种面积等。
    • 支持数据的导入和导出功能,方便数据的管理和备份。
  3. 气候数据管理

    • 提供气候数据的增删改查功能。
    • 可以上传、更新和删除气候相关的数据,如气温、降水量等。
    • 支持数据的导入和导出功能,方便数据的管理和备份。

项目界面

以下是项目界面的简要介绍:

  1. 全国各城市平均降水量分析

    • 通过可视化图表展示全国各城市的平均降水量情况。
    • 支持按年份、季节或月份进行筛选和分析。
    • 图表形式可能包括柱状图、折线图等,方便用户直观了解降水量分布。
  2. 各省份粮食产量可视化分析

    • 通过可视化图表展示各省份的粮食产量情况。
    • 支持按年份、季节进行筛选和分析。
    • 图表形式可能包括柱状图、折线图等,方便用户直观了解产量变化趋势。
  3. 粮食产量饼图分析

    • 使用饼图展示各省份粮食产量的占比情况。
    • 支持按年份、季节进行筛选和分析。
    • 帮助用户快速了解各省份在粮食产量中的贡献比例。
  4. 各省份粮食播种面积分析

    • 通过可视化图表展示各省份的粮食播种面积情况。
    • 支持按年份、季节进行筛选和分析。
    • 图表形式可能包括柱状图、折线图等,方便用户直观了解播种面积变化趋势。
  5. 各省份受灾面积分析

    • 通过可视化图表展示各省份的受灾面积情况。
    • 支持按年份、季节进行筛选和分析。
    • 图表形式可能包括柱状图、折线图等,方便用户直观了解受灾情况。
  6. 各省份有效灌溉面积分析

    • 通过可视化图表展示各省份的有效灌溉面积情况。
    • 支持按年份、季节进行筛选和分析。
    • 图表形式可能包括柱状图、折线图等,方便用户直观了解灌溉面积变化趋势。
  7. 中国地图——各省份每个月平均最低气温分布分析

    • 在中国地图上展示各省份每个月的平均最低气温分布情况。
    • 使用地图热力图的形式,直观展示气温分布差异。
    • 支持按月份进行筛选和分析。
  8. 中国地图——各省份每个月平均最高气温分布分析

    • 在中国地图上展示各省份每个月的平均最高气温分布情况。
    • 使用地图热力图的形式,直观展示气温分布差异。
    • 支持按月份进行筛选和分析。
  9. 后台数据管理——农业数据

    • 提供农业数据的管理界面。
    • 支持数据的增删改查功能。
    • 可以导入和导出农业数据,方便数据的管理和备份。
  10. 后台数据管理——天气数据

    • 提供气候数据的管理界面。
    • 支持数据的增删改查功能。
    • 可以导入和导出气候数据,方便数据的管理和备份。
  11. 注册登录模块

    • 提供用户注册和登录界面。
    • 支持用户通过用户名和密码进行登录。
    • 注册时需要填写必要的用户信息,如用户名、密码、邮箱等。

4、核心代码


from django.contrib.auth.decorators import login_required
from django.db.models import Sum
from django.shortcuts import render
from .models import Agriculture,Meteorology

@login_required(login_url='/login/')
def index(request):
    zb_results = Agriculture.objects.values_list('zb', flat=True).distinct()
    zb = request.GET.get('zb')
    qh = request.GET.get('qh')
    selectTime = request.GET.get('selectTime')
    if not selectTime:
        selectTime = '近5年'
    qh_data = {'avg_max_temperature': {}, 'avg_min_temperature': {},'avg_precipitation':{}}
    context = {'direction':'','zb_results':zb_results,'zb':zb,'qh':qh,'year_results':[],'year_data':[],'area_results':[],'area_data':[],'unit':'','qh_data':qh_data}
    if zb:
        context['direction'] = 'zb'
        all_results = Agriculture.objects.all().filter(zb=zb)
        unit = Agriculture.objects.all().filter(zb=zb).values_list('unit', flat=True).distinct()[0]
        year_results = list(all_results.values_list('updateTime', flat=True).distinct())
        if selectTime:
            selectTime_dict = {'近5年': 5, '近10年': 10, '近20年': 20}
            year_results = year_results[0:selectTime_dict[selectTime]]
        year_data = {}
        flag = 0
        for year in year_results:
            total_value = Agriculture.objects.all().filter(zb=zb).filter(updateTime=year).aggregate(value_sum=Sum('value'))
            value_sum = round(total_value['value_sum'],2)
            if value_sum == 0:
                flag += 1
                continue
            year_data[year] = value_sum
        year_results = year_results[flag:selectTime_dict[selectTime]]
        area_results = list(all_results.values_list('area',flat=True).distinct())
        area_data = {}
        for area in area_results:
            temp = [round(eval(_),2) for _ in list(all_results.filter(area=area).values_list('value',flat=True))]
            temp = temp[flag:selectTime_dict[selectTime]]
            area_data[area] = temp
        context['year_results'] = year_results
        context['year_data'] = year_data
        context['area_results'] = area_results
        context['area_data'] = area_data
        context['unit'] = unit
    elif qh:
        context['direction'] = 'qh'
        provincial = {}
        month_list = list(Meteorology.objects.all().values_list('month', flat=True).distinct())
        for month in month_list:
            qh_data['avg_max_temperature'][month] = []
            qh_data['avg_min_temperature'][month] = []
            qh_data['avg_precipitation'][month] = []
            city_precipitation = []
            for city in provincial.keys():
                results = Meteorology.objects.all().filter(city=city).filter(month=month).values('avg_max_temperature','avg_min_temperature', 'avg_precipitation')[0]
                city = provincial[city]
                if city in city_precipitation:
                    qh_data['avg_precipitation'][month].append({'name':city,'value':results['avg_precipitation'].replace('mm','')})
                qh_data['avg_max_temperature'][month].append({'name':city,'value':results['avg_max_temperature'].replace('℃','')})
                qh_data['avg_min_temperature'][month].append({'name': city, 'value': results['avg_min_temperature'].replace('℃', '')})
    return render(request,'index.html',context=context)

import requests
import time
from requests.packages.urllib3.exceptions import InsecureRequestWarning
requests.packages.urllib3.disable_warnings(InsecureRequestWarning)


def getData(zb,zb_code,data):
    millis = int(round(time.time() * 1000))
    url = 'https://data.stats.gov.cn/easyquery.htm?}'.format(zb_code,millis)
    }
    response = requests.get(url=url,headers=headers, verify=False)
    results = response.json()
    unit = results['returndata']['wdnodes'][0]['nodes'][0]['unit']
    area_code = {}
    for item in results['returndata']['wdnodes'][1]['nodes']:
        name = item['cname']
        code = item['code'] 
        area_code[code] = name
    for item in results['returndata']['datanodes']:
        value = item['data']['data']
        area = area_code[item['wds'][1]['valuecode']]
        updateTime = item['wds'][2]['valuecode']
        data.append([area,value,unit,zb,updateTime])
   
def writeData(data):
    with open('./data/data_agriculture.csv','w+',encoding='utf-8') as fp:
        fp.write('\t'.join(['area','value','unit','zb','updateTime'])+'\n')
        for item in data:
            fp.write('\t'.join([str(_) for _ in item])+'\n')
        
if __name__ == '__main__':
    zb_code_list = [{'zb':'夏收粮食产量','zb_code':'A0D0Q02'},{'zb':'秋收粮食产量','zb_code':'A0D0Q02'},{'zb':'夏收粮食播种面积','zb_code':'A0D0P03'},{'zb':'秋收粮食播种面积','zb_code':'A0D0P04'},{'zb':'受灾面积','zb_code':'A0D1801'},{'zb':'有效灌溉面积','zb_code':'A0D0H01'},{'zb':'农用化肥施用折纯量','zb_code':'A0D0H02'}]
    data = []
    for item in zb_code_list:
        zb = item['zb']
        zb_code = item['zb_code']
        getData(zb,zb_code,data)
        print('指标:{}数据采集完成!'.format(zb))
        time.sleep(3)
    writeData(data)

5、项目获取

biyesheji0005  或  biyesheji0001   (绿色聊天软件)

🍅由于篇幅限制,获取完整文章或源码、代做项目的,查看我的【用户名】、【专栏名称】、【顶部选题链接】就可以找到我啦🍅

感兴趣的可以先收藏起来,点赞、关注不迷路,下方查看👇🏻获取联系方式👇🏻

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐