数据可视化—使用matplotlib分析历年电影产量和票房
最近还有在学数据可视化相关知识,今天和大家分享一个案例来看下效果。
如图部分所示,这是一个关于对历年电影的数据,期中包括电影名称,年份、导演、票房收入等等。那么我接下来要做的分为2部分:第一部分获取所有导演所导演的电影票房总的收入,并做个排名,这样就可以知道那些是真大佬。第二部分:分析历年的电影总量的走势并生成直方图。
一、对导演导演的电影票房做比较,效果如下:
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())
效果如图所示,通过该方法会把数据中的空值滤除,大家可以坐下对比:
接下来就是获取票房收入了,这里我们使用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。
二、电影产量年份图
#电影产量年份图 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年是一直增长的,相当于海贼王中的“大海贼时代”,近些年来电影产量成下滑趋势,具体什么原因就不得而知了。:
总结:本次案例主要用到numpy,pandas和matplotlib。期中pandas中的groupby分组方法较为重要,matplotlib中可以对画图进行更详细的设置,比如设置x、y轴刻度、折线宽度和样式以及颜色等等。在这里就不和各位一一絮叨了。还有明天一天国庆就结束了,祝大家玩得嗨皮,嘎嘎!