Python分析最近大火的网剧《隐秘的角落》

Python分析最近大火的网剧《隐秘的角落》

概述

《隐秘的角落》是近年来备受关注的一部电视剧,它讲述了一个围绕着学生堕胎事件的故事,大火的程度让人不得不去思考这是如何做到的。本文将使用Python分析这部剧,并进行数据可视化展示,帮助我们了解这部剧的受欢迎程度和相关情况。

数据来源

本文的数据来源于微博,我们可以通过爬虫获取相关的数据,为了更好地展示数据的分布情况,我们选择使用百度地图API来展示地理分布情况。

分析步骤

步骤一:获取数据

在这个步骤中,我们需要使用Python的爬虫技术获取数据。具体的代码实现可以参考以下的示例:

import requests
import json

def get_weibo_data(keyword):
    url = 'https://m.weibo.cn/api/container/getIndex?'
    headers = {
        'referer': 'https://m.weibo.cn/search/',
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36',
        'x-requested-with': 'XMLHttpRequest'
    }
    params = {
        'type': 'all',
        'queryVal': keyword,
        'featurecode': '20000320',
        'luicode': '20000174',
        'lfid': '106003type=1',
        'title': keyword,
        'containerid': f'100103type=1&q={keyword}',
        'page_type': 'searchall'
    }
    response = requests.get(url=url, headers=headers, params=params)
    if response.status_code == 200:
        data = json.loads(response.text)
        return data
    else:
        print(f'获取{keyword}的数据失败')

步骤二:数据清洗与预处理

在获取到原始数据后,我们需要进行数据清洗和预处理,以便后续的数据分析和可视化展示。具体的代码实现可以参考以下的示例:

import pandas as pd
from datetime import datetime

def clean_weibo_data(keyword):
    data = get_weibo_data(keyword)
    statuses = data['data']['cards'][1]['card_group']
    df = pd.json_normalize(statuses)
    df = df[['text', 'created_at', 'user.screen_name', 'user.description', 'user.followers_count', 'user.gender', 'user.province', 'user.city', 'user.geo_enabled', 'user.verified']]
    df.columns = ['content', 'created_at', 'user_name', 'user_description', 'followers_count', 'gender', 'province', 'city', 'geo_enabled', 'verified']
    df['created_at'] = pd.to_datetime(df['created_at'], format='%a %b %d %H:%M:%S %z %Y')
    df['date'] = df['created_at'].apply(lambda x: x.date())
    df['time'] = df['created_at'].apply(lambda x: x.time())
    df['hour'] = df['created_at'].apply(lambda x: x.hour)
    df.loc[df['province']=='', 'province'] = None
    df.loc[df['city']=='', 'city'] = None
    return df

步骤三:数据分析

在这一步骤中,我们将对清洗和预处理后的数据进行分析。具体的代码实现可以参考以下示例:

分析受欢迎程度

import matplotlib.pyplot as plt

def analyse_popularity(df):
    verified = df['verified'].value_counts()
    plt.figure(figsize=(6,4), dpi=120)
    plt.bar(verified.index, verified.values)
    plt.title('Verified User')
    plt.xlabel('Verified')
    plt.ylabel('Counts')
    plt.show()

分析地理分布

import urllib
from pyecharts.charts import Map
from pyecharts import options as opts

def analyse_location(df):
    location = df[['province', 'city', 'geo_enabled']]
    location = location.drop_duplicates()
    location = location[location['geo_enabled']==True]
    location = location.groupby(['province', 'city']).count().reset_index()
    location['full_location'] = location['province'] + location['city']
    location['location'] = location['full_location'].apply(lambda x: urllib.parse.quote(x))

    map_data = []
    for index, row in location.iterrows():
        province, city, count, _, location = row.values
        map_data.append((location, count))

    map_chart = Map()
    map_chart.set_global_opts(
        title_opts=opts.TitleOpts(title='Location Distribution'),
        visualmap_opts=opts.VisualMapOpts(max_=1000),
    )
    map_chart.add('网友人数', map_data)
    map_chart.render_notebook()

结论

