当前位置: 首页 > news >正文

Python学习计划——12.1选择一个小项目并完成

在这节课中,我们将选择一个小项目并完成它。为了综合运用前面所学的知识,我们选择构建一个简单的Web应用,该应用将包含数据分析和展示功能。我们将使用Flask框架和Pandas库来处理数据,并将结果展示在Web页面上。

项目:简单的电影数据分析和展示应用

这个项目的目标是创建一个Web应用,用户可以上传包含电影信息的CSV文件,应用将分析这些数据并展示结果。我们将使用Pandas进行数据分析,并使用Flask构建Web接口。

项目结构

首先,设定项目结构如下:

movie_analysis/app.pytemplates/upload.htmlanalysis.htmlstatic/style.css
1. 创建Flask应用

首先,定义Flask应用,并添加上传和展示页面的路由。

示例:创建Flask应用
from flask import Flask, render_template, request, redirect, url_for, flash
import pandas as pd
import osapp = Flask(__name__)
app.secret_key = "supersecretkey"
UPLOAD_FOLDER = 'uploads'
if not os.path.exists(UPLOAD_FOLDER):os.makedirs(UPLOAD_FOLDER)
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER@app.route('/')
def index():return render_template('upload.html')@app.route('/upload', methods=['POST'])
def upload_file():if 'file' not in request.files:flash('No file part')return redirect(request.url)file = request.files['file']if file.filename == '':flash('No selected file')return redirect(request.url)if file:filepath = os.path.join(app.config['UPLOAD_FOLDER'], file.filename)file.save(filepath)return redirect(url_for('analyze', filename=file.filename))return redirect(request.url)@app.route('/analyze/<filename>')
def analyze(filename):filepath = os.path.join(app.config['UPLOAD_FOLDER'], filename)df = pd.read_csv(filepath)# 数据分析num_movies = len(df)avg_rating = df['rating'].mean()top_movies = df.nlargest(10, 'rating')[['title', 'rating']]return render_template('analysis.html', num_movies=num_movies, avg_rating=avg_rating, top_movies=top_movies)if __name__ == '__main__':app.run(debug=True)
2. 创建模板文件

templates目录中创建以下模板文件:

upload.html

<!-- templates/upload.html -->
<!DOCTYPE html>
<html>
<head><title>Upload Movie Data</title><link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='style.css') }}">
</head>
<body><h1>Upload Movie Data</h1><form action="{{ url_for('upload_file') }}" method="post" enctype="multipart/form-data"><label for="file">Choose CSV file:</label><input type="file" id="file" name="file"><button type="submit">Upload</button></form>{% with messages = get_flashed_messages() %}{% if messages %}<ul>{% for message in messages %}<li>{{ message }}</li>{% endfor %}</ul>{% endif %}{% endwith %}
</body>
</html>

analysis.html

<!-- templates/analysis.html -->
<!DOCTYPE html>
<html>
<head><title>Movie Data Analysis</title><link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='style.css') }}">
</head>
<body><h1>Movie Data Analysis</h1><p>Number of Movies: {{ num_movies }}</p><p>Average Rating: {{ avg_rating }}</p><h2>Top 10 Movies</h2><table><tr><th>Title</th><th>Rating</th></tr>{% for movie in top_movies.itertuples() %}<tr><td>{{ movie.title }}</td><td>{{ movie.rating }}</td></tr>{% endfor %}</table><a href="{{ url_for('index') }}">Upload another file</a>
</body>
</html>
3. 创建静态文件

static目录中创建style.css文件:

/* static/style.css */
body {font-family: Arial, sans-serif;background-color: #f0f0f0;margin: 0;padding: 0;
}
h1, h2 {color: #333;
}
form {margin-top: 20px;
}
form label {display: block;margin-bottom: 5px;
}
form input[type="file"] {margin-bottom: 10px;
}
form button {padding: 5px 10px;background-color: #0066cc;color: white;border: none;cursor: pointer;
}
form button:hover {background-color: #004080;
}
table {width: 100%;border-collapse: collapse;margin-top: 20px;
}
table, th, td {border: 1px solid #ddd;
}
th, td {padding: 10px;text-align: left;
}
th {background-color: #f2f2f2;
}
4. 运行应用

将上面的代码保存到相应的文件中,然后运行app.py

python app.py

访问以下URL:

  • http://127.0.0.1:5000/:显示上传页面
  • 上传一个包含电影数据的CSV文件,文件应包含至少两列:title(电影标题)和rating(评分)
  • 上传后,将自动跳转到分析页面,显示电影数据分析结果

这个项目展示了如何构建一个简单的Web应用,用户可以上传数据文件,应用将分析数据并展示结果。通过这个案例,你可以深入理解和掌握Flask和Pandas的结合使用,以及如何构建一个实用的Web应用。继续加油,学习Python会越来越有趣和有用!

http://www.lryc.cn/news/415749.html

相关文章:

  • uniapp 多渠道打包实现方案
  • 请你学习:前端布局3 - 浮动 float
  • PyCharm 2024.1 总结和最新变化
  • RGB红绿灯——Arduino
  • 浅谈用二分和三分法解决问题(c++)
  • Cocos Creator2D游戏开发(9)-飞机大战(7)-爆炸效果
  • 终于有人把华为认证全部说清楚了
  • 【知识】pytorch中的pinned memory和pageable memory
  • 【系统架构设计】数据库系统(五)
  • 如何对人工智能系统进行测试|要点,方法及流程
  • CVE-2023-37569~文件上传【春秋云境靶场渗透】
  • MySQL简介 数据库管理与表管理
  • PHP 函数性能优化的技巧是什么?
  • 小程序支付(前端)
  • 开发一个自己的VSCode插件
  • Milvus 向量数据库进阶系列丨构建 RAG 多租户/多用户系统 (上)
  • 前缀和(更新中)
  • 记录一次单例模式乱用带来的危害。
  • 外卖项目day14(day11)---数据统计
  • 养猫科普!牙口不好的猫咪怎么选粮?好吃易消化主食罐推荐
  • 力扣刷题之3143.正方形中的最多点数
  • 【更新2022】省级经济高质量发展指标体系测度 含代码 2000-2022
  • 缓冲流练习
  • 自己履行很多的话语,依旧按照这个方式进行生活
  • 交通预测数据文件梳理:METR-LA
  • 按钮类控件
  • opencascade AIS_ViewController源码学习 视图控制、包含鼠标事件等
  • 拉削基础知识——拉床的类型及特点
  • docker-compose笔记
  • C# 自定义控件无法加载