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

2023-11-18

根据电影数据,使用pyecharts进行可视化分析。

数据介绍

import pandas as pd
data=pd.read_csv('./电影.csv')
data.head()

前5行数据如下:
在这里插入图片描述
需要安装的python库

pip install pandas
pip install pyecharts

数据清洗

查看缺失值

data.isnull().sum()

有部电影没有给出编剧和主演,因此没有爬取到,这不影响数据的分析及可视化。
在这里插入图片描述
之前数据介绍时可以看到,获取的数据各字段目前没有需要清洗的。这个环节就跳过吧。(想加个表情,没找到在哪加。)

数据可视化

上映年份及电影数量

Year=data['上映年份'].value_counts().reset_index()
Year.rename(columns={"index":"上映年份","上映年份":"电影数量"},inplace=True)
Year.head()

在这里插入图片描述
我是在jupyter notebook中运行的,如果你在其他编辑器中运行,更改代码最后一行bar.render_notebook()bar.render("xxx.html"),运行成功会生成一个xxx.html的文件,你打开应该就能看到可视化图表。后续代码同理。
导入pyecharts

from pyecharts.charts import Bar,Pie,Line
import pyecharts.options as opts
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())
bar.render_notebook()

在这里插入图片描述
这里我没设置显示全部Y轴标签,代码中给出了强制显示所有Y轴标签的注释。根据图表得出,2010年上映的电影数量最多,为14部电影。

导演及电影数量TOP10

Director=data['导演'].value_counts()[0:11].reset_index()
Director.rename(columns={"index":"导演","导演":"电影数量"},inplace=True)
Director.head()

在这里插入图片描述

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}"))
)
pie.render_notebook()

在这里插入图片描述
这个只取了TOP10的数据,如果你想取更多的数据,更改

Director=data['导演'].value_counts()[0:11].reset_index()

[0:10]表示从索引0取到索引9,你可以自己更改。

编剧及电影数量TOP10

Screenwriter=data['编剧'].value_counts()[0:11].reset_index()
Screenwriter.rename(columns={"index":"编剧","编剧":"电影数量"},inplace=True)
Screenwriter.head()

在这里插入图片描述

c = (
    Pie(init_opts=opts.InitOpts(theme='light'))
    .add(
        "",
        [list(z) for z in zip(Screenwriter['编剧'].to_list(), Screenwriter['电影数量'].to_list())],
        radius=["30%", "75%"],
        rosetype="radius",
        )
    .set_global_opts(
        title_opts=opts.TitleOpts(
            title="编剧及电影数量",
            subtitle='TOP10',
        ),
        
        legend_opts=opts.LegendOpts(
            pos_left="left",
            pos_top="center",
            orient='vertical',
            is_show=True,
        )
    )
)
c.render_notebook()

在这里插入图片描述

电影片长及数量

Film_length=data['片长'].value_counts().sort_index().reset_index()
Film_length.rename(columns={"index":"片长","片长":"电影数量"},inplace=True)
Film_length

在这里插入图片描述

c = (
    Bar()
    .add_xaxis(Film_length['片长'].to_list())
    .add_yaxis(
        "电影数量", Film_length['电影数量'].to_list(),
        label_opts=opts.LabelOpts(is_show=False),
              )
    .set_global_opts(title_opts=opts.TitleOpts(title="电影片长及数量"))
)
c.render_notebook()

在这里插入图片描述
电影的片长,这个最短45分钟,最长238分钟,主要集中在98-132分钟左右。我觉得电影的质量和它的时长是没有关系的,主要还是内容吧。

电影评分及数量

Douban_score=data['豆瓣评分'].value_counts().sort_index(ascending=False).reset_index()
Douban_score.rename(columns={"index":"豆瓣评分","豆瓣评分":"电影数量"},inplace=True)
Douban_score

在这里插入图片描述

    Line()
    .set_global_opts(
        title_opts=opts.TitleOpts(title="电影豆瓣评分及数量"),
        xaxis_opts=opts.AxisOpts(type_="category"),
        yaxis_opts=opts.AxisOpts(
            type_="value",
            axistick_opts=opts.AxisTickOpts(is_show=True),
            splitline_opts=opts.SplitLineOpts(is_show=True),
        ),
    )
    .add_xaxis(xaxis_data=Douban_score['豆瓣评分'])
    .add_yaxis(
        series_name="电影数量",
        y_axis=Douban_score['电影数量'],
        symbol="emptyCircle",
        is_symbol_show=True,
        label_opts=opts.LabelOpts(is_show=False),
        itemstyle_opts=opts.ItemStyleOpts(
            color="red"),
        markpoint_opts=opts.MarkPointOpts(
            data=[opts.MarkPointItem(type_="max",name="最大值")]
        )
    )
    
)
c.render_notebook()

在这里插入图片描述
可以看出豆瓣评分最多的分值是8.9分,总共41部电影得到了此分值。每个人的喜好不同,你觉得很好的电影,别人觉得或许没那么好。这也体现出一直保持在高评分电影的可贵。

本文先写到这里,后面我再更新吧,关于pyecharts的配置有很多,具体可以根据官网文档把图表更改成自己需要的样式。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

pyecharts实现电影数据分析可视化 的相关文章

