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

2023-10-16 14:06:10 浏览数 (1)

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 数据获取

代码语言:javascript复制
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库进行数据清洗与处理

代码语言:javascript复制
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

代码语言:javascript复制
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文件中添加以下代码:

代码语言:javascript复制
from django.urls import path
from . import views

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

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

代码语言:javascript复制
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的模板文件,添加以下代码:

代码语言:javascript复制
{% 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 数据可视化页面

做几个跳转,去做个数据预测之类的,用饼图、折线图做个可视化……

0 人点赞