数据可视化—使用matplotlib分析历年电影产量和票房

      最近还有在学数据可视化相关知识,今天和大家分享一个案例来看下效果。

      如图部分所示,这是一个关于对历年电影的数据,期中包括电影名称,年份、导演、票房收入等等。那么我接下来要做的分为2部分:第一部分获取所有导演所导演的电影票房总的收入,并做个排名,这样就可以知道那些是真大佬。第二部分:分析历年的电影总量的走势并生成直方图。

     数据可视化—使用matplotlib分析历年电影产量和票房

     一、对导演导演的电影票房做比较,效果如下:

   

import numpy as np
import pandas as pd
from matplotlib import pyplot as plt
import matplotlib
 #读取数据
data = pd.read_csv('movie_metadata.csv')
print(data.head())#读取数据前五行
print(data.shape)#打印数据的形状
效果如图所示,可以看到第4行有出现一些空值,这对我们做*分析是不利的,接下来还需对数据中的空值做处理,清洗。:

#处理缺省值,把一些空值进行滤除
data = data.dropna(how = 'any')
print(data.head())                                                                                                                     

效果如图所示,通过该方法会把数据中的空值滤除,大家可以坐下对比:

数据可视化—使用matplotlib分析历年电影产量和票房

  接下来就是获取票房收入了,这里我们使用pandas中的grouby进行分组,

#查看票房收入统计
group_director= data.groupby('director_name')['gross'].sum()#根据director_name进行分组,然后求gross列的和
#print(group_director.head())
result = group_director.sort_values(ascending=False)#按照降序方法进行排列
print(result)

效果如下,途中可以看出票房收入最高的是“Steven Spielberg(史蒂文·斯皮尔伯格)”,总的票房输入是4.114233e+09,百度了下大概是4.114233*10^9。

数据可视化—使用matplotlib分析历年电影产量和票房

  二、电影产量年份图

#电影产量年份图
movie_year = data.groupby('title_year')['movie_title'].count() #计算每年的电影产量
#print(movie_year.index.tolist())
#print(movie_year.values.tolist())

x = (movie_year.index.tolist()) #把index索引值拿出来作为x轴,也就是年份,以列表形式输出。
y = movie_year.values.tolist()#把values值作为y轴,也就是每年的电影量的和。
#plt.xticks(range(len(x),10))
plt.figure(figsize=(20,8),dpi = 80) #设置画布大小为20,8,分析率为80.
my_font= matplotlib.font_manager.FontProperties(fname=r'C:\Windows\Fonts\simsun.ttc',size = 18)#设置字体
plt.xlabel('时间',fontproperties = my_font) #设置x轴标签
plt.ylabel('电影量',fontproperties = my_font)#设置y轴标签
plt.title('电影产量年份图',fontproperties = my_font,color = 'red')#设置标题名称
plt.plot(x,y)
plt.show()

具体效果如下,从图中可以看出电影在1990-2000年是一直增长的,相当于海贼王中的“大海贼时代”,近些年来电影产量成下滑趋势,具体什么原因就不得而知了。:

数据可视化—使用matplotlib分析历年电影产量和票房

  总结:本次案例主要用到numpy,pandas和matplotlib。期中pandas中的groupby分组方法较为重要,matplotlib中可以对画图进行更详细的设置,比如设置x、y轴刻度、折线宽度和样式以及颜色等等。在这里就不和各位一一絮叨了。还有明天一天国庆就结束了,祝大家玩得嗨皮,嘎嘎!