用Python分析了30000+《独行月球》影评数据,看看观众们怎么说~

news2024/12/22 19:03:49

文章目录

  • 🏳️‍🌈 1. 导入模块
  • 🏳️‍🌈 2. Pandas数据处理
    • 2.1 读取数据
    • 2.2 数据大小
    • 2.3 查看索引、数据类型和内存信息
  • 🏳️‍🌈 3. Pyecharts数据可视化
    • 3.1 《独行月球》评分分布-1
    • 3.2 《独行月球》评分分布-2
    • 3.3 每日评论量
    • 3.4 每小时评论量
    • 3.5 一周每天每时评论量
    • 3.6 地理位置分布
    • 3.7 评论词云
  • 🏳️‍🌈 4. 在线运行地址

大家好,我是 👉 【Python当打之年(点击跳转)】

本期我们利用Python分析 30000+条电影影评数据,分析一下由沈腾、马丽主演的《独行月球》这部电影观影情况,看看大家对这部国产灾难电影都有哪些看法,希望对小伙伴们有所帮助,如有疑问或者需要改进的地方可以私信小编。

涉及到的库:

  • Pandas — 数据处理
  • Pyecharts — 数据可视化
  • Matplotlib — 数据可视化

可视化部分:

  • 折线图 — Line
  • 散点图 — Scatter
  • 楔形图 — Wedge
  • 多边形 — Polygon
  • 词云图 — WordCloud
  • 地图 — Geo

🏳️‍🌈 1. 导入模块

import jieba
import stylecloud
import pandas as pd
from PIL import Image
from collections import Counter
from pyecharts.charts import Geo
from pyecharts.charts import Scatter
from pyecharts.charts import Line
from pyecharts import options as opts
from pyecharts.commons.utils import JsCode
from pyecharts.globals import ChartType
import math
import matplotlib
import matplotlib.pyplot as plt
from matplotlib.patches import Wedge, Polygon
from matplotlib.offsetbox import TextArea, AnnotationBbox
plt.rcParams['font.sans-serif']=['Microsoft YaHei']
plt.rcParams['axes.unicode_minus']=False

🏳️‍🌈 2. Pandas数据处理

2.1 读取数据

df = pd.read_excel('独行月球.xlsx')
df.head(10)

在这里插入图片描述

2.2 数据大小

df.shape()
(34436, 6)

一共有34436条影评数据,数据时间分布2022-8-01至2021-08-07。

2.3 查看索引、数据类型和内存信息

df.info()

在这里插入图片描述

🏳️‍🌈 3. Pyecharts数据可视化

3.1 《独行月球》评分分布-1

def pic():
    df_star = df.groupby('评分')['评论'].count()
    count_sco = list(df_star.values)
    sum_count = sum(count_sco)
    data = [count_sco[0]/sum_count/2]
    for i in range(1,len(count_sco),2):
        rate = (count_sco[i] + count_sco[i+1])/sum_count
        data.append(rate/2)
    series = pd.Series(data)
    label = ['5分力荐', '4分推荐','3分还行','2分较差','1分很差','0分极差']
    colors = ['#009688','#26A69A','#4DB6AC','#80CBC4','#B2DFDB','#E0F2F1'][::-1]
    rate_lable = [f'{i*2:.2%}' for i in data]
    fig = plt.figure(figsize=(10,7),dpi = 100,facecolor='#FFEFD5')
    ax=plt.subplot(111,facecolor='#FFEFD5', alpha=.01)
    
    patches,l_text = ax.pie(
        series,
        colors = colors,
        wedgeprops = dict(width = 0.4),
        startangle = 0,
        textprops = dict(fontsize = 15),
        normalize = False
    )
    # 数据标签
    ax.text(-0.45, 0.6, rate_lable[5], fontsize = 18,rotation = 298)
    ax.text(0.53, 0.36, rate_lable[4], fontsize = 17,rotation = 35)
    ax.text(0.64, 0.20, rate_lable[3], fontsize = 16,rotation = 21)
    ax.text(0.7, 0.048, rate_lable[1], fontsize = 14,rotation = 5)
    
    semicircle=Wedge((0,0),1.05,0,180, edgecolor = 'grey', facecolor = 'None', linestyle='--')
    ax.add_artist(semicircle)
    plt.axis('equal')
    semicircle=Wedge((0,0),0.55,0,180, edgecolor = 'grey', facecolor = 'None', linestyle='-')
    ax.add_artist(semicircle)
    plt.axis('equal')

    x = [-1.05,1.05]
    y = [0,0]
    plt.plot(x, y,color="#FFEFD5",alpha=1)
    plt.plot(x, y,color="#FFEFD5",alpha=1)

    plt.text(-0.43, 0.25, '《独行月球》评分分布', fontsize = 20, color = "r"),
    plt.text(-0.32, 0.4, '(制作@公众号:Python当打之年)', color = "#283593", fontsize = 10,alpha = 0.8),
    plt.legend(patches, label[::-1], loc=0, ncol = 6, fontsize = 11,
               bbox_to_anchor=(0.92, 0.15),handlelength=1, handleheight=1) 

