【數據可視化】一、分析歷年電影票房(數據讀取、過濾、分類、繪圖)
本次案例主要用到numpy,pandas和matplotlib。期中pandas中的groupby分組方法較為重要,matplotlib中可以對畫圖進行更詳細的設置,比如設置x、y軸刻度、折線寬度和樣式以及顏色等等。
如圖部分所示,這是一個關於對歷年電影的數據,期中包括電影名稱,年份、導演、票房收入等等。
(1)讀取文件、處理預設值
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())
(2)統計、分組
#查看票房收入統計 group_director= data.groupby('director_name')['gross'].sum()#根據director_name進行分組,然後求gross列的和 #print(group_director.head()) #排列 result = group_director.sort_values(ascending=False)#按照降序方法進行排列 print(result) #sort_values函數參數使用: #ascending 是否按指定列的數組升序排列,默認為True,即升序排列 #inplace 是否用排序後的數據集替換原來的數據,默認為False,即不替換
效果如下,途中可以看出票房收入最高的是「Steven Spielberg(史蒂文·斯皮爾伯格)」,總的票房輸入是4.114233e+09。
(3)
#電影產量年份圖 movie_year = data.groupby('title_year')['movie_title'].count() #計算每年的電影產量 #print(movie_year.index.tolist()) #print(movie_year.values.tolist()) #為x、y坐標賦值 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()
具體效果如下,