通过以上的步骤,我们可以对《隐秘的角落》这部剧进行Python分析,并进行数据可视化展示。在最终的分析结果中,我们发现这部剧的受欢迎程度非常高,有很多明星在微博上为其打call,同时分布范围也非常广泛,在全国各地都有很多网友在讨论。

本文仅是Python分析的入门级别,如有不足之处,还请大家指正和补充。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python分析最近大火的网剧《隐秘的角落》 - Python技术站

(0)
上一篇 2023年6月3日
下一篇 2023年6月3日

相关文章

  • 基于python SMTP实现自动发送邮件教程解析

    基于Python SMTP实现自动发送邮件教程解析 Python SMTP模块是Python标准库中的一个模块,用于发送邮件。它提供了一组简单而强大的API,用于连接SMTP服务器、构建邮件和发送邮件等。本文将详细介绍Python SMTP模块的用法,并提供两个示例。 连接SMTP服务器 在使用Python SMTP模块发送邮件之前,我们需要先连接SMTP服…

    python 2023年5月15日
    00
  • 对python-3-print重定向输出的几种方法总结

    下面我将详细讲解“对python-3-print重定向输出的几种方法总结”的完整攻略。 介绍 Python中的print语句是一个非常常用的打印信息的方法,但是当我们需要将打印信息输出到不同的地方时,print函数的工作方式就不能满足我们的需求了。这时候需要对python-3-print进行重定向输出。下面,我将对几种实现Python3 stdout的重定向…

    python 2023年6月3日
    00
  • Python 2.7.x 和 3.x 版本的重要区别小结

    下面是“Python 2.7.x 和 3.x 版本的重要区别小结”的完整攻略。 1. 简介 Python 3.x 和 Python 2.7.x 是两个不同的 Python 版本,它们在语法、特性、模块等方面存在着一些重要的区别。在这篇攻略中,我们将会简单介绍一下这些重要的区别。 2. 编码 在 Python 2.7.x 中,字符串被默认编码为 ASCII 码…

    python 2023年6月3日
    00
  • django2.2版本连接mysql数据库的方法

    下面是关于如何使用Django 2.2连接MySQL数据库的方法的详细攻略: 安装MySQL驱动程序 连接MySQL数据库需要使用MySQL驱动程序。可以使用PyMySQL或者MySQL-connector-python等常用的MySQL驱动。 可以通过以下命令来使用PyMySQL安装MySQL驱动: pip install pymysql 安装成功后,在D…

    python 2023年5月13日
    00
  • Python根据字典的值查询出对应的键的方法

    当我们使用Python中的字典数据结构时,如果我们要根据字典的值查询对应的键,该怎么做呢? 下面是几种方法: 方法一:遍历字典 遍历字典中的每一个键值对,然后逐个比较值是否相等,如果找到对应的值,则返回对应的键。这种方法比较繁琐,时间复杂度也比较高,但是适用于字典较小的情况。 例如,假设有以下字典: scores = {"Alice": …

    python 2023年5月13日
    00
  • python 协程并发数控制

    Python协程并发数控制攻略 本攻略将介绍如何使用Python协程并发数控制。我们将使用asyncio库来创建协程,使用Semaphore类来控制并发数。 创建协程 在开始之前,我们需要了解如何使用asyncio库创建协程。以下是一个示例代码,用于创建一个简单的协程: import asyncio async def my_coroutine(): pri…

    python 2023年5月15日
    00
  • python中split(), os.path.split()和os.path.splitext()的用法

    下面就来详细讲解一下“python中split(), os.path.split()和os.path.splitext()的用法”。 split()函数 split()函数是python内置的字符串方法之一,它的作用是将字符串拆分成一个列表,可以指定分隔符进行拆分。它有如下的语法: str.split([sep[, maxsplit]]) 其中,str代表要…

    python 2023年6月2日
    00
  • 详解如何使用Pytest进行自动化测试

    下面是详解如何使用Pytest进行自动化测试的完整攻略: 什么是Pytest? Pytest是一个Python的自动化测试框架。它可用于编写单元测试、功能测试、集成测试和端到端测试,具有比较好的可读性、可扩展性和易用性。 如何安装Pytest? 可以使用pip包管理器安装Pytest,如下所示: pip install pytest 如何编写测试用例? 创建…

    python 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部