1. 考核的主要内容
一般来说这部分的考核主要是,考察你们的Python 爬虫(在没有数据的情况下)、Python pandas 基础数据分析、matplotlib 绘制直方图、饼状图、散点图和误差线图等多种图形,我总结了一下:
- 数据收集与清洗:
数据爬取和抓取技术,如爬虫、API调用等; 数据清洗和预处理技术,如数据去重、缺失值处理、异常值处理等。
- 数据处理与分析:
数据处理工具,如Python的Pandas等; 数据转换和整合技术,如数据合并、数据透视表等; 统计分析技术,如描述性统计、假设检验、回归分析,做个预测之类
- 数据可视化:
可视化工具和库,如Tableau、Matplotlib、ggplot2等; 图表和图形设计技巧,如选择合适的图表类型、颜色搭配等; 交互式可视化技术,如使用JavaScript库实现动态和可交互的图表。
如果是普通的结课大作业已经够用了,但是作为项目来说的话,还需要搭建前后端网站,避免存在任务量不饱和的情况。
2. 具体实现流程
示例为:基于Python的电影售票大数据分析
电影数据分析网站的开发流程可以分为以下几个步骤,使用Python的相关框架进行开发:
- 需求分析:用户可以搜索电影、查看电影详情、获取电影评分等。
- 数据获取:使用Python的网络爬虫技术,从电影数据库或其他数据源中获取电影数据。可以使用框架如Scrapy或BeautifulSoup来进行数据爬取。
- 数据清洗与处理:对获取到的电影数据进行清洗和预处理,包括去重、缺失值处理、数据格式转换等。使用Python的数据处理库,如Pandas,进行数据清洗和处理。
- 数据存储:将清洗后的电影数据存储到数据库中,例如使用MySQL或MongoDB等数据库。可以使用Python的ORM框架,如SQLAlchemy,来简化数据库操作。
- 网站后端开发:使用Python的Web框架,我比较熟悉Django,进行网站后端的开发。
- 网站前端开发:使用前端技术,如HTML、CSS和JavaScript,进行网站的前端开发。使用前端框架,如Vue,来构建用户界面和实现交互功能。
- 数据可视化:使用ECharts框架来做几个页面。
- 用户认证与权限管理:根据需求,实现用户认证和权限管理功能,确保只有授权用户可以进行某些操作,如添加电影评论或收藏电影等。
- 测试与优化:进行系统测试,确保网站的功能和性能符合预期。根据用户反馈和需求,进行优化和改进,提升网站的用户体验和性能。
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):
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():
# 获取链接
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>