1905电影网中国地区电影数据分析(二) - 数据分析与可视化

文章目录

  • 前言
  • 一、数据分析
    • [1. 数据分析代码实现](#1. 数据分析代码实现)
    • [2. 分析后的数据截图](#2. 分析后的数据截图)
      • [2.1 描述性分析结果数据](#2.1 描述性分析结果数据)
      • [2.2 类别分布分析结果数据](#2.2 类别分布分析结果数据)
      • [2.3 模式识别分析结果数据](#2.3 模式识别分析结果数据)
      • [2.4 时间序列分析结果数据](#2.4 时间序列分析结果数据)
        • [2.4.1 每年的电影发布数量](#2.4.1 每年的电影发布数量)
        • [2.4.2 按年份的评分趋势](#2.4.2 按年份的评分趋势)
      • [2.5 相关性分析结果数据](#2.5 相关性分析结果数据)
  • 二、数据可视化
    • [1. 描述性分析数据可视化](#1. 描述性分析数据可视化)
    • [2. 类别分布分析数据可视化](#2. 类别分布分析数据可视化)
    • [3. 模式识别分析数据可视化](#3. 模式识别分析数据可视化)
    • [4. 时间序列分析数据可视化](#4. 时间序列分析数据可视化)
      • [4.1 每年的电影发布数量数据可视化](#4.1 每年的电影发布数量数据可视化)
      • [4.2 每年平均评分数据可视化](#4.2 每年平均评分数据可视化)
    • [5. 相关性分析数据可视化](#5. 相关性分析数据可视化)

前言

在数据科学的领域,数据分析和可视化是理解和解释数据的重要工具。通过对数据的深入分析,我们能够揭示潜在的趋势、模式和关系,从而为决策提供有力支持。本项目旨在对从1905电影网爬取的电影数据进行全面的数据分析与可视化,帮助我们更好地理解电影行业的动态和特征。

本项目的分析分为几个主要部分:描述性分析、类别分布分析、模式识别分析、时间序列分析和相关性分析。我们将使用Python的Pandas库进行数据处理,并通过SQLAlchemy将分析结果存储到MySQL数据库中。此外,数据可视化将通过图表和图形展示分析结果,使得数据的解读更加直观和易于理解。


一、数据分析

1. 数据分析代码实现

python 复制代码
import pandas as pd
from sqlalchemy import create_engine


def get_engine():
    # 设置数据库连接信息
    db_user = 'root'
    db_password = 'zxcvbq'
    db_host = '127.0.0.1'
    db_port = '3306'
    db_name = 'movie1905'

    # 创建数据库引擎
    return create_engine(f'mysql+pymysql://{db_user}:{db_password}@{db_host}:{db_port}/{db_name}')


def save_df_to_db(dataframe, table_name):
    # 设置数据库连接信息
    db_user = 'root'
    db_password = 'zxcvbq'
    db_host = '127.0.0.1'  # 或者你的数据库主机地址
    db_port = '3306'  # MySQL默认端口是3306
    db_name = 'movie1905'

    # 创建数据库引擎
    engine = create_engine(f'mysql+mysqlconnector://{db_user}:{db_password}@{db_host}:{db_port}/{db_name}')
    # 将df写入MySQL表
    dataframe.to_sql(name=table_name, con=engine, if_exists='replace', index=False)
    print("所有csv文件的数据已成功清洗并写入MySQL数据库")


def process_row(row, data_list):
    director = row['movie_director']
    actors = eval(row['movie_lead_actors'])
    for actor in actors:
        data_dict = {
            'director': director,
            'actor': actor
        }
        data_list.append(data_dict)


if __name__ == '__main__':
    # 加载数据到DataFrame
    query = "SELECT * FROM movie1905_china"
    df = pd.read_sql(query, get_engine())
    # 描述性分析
    df_describe = df[['movie_duration', 'movie_rating']].describe().round(2)
    save_df_to_db(df_describe.reset_index(), 'describe_analysis')
    # 类别分布分析
    df_category = df['movie_genres'].apply(lambda x: eval(x)).explode().value_counts()
    save_df_to_db(df_category.reset_index(), 'category_analysis')
    # 模式识别分析
    df_copy = df.copy()
    df_copy['movie_director'] = df_copy['movie_director'].replace('未知', None)
    df_copy.dropna(subset=['movie_director', 'movie_lead_actors'], inplace=True)
    df_mode = df_copy[['movie_director', 'movie_lead_actors']]
    director_actor_list = []
    df_mode.apply(lambda x: process_row(x, director_actor_list), axis=1)
    df_director_actor = pd.DataFrame(director_actor_list)
    df_schema = df_director_actor.groupby(['director', 'actor']).size().reset_index(name='count')
    save_df_to_db(df_schema, 'mode_analysis')
    # 时间序列分析
    # 每年的电影发布数量
    df_release_date = df.rename(columns={'movie_release_date': 'movie_release_year'})
    df_year = df_release_date['movie_release_year'].str[0:4].value_counts()
    save_df_to_db(df_year.reset_index(), 'year_amount_analysis')
    # 按年份的评分趋势
    df['movie_year'] = df['movie_release_date'].str[0:4]
    year_rating = df.groupby('movie_year')['movie_rating'].agg(['mean', 'count']).round(1)
    save_df_to_db(year_rating.reset_index(), 'year_rating_analysis')
    # 相关性分析
    df_corr = df[['movie_duration', 'movie_rating']].corr(method='pearson').round(2)
    save_df_to_db(df_corr.reset_index(), 'corr_analysis')

2. 分析后的数据截图

2.1 描述性分析结果数据

2.2 类别分布分析结果数据

2.3 模式识别分析结果数据

2.4 时间序列分析结果数据

2.4.1 每年的电影发布数量
2.4.2 按年份的评分趋势

2.5 相关性分析结果数据

二、数据可视化

1. 描述性分析数据可视化

2. 类别分布分析数据可视化


3. 模式识别分析数据可视化

4. 时间序列分析数据可视化

4.1 每年的电影发布数量数据可视化

4.2 每年平均评分数据可视化

5. 相关性分析数据可视化

相关推荐
搞不懂语言的程序员10 分钟前
装饰器模式详解
开发语言·python·装饰器模式
mosquito_lover115 分钟前
矿山边坡监测预警系统设计
人工智能·python·深度学习·神经网络·视觉检测
船长@Quant15 分钟前
PyTorch量化进阶教程:第二章 Transformer 理论详解
pytorch·python·深度学习·transformer·量化交易·sklearn·ta-lib
卑微小文34 分钟前
消费金融用户画像构建:代理 IP 整合多维度信息
爬虫·数据挖掘·数据分析
攻城狮7号1 小时前
【第一节】Python爬虫基础-HTTP基本原理
爬虫·python·python爬虫
IT乐手1 小时前
adb logcat 写文件乱码的解决方案
android·python
Python测试之道1 小时前
Deepseek API+Python 测试用例一键生成与导出 V1.0.6(加入分块策略,返回更完整可靠)
开发语言·python·测试用例
SRC_BLUE_171 小时前
Python GUI 编程 | QObject 控件基类详解 — 定时器
开发语言·数据库·python
啊阿狸不会拉杆1 小时前
第二十一章:Python-Plotly库实现数据动态可视化
开发语言·python·plotly
月走乂山1 小时前
nocobase + Python爬虫实现数据可视化
爬虫·python·低代码·信息可视化