数据分析与可视化项目技术参考

2023-09-21 13:18:20

🙌秋名山码民的主页
😂oi退役选手,Java、大数据、单片机、IoT均有所涉猎,热爱技术,技术无罪
🎉欢迎关注🔎点赞👍收藏⭐️留言📝
获取源码,添加WX


1. 考核的主要内容

一般来说这部分的考核主要是,考察你们的Python 爬虫(在没有数据的情况下)、Python pandas 基础数据分析、matplotlib 绘制直方图、饼状图、散点图和误差线图等多种图形,我总结了一下:

  1. 数据收集与清洗:

数据爬取和抓取技术,如爬虫、API调用等;
数据清洗和预处理技术,如数据去重、缺失值处理、异常值处理等。

  1. 数据处理与分析:

数据处理工具,如Python的Pandas等;
数据转换和整合技术,如数据合并、数据透视表等;
统计分析技术,如描述性统计、假设检验、回归分析,做个预测之类

  1. 数据可视化:

可视化工具和库,如Tableau、Matplotlib、ggplot2等;
图表和图形设计技巧,如选择合适的图表类型、颜色搭配等;
交互式可视化技术,如使用JavaScript库实现动态和可交互的图表。

如果是普通的结课大作业已经够用了,但是作为项目来说的话,还需要搭建前后端网站,避免存在任务量不饱和的情况。

2. 具体实现流程

示例为:基于Python的电影售票大数据分析

电影数据分析网站的开发流程可以分为以下几个步骤,使用Python的相关框架进行开发:

  1. 需求分析:用户可以搜索电影、查看电影详情、获取电影评分等。

  2. 数据获取:使用Python的网络爬虫技术,从电影数据库或其他数据源中获取电影数据。可以使用框架如Scrapy或BeautifulSoup来进行数据爬取。

  3. 数据清洗与处理:对获取到的电影数据进行清洗和预处理,包括去重、缺失值处理、数据格式转换等。使用Python的数据处理库,如Pandas,进行数据清洗和处理。

  4. 数据存储:将清洗后的电影数据存储到数据库中,例如使用MySQL或MongoDB等数据库。可以使用Python的ORM框架,如SQLAlchemy,来简化数据库操作。

  5. 网站后端开发:使用Python的Web框架,我比较熟悉Django,进行网站后端的开发。

  6. 网站前端开发:使用前端技术,如HTML、CSS和JavaScript,进行网站的前端开发。使用前端框架,如Vue,来构建用户界面和实现交互功能。

  7. 数据可视化:使用ECharts框架来做几个页面。

  8. 用户认证与权限管理:根据需求,实现用户认证和权限管理功能,确保只有授权用户可以进行某些操作,如添加电影评论或收藏电影等。

  9. 测试与优化:进行系统测试,确保网站的功能和性能符合预期。根据用户反馈和需求,进行优化和改进,提升网站的用户体验和性能。

3. 技术参考

注:本部分代码为伪代码

3.1 数据获取

import requests
from bs4 import BeautifulSoup
from lxml import html

etree = html.etree
import csv

# 请求头
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"
}
hrefs = []


# 爬取豆瓣电影TOP250的url
# 获取电影详情页url
def get_film_url(url):
    try:
        r = requests.get(url, headers=headers)
        selector = etree.HTML(r.text)
        movie_hrefs = selector.xpath('//div[@class="hd"]/a/@href')  # 电影的详情地址
        for i in range(0, len(movie_hrefs)):
            hrefs.append(movie_hrefs[i])
    except Exception as e:
        print(e)


# 保存电影链接url
def save_url():
    try:
        # 获取链接
        for href in hrefs:
            # 存入csv
            file_path = "./豆瓣电影TOP250链接.csv"
            with open(file_path, "a+", newline='', encoding='gb18030') as csvfile:
                writer = csv.writer(csvfile)
                writer.writerow([href])
    except Exception as e:
        print(e)