在这里插入图片描述

  • 5.0的评分占比达到了74.77%,多半数观众打出了五星好评,三星以上好评更是达到了93%之多,大家对这部电影的整体评价还是很高的。

3.2 《独行月球》评分分布-2

复古版海报:
在这里插入图片描述

3.3 每日评论量

line1 = (
    Line(init_opts=opts.InitOpts(bg_color=JsCode(color_js)))
    .add_xaxis(xaxis_data=day_x_data)
    .add_yaxis(
        series_name="",
        y_axis=day_y_data,
        is_smooth=True,
        is_symbol_show=True,
        symbol="circle",
        symbol_size=6,
        linestyle_opts=opts.LineStyleOpts(color="#fff"),
        label_opts=opts.LabelOpts(is_show=True, position="top", color="white"),
        itemstyle_opts=opts.ItemStyleOpts(
            color="red", border_color="#fff", border_width=3
        ),
        tooltip_opts=opts.TooltipOpts(is_show=False),
    )
    .set_global_opts(
        title_opts=opts.TitleOpts(
            title="每日评论量",
            pos_top="5%",
            pos_left="center",
            title_textstyle_opts=opts.TextStyleOpts(color="#fff", font_family='FZYaoTi', font_size=16),
        ),
        xaxis_opts=opts.AxisOpts(
            type_="category",
            boundary_gap=True,
            axislabel_opts=opts.LabelOpts(margin=30, color="#ffffff63"),
            axisline_opts=opts.AxisLineOpts(is_show=False),
        ),
        yaxis_opts=opts.AxisOpts(
            type_="value",
            position="left",
            axislabel_opts=opts.LabelOpts(margin=20, color="#ffffff63"),
            axisline_opts=opts.AxisLineOpts(
                linestyle_opts=opts.LineStyleOpts(width=2, color="#fff")
            ),
        ),
        legend_opts=opts.LegendOpts(is_show=False),
    )
)

在这里插入图片描述

3.4 每小时评论量

在这里插入图片描述

3.5 一周每天每时评论量

single_axis, titles = [], []
scatter = Scatter(init_opts=opts.InitOpts(width='1000px', height='800px', theme='light',bg_color='#0d0735'))
for idx, day in enumerate(weeks[::-1]):
    scatter.add_xaxis(xaxis_data=hours)
    single_axis.append({'left': 100,
                        'nameGap': 20,
                        'nameLocation': 'start',
                        'type': 'category',
                        'boundaryGap': False,
                        'data': hours,
                        'top': '{}%'.format(idx * 100 / 7 + 5),
                        'height': '{}%'.format(100 / 7 - 10),
                        'gridIndex': idx,
                        'axisLabel': {'interval': 2,'color':'#9FC131'},
                        })
    titles.append(dict(text=day,top='{}%'.format(idx * 100 / 7 + 6), left='2%',
                       textStyle=dict(color='#fff200', font_family='FZYaoTi')))
    scatter.add_yaxis('',
                    y_axis=[int(item[2]) for item in allinfo if item[0] == 7-idx],
                    symbol_size=JsCode('function(p) { return p[1] * 0.15;}'),
                    label_opts=opts.LabelOpts(is_show=False),
                    )
scatter.set_global_opts(
    xaxis_opts=opts.AxisOpts(is_show=False),
    yaxis_opts=opts.AxisOpts(is_show=False),
    title_opts=titles,
)

