Django+pyecharts实现电影数据分析可视化

上篇文章pyecharts实现电影数据分析可视化已经实现了pyecharts可视化,这篇文章主要实现Django结合pyecharts做一个可视化的小网站/系统。
我是在Centos7虚拟机上用Sublime Text写的,你们随意即可。

创建python虚拟环境

我使用的是Python 3.6.8,只要你们不是Python2或者更老的版本,运行应该没什么问题。
进入到你存放python虚拟环境的目录,我的是/home/xwk/Desktop/python_vens

[xwk@forpython ~]$ cd Desktop/python_vens/
[xwk@forpython python_vens]$ pwd
/home/xwk/Desktop/python_vens
[xwk@forpython python_vens]$ python3 -V
Python 3.6.8

创建一个名为books的python虚拟环境

[xwk@forpython python_vens]$ python3 -m venv books

如果发现创建错了名称怎么办,我做的电影可视化,应该创建movies
如果你已经安装了pip库,不想一个一个重新安装的话,执行

导出已安装的pip库的名称及版本
pip freeze > requirements.txt

重新创建好虚拟环境后,根据导出的库的名称及版本重新安装
pip install -r requirements.txt

删除创建错的环境,直接删除books这个虚拟环境目录即可,注意别删错了。

[xwk@forpython python_vens]$ rm -rf books/

重新创建名为movies的虚拟环境

[xwk@forpython python_vens]$ python3 -m venv movies

进入虚拟环境

[xwk@forpython python_vens]$ cd movies/
[xwk@forpython movies]$ source ./bin/activate
(movies) [xwk@forpython movies]$ 

退出虚拟环境

(movies) [xwk@forpython movies]$ deactivate 
[xwk@forpython movies]$

这里只是演示,如何进入和退出虚拟环境,代码的运行需要进入虚拟环境。
重新进入虚拟环境

[xwk@forpython movies]$ source ./bin/activate
(movies) [xwk@forpython movies]$

安装所需python库

pip install django
pip install pyecharts
pip install pandas
pip install pymysql

pip应该会自动安装相关依赖包,查看安装的包

(movies) [xwk@forpython movies]$ pip list

在这里插入图片描述

不同版本库,代码可能会有差异,比如Django,如果你不是上述版本,代码如果有报错,可以自行搜索修改,这个不难,因为肯定不会只有你一个人遇到过类似的问题。

创建Django项目

进入到你存放python虚拟环境的目录,我的是/home/xwk/Desktop/python_projects

(movies) [xwk@forpython movies]$ cd /home/xwk/Desktop/python_projects
(movies) [xwk@forpython python_projects]$

创建一个名为movies的Django项目

django-admin startproject movies
(movies) [xwk@forpython python_projects]$ cd movies/
(movies) [xwk@forpython movies]$ ls
manage.py  movies

配置mysql数据库,你可以根据自己需求来
创建一个名为movies的数据库。本文主要使用pandas,mysql只是django需要,你们也可以把csv文件导入mysql,用sql语句做查询,万变不离其宗。

mysql> create database movies;
Query OK, 1 row affected (0.00 sec)
(movies) [xwk@forpython movies]$ pwd
/home/xwk/Desktop/python_projects/movies/movies
(movies) [xwk@forpython movies]$ ls
asgi.py  __init__.py  __pycache__  settings.py  urls.py  wsgi.py

配置该目录下的settings.py文件,更改DATABASES内容为:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'movies',
        'USER': 'root',
        'PASSWORD': 'root',
        'HOST': 'localhost',
        'PORT': '3306',
    }
}

向该目录下__init__.py添加

import pymysql
pymysql.install_as_MySQLdb()

创建Django应用

创建一个名为movies_pyecharts的Django应用程序
进入该目录下

