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. 相关性分析数据可视化

相关推荐
cui_ruicheng1 小时前
Python从入门到实战(十六):多进程编程
开发语言·python
_Jimmy_3 小时前
FastAPI + SQLAlchemy全局事务管理
python·fastapi
用户8356290780513 小时前
如何使用 Python 在 Excel 中添加、编辑和删除超链接
后端·python
AC赳赳老秦5 小时前
企业工商公开信息采集分析:OpenClaw 批量查询企业工商信息,生成企业画像报告
大数据·开发语言·python·自动化·php·deepseek·openclaw
FoldWinCard6 小时前
D6 Python 基础语法 --- 保留关键字
开发语言·python
暮暮祈安6 小时前
Celery 新手入门指南
java·数据库·python·flask·httpx
JustNow_Man6 小时前
每日高频场景英文口语
python
风吹心凉7 小时前
python3基础2026.7.22
开发语言·python
知识分享小能手7 小时前
统计学学习教程,从入门到精通,分类数据分析 — 知识点详解(14)
学习·分类·数据分析
小猴子爱上树8 小时前
一站式解决图片视频翻译难题的高效AI工具
人工智能·python·音视频