随着数据分析与可视化技术的快速发展,越来越多的开发者和数据分析师通过灵活的工具组合来处理和展示复杂的数据。在本文中,我们将基于 Python 中的 Flask
、ECharts
和 Pandas
库,构建一个豆瓣电影数据分析与可视化系统。
目标:
- 使用
Pandas
处理豆瓣电影数据集,进行分析和清洗。 - 利用
Flask
搭建一个简易的 Web 服务,展示分析结果。 - 使用
ECharts
进行数据可视化,提供图表展示。
一、技术栈简介
1.1 Flask
Flask 是一个轻量级的 Python Web 框架,适合于构建小型的 Web 应用。我们将使用 Flask 提供 Web 接口,并通过 HTML 页面展示数据和图表。
1.2 Pandas
Pandas 是 Python 中强大的数据分析库,可以高效地进行数据清洗、筛选、处理和分析。它支持各种格式的数据,包括 CSV、Excel、SQL 数据库等。
1.3 ECharts
ECharts 是一个基于 JavaScript 的开源图表库,提供了丰富的图表类型和交互功能,能够在 Web 页面中展示动态的可视化图表。在我们的项目中,使用 ECharts 来展示从 Pandas 分析得到的数据。
二、准备豆瓣电影数据集
首先,你需要获取豆瓣电影的数据集。假设我们使用豆瓣电影的 API 或从其他途径(如爬虫)获取电影信息。以下是一个包含电影名称、评分、上映年份、类型等字段的简化数据集:
电影名称,评分,上映年份,类型
肖申克的救赎,9.7,1994,剧情
霸王别姬,9.6,1993,剧情
这个杀手不太冷,9.4,1994,动作
千与千寻,9.3,2001,动画
西虹市首富,7.0,2018,喜剧
我们假设该数据已经保存为 movies.csv
文件。
三、构建 Flask Web 应用
3.1 安装依赖
首先,我们需要安装相关的 Python 库。打开终端并运行以下命令:
pip install flask pandas pyecharts
3.2 创建 Flask 项目结构
创建一个简单的 Flask 项目结构:
movie_analysis/
│
├── app.py # Flask 主应用文件
├── templates/ # 存放 HTML 文件
│ └── index.html # 首页模板
├── static/ # 存放静态文件,如 CSS、JS
│ └── style.css # 样式文件
├── movies.csv # 豆瓣电影数据集
└── requirements.txt # 项目依赖
3.3 Flask 应用逻辑
在 app.py
文件中,我们会加载数据,处理分析,并将数据传递给前端页面进行展示。
from flask import Flask, render_template
import pandas as pd
from pyecharts import options as opts
from pyecharts.charts import Bar, Pie
app = Flask(__name__)
# 加载豆瓣电影数据
def load_data():
df = pd.read_csv('movies.csv')
return df
# 电影类型统计图
def genre_pie_chart(df):
genre_counts = df['类型'].value_counts().to_dict()
pie = (
Pie()
.add("", [list(z) for z in zip(genre_counts.index, genre_counts.values)])
.set_global_opts(title_opts=opts.TitleOpts(title="电影类型分布"))
.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {d}%"))
)
return pie
# 评分与年份的柱状图
def rating_bar_chart(df):
rating_by_year = df.groupby('上映年份')['评分'].mean().sort_index()
bar = (
Bar()
.add_xaxis(rating_by_year.index.astype(str).tolist())
.add_yaxis("评分", rating_by_year.tolist())
.set_global_opts(title_opts=opts.TitleOpts(title="每年电影平均评分"))
)
return bar
@app.route('/')
def index():
df = load_data()
# 创建图表
genre_pie = genre_pie_chart(df)
rating_bar = rating_bar_chart(df)
# 渲染模板,并将图表转化为 HTML
return render_template('index.html',
genre_pie=genre_pie.render_embed(),
rating_bar=rating_bar.render_embed())
if __name__ == '__main__':
app.run(debug=True)
3.4 模板:index.html
index.html
文件将用于展示图表。我们将在模板中插入 ECharts 的 HTML 代码。
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>豆瓣电影数据分析</title>
<link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}">
</head>
<body>
<div class="container">
<h1>豆瓣电影数据分析与可视化</h1>
<div id="genre_pie" style="width: 80%; height: 400px;"></div>
<div id="rating_bar" style="width: 80%; height: 400px;"></div>
<!-- ECharts 渲染 -->
{{ genre_pie | safe }}
{{ rating_bar | safe }}
</div>
<script src="https://cdn.jsdelivr.net/npm/echarts@5.2.2/dist/echarts.min.js"></script>
</body>
</html>
3.5 样式文件:style.css
你可以根据需要调整样式,下面是一个简单的样式文件:
body {
font-family: Arial, sans-serif;
background-color: #f4f4f4;
padding: 20px;
}
.container {
width: 80%;
margin: auto;
background-color: white;
padding: 20px;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
}
h1 {
text-align: center;
margin-bottom: 20px;
}
四、运行应用
- 在终端中进入
movie_analysis
文件夹。 - 运行 Flask 应用:
python app.py
- 打开浏览器,访问
http://127.0.0.1:5000/
,你应该能看到展示豆瓣电影数据分析结果的页面。
五、总结
在本文中,我们构建了一个基于 Python 的豆瓣电影数据分析及可视化系统。使用了 Flask 作为 Web 框架,Pandas 进行数据处理和分析,ECharts 实现了漂亮的可视化图表。通过这种方式,你可以快速搭建一个数据分析和展示平台,不仅适用于电影数据分析,也可以应用到其他类型的数据分析任务。
未来,可以进一步扩展此项目,例如:
- 增加用户输入参数,支持动态分析(如按年份、类型筛选)。
- 使用数据库(如 MySQL 或 SQLite)存储数据,支持更大规模的分析。
- 提供更多的交互性功能,如数据导出、详细统计报告等。
这个项目不仅能帮助你更好地理解数据分析和可视化的流程,还能深入掌握 Flask、Pandas 和 ECharts 等技术的应用。