1. 程式人生 > 實用技巧 >資料分析案例-----------分析電影資料

資料分析案例-----------分析電影資料

需求

現在我們有一組從2006年到2016年1000部最流行的電影資料

資料來源:https://www.kaggle.com/damianpanek/sunday-eda/data

  • 問題1:我們想知道這些電影資料中評分的平均分,導演的人數等資訊,我們應該怎麼獲取?
  • 問題2:對於這一組電影資料,如果我們想rating,runtime的分佈情況,應該如何呈現資料?
  • 問題3:對於這一組電影資料,如果我們希望統計電影分類(genre)的情況,應該如何處理資料?

工具

  • python3.8
  • jupyter notebook

實現

導包

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

讀取資料

movies = pd.read_csv("./IMDB-Movie-Data.csv")

1、獲取平均分直接呼叫mean()函式。獲得導演數量:需要先把導演資料提取,然後去重,最後通過shape[0]獲取 (不懂shape函式可以看我numpy陣列屬性那)

### 獲取平均分
movies["Rating"].mean()
### 獲取導演人數
np.unique(movies["Director"]).shape[0]

2、呈現資料用的是matplotlib,如果用pandas繪圖,間隔會體現不出來,如下圖

matplotlib畫圖三步驟:

  • 建立畫布
  • 繪製圖像
  • 顯示影象

Rating的分佈情況

## Rating的分佈情況
## 用 plt畫圖

## 1、建立畫布
plt.figure(figsize=(20,8),dpi=100)

## 2、繪製圖像
plt.hist(movies["Rating"], bins=20)

## 2.1 新增x刻度

x_max = movies["Rating"].max()
x_min = movies["Rating"].min()

t1 = np.linspace(x_min,x_max,21)

plt.xticks(t1)

## 2.2新增網格
plt.grid()

## 3、顯示
plt.show()

同理Runtime (Minutes)的分佈情況

## Runtime (Minutes)的分佈情況

## 1、建立畫布
    
plt.figure(figsize=(20,8),dpi=100)
    
## 2、繪製圖像

plt.hist(movies["Runtime (Minutes)"],bins=20)
    
    ## 2.1、新增x軸刻度
    
x_max = movies["Runtime (Minutes)"].max()
x_min = movies["Runtime (Minutes)"].min()
    ## 生成20個區間,需要21個數字
t = np.linspace(x_min,x_max,num=21)
plt.xticks(t)
    ## 2.2、新增網格
plt.grid()
## 3、顯示影象
plt.show()

3、統計電影分類情況

3.1 每個電影有多種型別,先把個電影型別提取出來,然後進行分割,放到一個列表,將列表進行去重得到所有電影型別。

3.2 生成一個一電影個數為行,電影型別數為列的全0矩陣,最後再將矩陣轉換成DataFrame,並以電影型別為列

3.3 for迴圈遍歷,通過索引操作將對應電影型別變為1

3.1程式碼

## 用列表生成式
temp_list = [i.split(",") for i in movies["Genre"]]
type_list = np.unique([i for j in temp_list for i in j])

3.2程式碼

zeros = np.zeros([movies.shape[0],type_list.shape[0]])
temp_movie = pd.DataFrame(data=zeros,columns=type_list)

3.3程式碼

for i in range(1000):
    temp_movie.loc[i,temp_list[i]] = 1
## 按降序排序
genre = temp_movie.sum().sort_values(ascending=False)
## 畫圖
genre.plot(kind="bar",figsize=(20,8),fontsize=20,colormap="cool")

結尾

上述案例是對numpy、matplotlib、pandas的使用案例。也是對自己學的知識的一個總結