(movies) [xwk@forpython movies]$ pwd
/home/xwk/Desktop/python_projects/movies
(movies) [xwk@forpython movies]$ ls
manage.py  movies
(movies) [xwk@forpython movies]$ python ./manage.py startapp movies_pyecharts
(movies) [xwk@forpython movies]$ cd movies
(movies) [xwk@forpython movies]$ ls
asgi.py  __init__.py  __pycache__  settings.py  urls.py  wsgi.py

编辑settings.py文件
向INSTALLED_APPS添加'movies_pyecharts',
在这里插入图片描述

(movies) [xwk@forpython movies]$ cd ../movies_pyecharts/
(movies) [xwk@forpython movies_pyecharts]$ ls
admin.py  __init__.py  models.py  tests.py
apps.py   migrations   templates  views.py

编辑(没有就新建)urls.py文件

from django.urls import path
from . import views

urlpatterns = [
    path('', views.index),
]
(movies) [xwk@forpython movies_pyecharts]$ cd ../movies
(movies) [xwk@forpython movies]$ ls
asgi.py  __init__.py  __pycache__  settings.py  urls.py  wsgi.py

编辑urls.py(注意目录的切换)

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('movies_pyecharts/', include('movies_pyecharts.urls')),
]

先在 movies_pyecharts 文件夹下新建 templates 文件夹
将 pyecharts 模板,位于 pyecharts.render.templates 具体位置参考(/home/xwk/Desktop/python_vens/movies/lib/python3.6/site-packages/pyecharts/render/templates

拷贝至刚新建的 templates 文件夹
把获取的数据文件也复制到movies_pyecharts文件夹下

第一个可视化页面

编辑movies_pyecharts/views.py

from jinja2 import Environment, FileSystemLoader
from pyecharts.globals import CurrentConfig
from django.http import HttpResponse
CurrentConfig.GLOBAL_ENV = Environment(loader=FileSystemLoader("./movies_pyecharts/templates"))
import pandas as pd
from pyecharts.charts import Bar,Pie,Line
import pyecharts.options as opts

data=pd.read_csv('./movies_pyecharts/电影.csv')

Year=data['上映年份'].value_counts().reset_index()
Year.rename(columns={"index":"上映年份","上映年份":"电影数量"},inplace=True)
def index(request):
	bar = (
	    Bar(init_opts=opts.InitOpts(height='700px', theme='light'))
	    .add_xaxis(
	        Year['上映年份'].tolist()[::-1])
	    .add_yaxis(
	            "电影数量",
	            Year['电影数量'].tolist()[::-1],
	            label_opts=opts.LabelOpts(is_show=False),
	        )
	    .set_series_opts(itemstyle_opts=opts.ItemStyleOpts(
	            border_color='#5C3719', ))
	    .set_global_opts(
	                title_opts=opts.TitleOpts(
	                    title='上映年份及电影数量',
	                    subtitle='截止2023年3月',
	                    title_textstyle_opts=opts.TextStyleOpts(
	                        font_family='Microsoft YaHei',
	                        font_weight='bold',
	                        font_size=22,
	                    ),
	                    pos_top='1%'),
	                legend_opts=opts.LegendOpts(is_show=True),
	                xaxis_opts=opts.AxisOpts(
	                    #             name='电影数量',
	                    is_show=True,
	                    max_=int(Year['电影数量'].max()),
	                    axislabel_opts=opts.LabelOpts(
	                        font_family='Microsoft YaHei',
	                        font_weight='bold',
	                        font_size='14'  #标签文本大小
	                    )),
	                yaxis_opts=opts.AxisOpts(
	                    #             name='上映年份',
	                    is_show=True,
	                    axislabel_opts=opts.LabelOpts(
	                        #interval=0,#强制显示所有y轴标签,需要可以加上
	                        font_family='Microsoft YaHei',
	                        font_weight='bold',
	                        font_size='14'  #标签文本大小
	                    )),
	                tooltip_opts=opts.TooltipOpts(
	                    is_show=True,
	                    trigger='axis',
	                    trigger_on='mousemove|clike',
	                    axis_pointer_type='shadow',
	                    ),
	                toolbox_opts=opts.ToolboxOpts(is_show=True,
	                    pos_left="right",
	                    pos_top="center",
	                    feature={"saveAsImage":{}}
	                    )
	    ).reversal_axis())
	return HttpResponse(bar.render_embed())

现在打开http://127.0.0.1:8000/movies_pyecharts/,就可以看到图表了!
在这里插入图片描述
这只是一个网页,我尝试增加网页。

增加更多可视化页面

编辑movies_pyecharts/urls.py

from django.urls import path
from . import views

urlpatterns = [
    path('', views.index,name='index'),
    path('director/',views.director,name='director'),
]

movies_pyecharts/views.py增加如下代码:

def director(request):
    Director = data['导演'].value_counts()[0:11].reset_index()
    Director.rename(columns={"index": "导演", "导演": "电影数量"}, inplace=True)
    pie = (
        Pie(init_opts=opts.InitOpts(theme='light'))
        .add(
            series_name='电影类型',
            data_pair=[list(z) for z in zip(
                Director['导演'].to_list(), Director['电影数量'].to_list())],
            radius=["40%", "75%"],
        )
        #     .set_colors(["blue", "green", "yellow", "red", "pink", "orange", "purple"])
        .set_global_opts(
            title_opts=opts.TitleOpts(
                title="导演及电影数量",
                subtitle='TOP10',
                title_textstyle_opts=opts.TextStyleOpts(
                    font_family='Microsoft YaHei',
                    font_weight='bold',
                    font_size=22,
                ),
            ),
            legend_opts=opts.LegendOpts(
                pos_left="left",
                pos_top="center",
                orient='vertical',
                is_show=True
            ),
            toolbox_opts=opts.ToolboxOpts(
                is_show=True,
                pos_left="right",
                pos_top="center",
                feature={"saveAsImage": {}}
            )
        )
        .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}"))
    )
    return HttpResponse(pie.render_embed())

