数据分析案例-电影数据可视化分析

简介: 数据分析案例-电影数据可视化分析

数据介绍

数据为2011-2021电影数据

可视化分析

首先导入本次项目需要的包和数据

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from pyecharts.charts import Pie
from pyecharts import options as  opts 
from pyecharts.globals import ThemeType
sns.set_style('ticks')
import warnings
warnings.filterwarnings('ignore') # 忽略警告
plt.rcParams['font.sans-serif'] = ['SimHei'] #解决中文显示
plt.rcParams['axes.unicode_minus'] = False   #解决符号无法显示
data = pd.read_excel('data.xlsx')
data.head()


数据预处理

data.dropna(inplace=True)
data.reset_index(drop=True,inplace=True)
data.drop_duplicates(['电影名称'],inplace=True)
data['年份'] = data['上映时间'].apply(lambda x:x.split('-')[0])
# 将首周票房中的--数据删除
data[data['首周票房']=='--'].index
data.drop(index=data[data['首周票房']=='--'].index,inplace=True)
data.reset_index(drop=True,inplace=True)
# 将首周票房亿单位转化为万,且只保留数字
data['首周票房'] = data['首周票房'].apply(lambda x: float(x[:-1])*1000 if x[-1] == '亿' else float(x[:-1]))
# 将累计票房亿单位转化为万,且只保留数字
data['累计票房'] = data['累计票房'].apply(lambda x: float(x[:-1])*1000 if x[-1] == '亿' else float(x[:-1]))

可视化

# 分析各个年份的总票房
df1 = data.groupby('年份').sum()['累计票房']
plt.figure(figsize=(10,8))
plt.title('各个年份的总票房',fontsize=14)
plt.xlabel('年份',fontsize=14)
plt.ylabel('总票房(万元)',fontsize=14)
plt.bar(x=df1.index,height=df1.values)
plt.show()

# 分析各个年份的电影比例
result_list = [(i,j) for i,j in zip(df1.index.to_list(),df1.values.tolist())]
a = Pie(init_opts=opts.InitOpts(theme = ThemeType.DARK))
a.add(series_name='年份',
        data_pair=result_list,
        rosetype='radius',
        radius='70%',
        )
a.set_global_opts(title_opts=opts.TitleOpts(title="各个年份的电影比例",
                    pos_top=50))
a.set_series_opts(tooltip_opts=opts.TooltipOpts(trigger='item',formatter='{a} <br/>{b}:{c} ({d}%)'))
a.render_notebook()

# 分析各个年份的平均票价
df2 = data.groupby('年份').mean()['平均票价']
plt.figure(figsize=(10,8))
plt.title('各个年份的平均票价',fontsize=14)
plt.xlabel('年份',fontsize=14)
plt.ylabel('平均票价(元)',fontsize=14)
plt.plot(df2.index,df2.values)
plt.show()

# 分析电影片长的分布
sns.displot(data['片长'],bins=30,kde=True)

# 分析电影平均票价的分布
sns.displot(data['平均票价'],kde=True)

# 分析导演喜爱度的分布
sns.displot(data['导演喜爱度'],kde=True)

df3 = data['来源'].apply(lambda x:x.split(',')[0]).value_counts().head()
# 各个地区的电影比例
a1 = Pie(init_opts=opts.InitOpts(theme = ThemeType.CHALK))
a1.add(series_name='地区',
        data_pair=[list(z) for z in zip(df3.index.to_list(),df3.values.tolist())],
        rosetype='radius',
        radius='60%',
        )
a1.set_global_opts(title_opts=opts.TitleOpts(title="各个地区的电影比例",
                    pos_left='center',
                    pos_top=30))
a1.set_series_opts(tooltip_opts=opts.TooltipOpts(trigger='item',formatter='{a} <br/>{b}:{c} ({d}%)'))
a1.render_notebook()


# 分析拍电影数前五的发行公司
df4 = data['发行公司'].value_counts().head().plot(kind='barh')

# 分析片长和评分的关系
plt.figure(figsize=(10,8))
plt.scatter(data['片长'],data['评分'])
plt.title('片长和评分的关系',fontsize=15)
plt.xlabel('片长',fontsize=15)
plt.ylabel('评分',fontsize=15)
plt.show()

# 分析各个特征之间的相关系数
fig = plt.figure(figsize=(18,18))
sns.heatmap(data.corr(),vmax=1,annot=True,linewidths=0.5,cbar=False,cmap='YlGnBu',annot_kws={'fontsize':25})
plt.xticks(fontsize=20)
plt.yticks(fontsize=20)
plt.title('各个特征之间的相关系数',fontsize=20)
plt.show()


# 分析年度总票房走势
df1 = data.groupby('年份').sum()['累计票房']
plt.figure(figsize=(10,8))
plt.title('年度总票房走势',fontsize=14)
plt.xlabel('年份',fontsize=14)
plt.ylabel('总票房(万元)',fontsize=14)
plt.plot(df1.index,df1.values)
plt.show()

# 分析哪种制片制式最受欢迎
from pyecharts.charts import WordCloud
import collections
result_list = []
for i in data['制片制式'].values:
    word_list = str(i).split('/')
    for j in word_list:
        result_list.append(j)