def main():
    # 爬取豆瓣电影TOP250的url
    for i in range(0, 250, 25):
        url = "https://movie.douban.com/top250?start=" + str(i) + ""
        get_film_url(url)
    save_url()


if __name__ == '__main__':
    main()

3.2 数据清洗与处理

使用Python的Pandas库进行数据清洗与处理

import pandas as pd

# 读取数据
data = pd.read_csv('data.csv') 

# 去重
data = data.drop_duplicates()

# 处理缺失值
data = data.fillna(0)  # 将缺失值填充为0,也可以使用其他方法进行处理

# 数据格式转换
data['date'] = pd.to_datetime(data['date'])  # 将日期列转换为日期格式

# 数据转换与整合
data['total_sales'] = data['quantity'] * data['price']  # 计算总销售额,根据实际需求进行计算

# 数据分组与聚合
monthly_sales = data.groupby(data['date'].dt.to_period('M')).sum()['total_sales']  # 按月份对销售额进行汇总

3.3 数据存储到Mysql

import pandas as pd
from sqlalchemy import create_engine

# 读取清洗后的数据
cleaned_data = pd.read_csv('cleaned_data.csv')

# 连接MySQL数据库
engine = create_engine('mysql+pymysql://username:password@localhost/database_name')

# 将数据存储到MySQL数据库中的表
cleaned_data.to_sql('table_name', engine, if_exists='replace', index=False)

# 关闭数据库连接
engine.dispose()

3.4 网站开发

这个你不系统学一下Django、springboot之类的,代码给你也看不懂,这里我给几个参考示例页面:

3.4.1 登录页面

urls.py文件中添加以下代码:

from django.urls import path
from . import views

urlpatterns = [
    path('login/', views.login_view, name='login'),
]

接着,在views.py文件中添加以下代码:

from django.shortcuts import render, redirect
from django.contrib.auth import authenticate, login

def login_view(request):
    if request.method == 'POST':
        username = request.POST['username']
        password = request.POST['password']
        user = authenticate(request, username=username, password=password)
        if user is not None:
            login(request, user)
            return redirect('home')  # 登录成功后跳转到首页
        else:
            error_message = '用户名或密码错误'
            return render(request, 'login.html', {'error_message': error_message})
    else:
        return render(request, 'login.html')

然后,在templates文件夹中创建一个名为login.html的模板文件,添加以下代码:

{% if error_message %}
    <p>{{ error_message }}</p>
{% endif %}

<form method="post" action="{% url 'login' %}">
    {% csrf_token %}
    <label for="username">用户名:</label>
    <input type="text" id="username" name="username" required><br><br>
    <label for="password">密码:</label>
    <input type="password" id="password" name="password" required><br><br>
    <input type="submit" value="登录">
</form>

最后,确保在settings.py文件中设置了正确的TEMPLATES配置项,包括APP_DIRS设置为True,以使Django能够找到模板文件。

由于Django是自带后台页面的,你也可以去改改官方的,也能用

3.4.2 数据可视化页面

在这里插入图片描述
做几个跳转,去做个数据预测之类的,用饼图、折线图做个可视化……

更多推荐

OJ练习第175题——打家劫舍 II

打家劫舍II力扣链接:213.打家劫舍II题目描述你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都围成一圈,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负

OpenHarmony创新赛 | 您有一份创新激励奖待领取 请查收!

2023开源和信息消费大赛开放原子开源大赛OpenHarmony创新赛(以下简称“OpenHarmony创新赛”)正如火如荼的进行当中赛程也即将进入到提交作品的关键阶段为了鼓励更多参赛队伍提交作品OpenHarmony创新赛特别设立“创新激励奖”!前100名按要求提交完整作品的参赛队伍即可获得激励奖——创新赛周边限定礼

【机器学习教程】四、随机森林:从论文到实践