随机推荐

  • angular Model 指令

    ng model指令用于绑定应用程序数据到HTML控制器 input select textarea 的值 可以将输入域的值域AngularJS创建的变量绑定 并且支持双向绑定 如下例子 div name div
  • elementUI使用el-upload上传文件写法总结及避坑,上传图片/视频到本地/服务器以及回显+删除

    Element Upload 上传 Element Upload官方文档 el upload 具体细节只看官方文档 本篇主要介绍避坑点和用法总结 注意点以及坑 本地上传想要回显图片视频 使用on success是没办法再在上传后获取到本地文
  • 20个简洁的 JS 代码片段

    20个简洁的 JS 代码片段 1 单行 If Else 语句 这是许多编程语言的共同特征 你可以使用三元运算符用一行代码编写整个语句 而不是在多行上编写 if else 例如 const age 12 let ageGroup LONG F
  • proteus8.9仿真闪退怎么解决?如何找到ProgramData?

    proteus8 9仿真闪退 将C Program Files x86 Labcenter Electronics Proteus 8 Professional 中MODELS文件夹复制到C ProgramData Labcenter El
  • 线性代数---之正交向量

    转载 百度百科 正交向量 编辑 本词条由 科普中国 百科科学词条编写与应用工作项目审核 正交向量 是一个数学术语 指点积为零的两个或多个向量 几何向量的概念在 线性代数中经由抽象化 得到更一般的向量概念 此处向量定义为 向量空间的元素 要注
  • 【计算机视觉

    文章目录 一 检测相关 11篇 1 1 Follow Anything Open set detection tracking and following in real time 1 2 YOLO MS Rethinking Multi
  • 【分治法】中位数问题和Gray码问题——武汉理工大学算法分析与设计课程实验

    i 中位数问题 问题描述 设X 0 n 1 和Y 0 n 1 为两个数组 每个数组中含有n个已排好序的数 找出X和Y的2n个数的中位数 编程任务 利用分治策略试设计一个O log n 时间的算法求出这2n个数的中位数 数据输入 由文件inp
  • sublime text添加install package报错 Package Control There are no packages available for installation

    sublime text在使用插件之前 需要安装Package Control插件 但在安装时报错 There are no packages available for installation 也就是说无法获取安装所需的包 首先确认网络
  • 基于java项目 服务器远程debug开启教程

    首先 在我们的工作中避免不了进行远程调试 我们可以通过远程debug的方式去调试我们的程序代码 通常我们的spring项目打成包的方式有jar 或者war包发布到我们的远程服务器上 我们先介绍第一种jar包方式开启远程debug 打成jar
  • JAVA 面向对象

    第五章 面向对象 面向对象技术利用对现实世界中对象的抽象和对象之间相互关联及相互作用的描述来对现实世界进行模拟 并且使其映射到目标系统中 其以基本对象模型为单位 将对象内部处理细节封装在模型内部 重视对象模块间的接口联系和对象与外部环境间的
  • 关于GRE over IPsec及IPsec over GRE

    GRE over IPsec IPsec over GRE IPSec Over GRE是先ipsec后gre 这种我没用过 GRE Over IPSec 是先gre后ipsec 也就是说ipsec是最后的承载方式 一般常用的就是这种 解决
  • 最详细的Python安装教程

    最详细的Python安装教程 一 进入Python官网首页 下载最新的Python版本 https www python org downloads 选择最新的Python3 10 5 下载64位的版本 二 下载完成后 进行安装 1 双击P
  • 数字图像处理(入门篇)六 图像数据预处理之坐标变化

    目录 1 平移 2 镜像 3 旋转 4 缩放 图像的坐标变换又称为图像的几何计算 常见的基本变换包括 平移 旋转 镜像和缩放等等 1 平移 1 代码 使用OpenCV仿射变换函数 cv2 warpAffine 实现平移操作 import n
  • 前端vue可以左右滚动的切换的tabs tabs选项卡 滑动动画效果 自动宽度

    随着技术的发展 开发的复杂度也越来越高 传统开发方式将一个系统做成了整块应用 经常出现的情况就是一个小小的改动或者一个小功能的增加可能会引起整体逻辑的修改 造成牵一发而动全身 通过组件化开发 可以有效实现单独开发 单独维护 而且他们之间可以
  • Feign原理 (图解)

    1 1 简介 Feign远程调用的 Feign远程调用 核心就是通过一系列的封装和处理 将以JAVA注解的方式定义的远程调用API接口 最终转换成HTTP的请求形式 然后将HTTP的请求的响应结果 解码成JAVA Bean 放回给调用者 F
  • namespace命令空间

    目录 1 解决什么问题 2 基本介绍 2 1 定义 2 2 应用场景 3 使用案例 4 资源配额 5 标签 5 1 定义 5 2 pod资源打标签 5 3 查看标签 1 解决什么问题 命令空间类似于C 中的命名空间 当用户数量较多的集群 才
  • 使用docker搭建jupyter notebook/jupyterlab

    说明 由于官方镜像实在是不怎么好用 所以我自己做了一个优化过的jupyter notebook的镜像 notebook hub 使用我这个镜像搭建容器非常简单 下面就基于这个notebook hub来进行搭建 关于notebook hub
  • hive 报system:java.io.tmpdir错误解决

    Exception in thread main java lang IllegalArgumentException java net URISyntaxException Relative path in absolute URI sy
  • 2. IDEA + maven + protobuf配置(on mac)

    1 絮絮叨叨 都说懒惰是人类进步的源泉 有时候想想还真就那么回事 学习了如何使用protoc命令编译 重度依赖IDEA且已经习惯了maven的我 就在想是否能在IDEA中一键编译 proto文件 2 vscode配置protobuf编辑环境
  • pyecharts实现电影数据分析可视化

    根据电影数据 使用pyecharts进行可视化分析 数据介绍 import pandas as pd data pd read csv 电影 csv data head 前5行数据如下 需要安装的python库 pip install pa