在这里插入图片描述

  • 从小时分布来看,高峰时间段为21:00-24:00,中午12:00也偶尔出现一波小高峰。

3.6 地理位置分布

geo = (
    Geo(init_opts=opts.InitOpts(width="1000px", height="600px", bg_color="#0d0735"))
    .add_schema(maptype="china")
    .add("评论数量", data,type_=ChartType.HEATMAP,)
    .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
    .set_global_opts(
       title_opts=opts.TitleOpts(title="地理位置分布",pos_top="2%", pos_left="center",
                                 title_textstyle_opts=opts.TextStyleOpts(color="#fff", font_family='FZYaoTi',font_size=16)),
       legend_opts=opts.LegendOpts(is_show=False),
       visualmap_opts=opts.VisualMapOpts(
            is_show=True,
            is_piecewise=True,
            min_ = 0,
            max_ = 50,
            split_number = 5,
            series_index=0,
            pos_bottom='5%',
            pos_left='5%',
            textstyle_opts=opts.TextStyleOpts(color="#fff"),
            ),
    )
)

在这里插入图片描述

3.7 评论词云

stylecloud.gen_stylecloud(
text=’ ‘.join(content_list),
font_path=r’STXINWEI.TTF’,
palette=‘cartocolors.diverging.TealRose_2’,
icon_name=‘fas fa-moon’, # 设置蒙版方案
output_name=‘独行月球.png’,
background_color=‘#FFEFD5’,
)
在这里插入图片描述

🏳️‍🌈 4. 在线运行地址

在线运行地址(含源码+数据):见评论区-置顶评论


以上就是本期为大家整理的全部内容了,赶快练习起来吧,原创不易,喜欢的朋友可以点赞、收藏也可以分享注明出处)让更多人知道。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/51486.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

TypeScript学习笔记