引言随机森林(RandomForest)是机器学习领域中一种强大的集成学习算法。它的优秀性能和广泛应用使得它成为了机器学习领域的一个重要里程碑。本文将从算法的发展历程、重要论文、原理以及实际应用等方面详细介绍随机森林,并提供一个复杂的实战案例。算法发展和重要论文随机森林算法最早由TinKamHo于1995年提出,但直到

Layui快速入门之第十三节 日期与时间选择器

目录一:基本用法API渲染属性弹出提示2.8+获取实例2.8+解除实例绑定2.8+关闭日期面板2.7+获取某月的最后一天二:常规用法三:多类型选择器四:范围选择五:直接静态显示六:更多功能示例一:基本用法Layui是一个基于jQuery的前端UI框架,它提供了众多的组件和工具,其中包括日期选择器组件。在Layui中使用

同为科技(TOWE)专业防雷滤波桌面PDU超级插座

2023年第19届杭州亚运会开幕在即,相较于以往,本届杭州亚运会的一大看点就是电竞项目将首次以正式比赛项目的身份亮相亚运赛场,让更多受众能够领略电竞的魅力。当前社会,电竞作为一种新兴的娱乐、社交方式,让很多年轻人通过高科技设备的便捷和高效,在游戏中展示自己的技能和策略,与志同道合的朋友一起体验团队合作的乐趣,从而展现自

2023华为杯研究生数学建模选题建议和获奖助攻

先说一下自己的看法吧,明天会分享点干货以及赛题的思路给大家!查看文末名片即可!很多同学都是第一次参加数学建模比赛,尤其是含金量最高的华为杯,所以在没有经过系统的学习数学建模知识体系的情况下,大家在拿到题目之后,一定要慎重选题,你要确保你选择的题目是可以在四天内完成的!大家可以看一下华为杯去年的赛题题型A题是华为题,与华

外贸遇到同事撞单怎么处理

有时候感觉这个世界太小了,小到我们经常和自己的同事撞单,甚至很纳闷为什么客户会同时联系我们公司的那么多人,是如何联系上的。比如刚毕业的时候,我曾经开发过一个埃及的客户,每次他回复邮件的时候都会带着我们公司很多其他同事的邮箱。当时公司的规定是谁先给客户发送的开发信或者是客户第一次回复谁的邮件来将客户归为谁管理,其他的同事

类和对象(下)

前言:前面两篇文章我们一共讲述了类和对象的六个默认成员函数,这篇文章我们将接着继续讲。一、再谈构造函数:1.1构造函数体赋值:虽然调用构造函数之后,对象中已经有一个初始值,但是我哦们不能将这称之为对象成员变量的初始化,我们只能将其称之为赋值。因为初始化只能初始化一次,而构造函数体可以进行多次赋值。1.2初始化列表:初始

后端字典的优雅设计

背景今天讲到的是数据字典的设计。为什么要讲到这个呢,因为我下午在做开发的时候遇到了一个问题。我先扔出来某个表的字段的定义吧:business_typeintdefault0comment'0:收款计划;1:付款计划'而且我还有一个字典表,字典表的结构大约是这样的:dict_codeCodeValuebusiness_t

C++ 基础(十二)函数-题目练习

一、等差数列求和描述编写一个函数sum(…),计算等差数列中前n项数据的和。已知等差数列的起始项为2。例如:等差数列2,5,8,11…,需要利用sum函数求出前3项的和为15。【题目要求】①等差数列中数字之间的差值不固定,需要自行输入。②输入要求的数列项数n。③输出前n项数据的和。输入描述两个正整数;第一个正整数为数列

水一下文章

前言:相信看到这篇文章的小伙伴都或多或少有一些编程基础,懂得一些linux的基本命令了吧,本篇文章将带领大家服务器如何部署一个使用django框架开发的一个网站进行云服务器端的部署。文章使用到的的工具Python:一种编程语言,只能进行后端数据的处理和管理前端HTML文件,不能用来处理HTTP请求Nginx:web服务

热文推荐