result_list
word_counts = collections.Counter(result_list)
word_counts_top = word_counts.most_common(50)
print(word_counts_top)
wc = WordCloud()
wc.add('',word_counts_top)
wc.render_notebook()


# 分析各种制式制片的比例
a2 = Pie(init_opts=opts.InitOpts(theme = ThemeType.CHALK))
a2.add(series_name='类型',
        data_pair=word_counts_top,
        radius='60%',
        )
a2.set_global_opts(title_opts=opts.TitleOpts(title="各种制式制片的比例",
                    pos_top=50))
a2.set_series_opts(tooltip_opts=opts.TooltipOpts(trigger='item',formatter='{a} <br/>{b}:{c} ({d}%)'))
a2.render_notebook()

# 分析各种类型的电影出现的次数
from pyecharts.charts import WordCloud
import collections
result_list = []
for i in data['电影类型'].values:
    word_list = str(i).split(' / ')
    for j in word_list:
        result_list.append(j)
result_list
word_counts = collections.Counter(result_list)
# 词频统计:获取前100最高频的词
word_counts_top = word_counts.most_common(100)
print(word_counts_top)
wc = WordCloud()
wc.add('',word_counts_top)
wc.render_notebook()

# 分析各种类型电影的比例
word_counts_top = word_counts.most_common(10)
a3 = Pie(init_opts=opts.InitOpts(theme = ThemeType.MACARONS))
a3.add(series_name='类型',
        data_pair=word_counts_top,
        rosetype='radius',
        radius='60%',
        )
a3.set_global_opts(title_opts=opts.TitleOpts(title="各种类型电影的比例",
                        pos_left='center',
                    pos_top=50))
a3.set_series_opts(tooltip_opts=opts.TooltipOpts(trigger='item',formatter='{a} <br/>{b}:{c} ({d}%)'))
a3.render_notebook()





目录
相关文章
|
1月前
|
数据挖掘 UED
ChatGPT数据分析——探索性分析
ChatGPT数据分析——探索性分析
|
1月前
|
数据可视化 数据挖掘 数据处理
ChatGPT数据分析应用——热力图分析
ChatGPT数据分析应用——热力图分析
|
1月前
|
数据挖掘
ChatGPT在常用的数据分析方法中的应用(分组分析)
ChatGPT在常用的数据分析方法中的应用(分组分析)
|
1月前
|
机器学习/深度学习 数据采集 数据可视化
如何理解数据分析及数据的预处理,分析建模,可视化
如何理解数据分析及数据的预处理,分析建模,可视化
49 0
|
1月前
|
数据挖掘
ChatGPT在常用的数据分析方法中的应用(对比分析)
ChatGPT在常用的数据分析方法中的应用(对比分析)
|
3月前
|
数据采集 数据可视化 数据挖掘
数据分析大神养成记:Python+Pandas+Matplotlib助你飞跃!
在数字化时代,数据分析至关重要,而Python凭借其强大的数据处理能力和丰富的库支持,已成为该领域的首选工具。Python作为基石,提供简洁语法和全面功能,适用于从数据预处理到高级分析的各种任务。Pandas库则像是神兵利器,其DataFrame结构让表格型数据的处理变得简单高效,支持数据的增删改查及复杂变换。配合Matplotlib这一数据可视化的魔法棒,能以直观图表展现数据分析结果。掌握这三大神器,你也能成为数据分析领域的高手!
77 2
|
3月前
|
机器学习/深度学习 数据采集 数据可视化
基于爬虫和机器学习的招聘数据分析与可视化系统,python django框架,前端bootstrap,机器学习有八种带有可视化大屏和后台
本文介绍了一个基于Python Django框架和Bootstrap前端技术,集成了机器学习算法和数据可视化的招聘数据分析与可视化系统,该系统通过爬虫技术获取职位信息,并使用多种机器学习模型进行薪资预测、职位匹配和趋势分析,提供了一个直观的可视化大屏和后台管理系统,以优化招聘策略并提升决策质量。
169 4
|
3月前
|
机器学习/深度学习 算法 数据挖掘
2023 年第二届钉钉杯大学生大数据挑战赛初赛 初赛 A:智能手机用户监测数据分析 问题二分类与回归问题Python代码分析
本文介绍了2023年第二届钉钉杯大学生大数据挑战赛初赛A题的Python代码分析,涉及智能手机用户监测数据分析中的聚类分析和APP使用情况的分类与回归问题。
84 0
2023 年第二届钉钉杯大学生大数据挑战赛初赛 初赛 A:智能手机用户监测数据分析 问题二分类与回归问题Python代码分析
|
7天前
|
SQL 数据挖掘 Python
数据分析编程:SQL,Python or SPL?
数据分析编程用什么,SQL、python or SPL?话不多说,直接上代码,对比明显,明眼人一看就明了:本案例涵盖五个数据分析任务:1) 计算用户会话次数;2) 球员连续得分分析;3) 连续三天活跃用户数统计;4) 新用户次日留存率计算;5) 股价涨跌幅分析。每个任务基于相应数据表进行处理和计算。
|
1月前
|
机器学习/深度学习 数据采集 数据可视化
数据分析之旅:用Python探索世界
数据分析之旅:用Python探索世界
26 2