最近還有在學數據可視化相關知識,今天和大家分享一個案例來看下效果。
如圖部分所示,這是一個關於對歷年電影的數據,期中包括電影名稱,年份、導演、票房收入等等。那麼我接下來要做的分爲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軸刻度、折線寬度和樣式以及顏色等等。在這裏就不和各位一一絮叨了。還有明天一天國慶就結束了,祝大家玩得嗨皮,嘎嘎!