打开http://127.0.0.1:8000/movies_pyecharts/director/
在这里插入图片描述
增加更多页面方法就是这样,我就不再增加了。

如果要更改网页标题
改类似如下代码

Bar(init_opts=opts.InitOpts(height='700px', theme='light',page_title ='上映年份及电影数量'))

更多配置参考pyecharts官网文档
Django的功能很强大,我做的这个可视化仅仅只是入门而已。

  • 1
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下是基于Pandas+Pyecharts的全国热门旅游景点数据分析系统的设计流程: 1. 数据收集:从公开数据源或者自己爬取数据,收集全国热门旅游景点的数据,包括景点名称、所在地区、评分、评论数等信息。 2. 数据清洗:使用Pandas对收集到的数据进行清洗处理,包括去重、缺失值处理、数据类型转换等操作,确保数据的准确性和完整性。 3. 数据分析:使用Pandas进行数据分析,包括统计每个地区的热门景点数量、平均评分、平均评论数等指标,并进行可视化展示。 4. 数据可视化:使用Pyecharts对分析结果进行可视化展示,包括地图、柱状图、饼图等,以便用户更直观地了解数据分析结果。 5. 系统设计:将数据分析可视化的功能整合到一个系统中,设计用户界面,用户可以在系统中选择地区、景点等条件,查看相应的数据分析可视化结果。 6. 系统实现:根据系统设计,使用Python编写代码实现系统功能,使用Flask或Django等框架实现后端API接口,使用HTML、CSS、JavaScript等技术实现前端用户界面。 7. 系统测试和上线:对系统进行全面测试,确保系统功能正常,数据分析可视化结果准确,用户界面友好。将系统部署到服务器上,上线运行,让用户访问和使用。 通过以上流程,就可以设计和实现一个基于Pandas+Pyecharts的全国热门旅游景点数据分析系统。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数据攻城小狮子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值