TypeScript学习笔记 TypeScript 与 JavaScript 的区别 TypeScript 是 JavaScript 的超集,扩展了 JavaScript 的语法。TypeScript 可处理已有的 JavaScript 代码,并只对其中的 TypeScript 代码进行编译。TypeScript 文件的后缀名 .ts (.ts&am…

Milvus的索引方式

索引方式: FLAT:准确率高, 适合数据量小 暴力求解相似。 IVF-FLAT:量化操作, 准确率和速度的平衡 IVF:inverted file 先对空间的点进行聚类,查询时先比较聚类中心距离,再找到最近的N个点。 IV…

redis5.0集群搭建(两台服务器)

文章目录1. 前言2. 配置两台机器内网互联3. redis安装4. redis集群5.0之前和5.0之后版本的区别4.1 redis5.0之前的版本创建集群4.2 redis5.0之后的版本创建集群4.3 redis5.0之前的版本需要依赖ruby环境5. redis5.0集群搭建5.1 创建redis-cluster目录5.2 将之前的redis.conf拷贝…

windbg使用教程

下载 https://learn.microsoft.com/en-us/windows-hardware/drivers/debugger/debugger-download-tools 安装,打开exe 我选择了下载 打开X64 Debuggers And Tools-x64_en-us.msi 要安装对应系统位数 不然打不开 安装完成后没有反应。还以为我弄错了呢&#…

【学习笔记】深度学习入门:基于Python的理论与实现-神经网络的学习

CONTENTS四、神经网络的学习4.1 从数据中学习4.2 Loss function4.3 数值微分4.4 梯度4.5 学习算法的实现四、神经网络的学习 4.1 从数据中学习 神经网络的特征就是可以从数据中学习。所谓“从数据中学习”,是指可以由数据自动决定权重参数的值。利用特征量和机器学…

HBase 开发:使用Java操作HBase 第1关:创建表

为了完成本关任务,你需要掌握:1.如何使用Java连接HBase数据库,2.如何使用Java代码在HBase中创建表。 如何使用Java连接HBase数据库 Java连接HBase需要两个类: HBaseConfigurationConnectionFactoryHBaseConfiguration 要连接HBase…

SPARKSQL3.0-Spark兼容多版本Hive源码分析

一、前言 阅读本节需要先掌握Catalog基础知识 Spark对Hive的所有操作都是通过获取Hive元数据[metastore]帮助spark构建表信息从而调用HDFS-API对原始数据的操作,可以说Spark兼容多版本Hive就是在兼容Hive的Metastore 二、源码分析 在catalog一节中我们知道spark…

二.maven常用功能点

maven常用功能点一:分模块开发设计二:聚合三:继承1.依赖的继承2.可继承的内容3.聚合与继承的区分四:属性1.自定义属性2.内置属性3.Setting属性4.java系统属性5.环境变量属性五:java配置文件引用pom属性六:多…

基于PHP+MySQL大学生心理健康管理系统的设计与实现

随着时代的发展,大学生的数量与日预增但是相对的也出现了很多心理问题,大学生自杀等心理问题引起的问题屡见不鲜如何能过更好的培养大学生正确的心理健康问题是现在很多大学多面临的一个重要的问题。本系统主要是对共享自行车的信息进行管理。该系统的基本功能包括用户登录,用户…

云小课|云小课带你玩转可视化分析ELB日志

阅识风云是华为云信息大咖,擅长将复杂信息多元化呈现,其出品的一张图(云图说)、深入浅出的博文(云小课)或短视频(云视厅)总有一款能让您快速上手华为云。更多精彩内容请单击此处。 云日志服务支持可视化查看日志,当ELB日志接入云日志服务后&a…

[附源码]计算机毕业设计springboot青栞系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

野火FPGA进阶(3):SDRAM读写控制器的设计与验证

文章目录第50讲:SDRAM读写控制器的设计与验证理论部分设计与实现1. sdram_ctrlsdram_initsdram_a_refsdram_writesdram_readsdram_arbitsdram_ctrl2. sdram_topfifo_ctrlsdram_top3. uart_sdramuart_rxuart_txfifo_readuart_sdram第50讲:SDRAM读写控制器…

[附源码]JAVA毕业设计工程车辆动力电池管理系统(系统+LW)

[附源码]JAVA毕业设计工程车辆动力电池管理系统(系统LW) 目运行 环境项配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 …

怎么在Windows下使用Makefile文件

前言:如果熟悉在Linux开发的话,肯定知道Makefile文件的用处,它给我们带来很多的便利。在Linux系统下并不会像Windows那么多开发工具,在Windows下,只要在开发工具上点击一个按钮,就能将工程的所有源码进行编…

365天深度学习训练营-第P2周:彩色图片识别

目录 一、前言 二、我的环境 三、代码实现 1、数据下载以及可视化 2、CNN模型 3、训练结果可视化 4、随机图像预测 四、模型优化 1、CNN模型 2、VGG-16模型 3、Alexnet模型 4、Resnet模型 一、前言 >- **🍨 本文为[🔗365天深度学习训练营]…

2022年钒电池行业研究报告

第一章 行业概况 钒电池(Vanadium Redox Battery,缩写为VRB),全称为全钒氧化还原液流电池,是一种活性物质呈循环流动液态的氧化还原电池。钒电池可以作为大容量储能电站的电池,其工作原理如下:…

Unity 2021 请求 Android 12 读取本地文件权限

目标 工具: Unity 2021.2.14c1f1Android 12 系统手机 目标:实现Unity打出来的Apk包能请求读写android手机本地文件权限 原理 在Android系统中,操作手机中不安全的数据时,需要配置相应的权限,只有经过用户许可才能…

[附源码]JAVA毕业设计个人信息管理系统(系统+LW)

[附源码]JAVA毕业设计个人信息管理系统(系统LW) 目运行 环境项配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术…

深度学习-第三章概率与信息论

前言 概率论学科定义概率与信息论在人工智能领域的应用 3.1,为什么要使用概率论3.2,随机变量3.3,概率分布 3.3.1,离散型变量和概率质量函数3.3.2,连续型变量和概率密度分布函数 3.4,边缘概率3.5&#xff0c…

量子计算新突破!来源于150年前的思想实验

澳大利亚新南威尔士大学的研究表明,使用现代版本的“麦克斯韦妖”,可将量子比特重置为“0”态的错误减少了20倍。 Andrea Morello教授解释了麦克斯韦妖思想实验如何与他的团队通过仅选择冷电子进行量子计算的成就相类比。(图片来源&#xff1…