使用pandas做簡單的數據分析

需求: 對於這一組電影數據,如果我們希望統計電影分類(genre)的情況,應該如何處理數據?

電影數據的形式如下,我們需要統計出Genre列中出現的電影分類的情況,即每種分類出現了多少次
在這裏插入圖片描述
思路:重新構造一個全爲0的二維數組,列名爲分類,如果某一條數據中分類出現過,就讓0變爲1

1.先構造一個全0的數組,行代表每一部電影,有1000部;列代表1000部電影中所有包含的分類(不能重複)。

df = pd.read_csv("./data/Movie-Data.csv")

# 統計分類的列表
temp_list = df["Genre"].str.split(",").tolist()  # 當前list的結構[[],[],[]]
# 取出每個電影分類,放到set裏面(去重),再轉爲list
genre_list = list(set([i for j in temp_list for i in j]))

# 構造全爲0的數組
zeros_df = pd.DataFrame(np.zeros((df.shape[0], len(genre_list))), columns=genre_list)
print(zeros_df)

效果:
在這裏插入圖片描述
2.遍歷每部電影,將電影對應分類的位置置爲1

# 給每個電影出現分類的位置賦值1
for i in range(df.shape[0]):
    # 通過標籤索引行數據,此處實際操作了一行多列數據  參數二:是對應第i行電影的電影分類list
    zeros_df.loc[i, temp_list[i]] = 1

打印先三行的效果,注意中間數據過長沒有顯示全,而不是沒有效果
在這裏插入圖片描述

3.對上面這個賦值過的數組,在0軸方向求和
在這裏插入圖片描述
4.可視化展示
在這裏插入圖片描述

數據集在kaggle上可以免費下載,需要數據集可以留言

完整代碼:

import pandas as pd
import numpy as np

"""
對於這一組電影數據,如果我們希望統計電影分類(genre)的情況,應該如何處理數據?

思路:重新構造一個全爲0的二維數組,列名爲分類,如果某一條數據中分類出現過,就讓0變爲1

"""

df = pd.read_csv("./data/Movie-Data.csv")

# 統計分類的列表
temp_list = df["Genre"].str.split(",").tolist()  # 當前list的結構[[],[],[]]
# 取出每個電影分類,放到set裏面(去重),再轉爲list
genre_list = list(set([i for j in temp_list for i in j]))

# print(genre_list)

# 構造全爲0的數組
zeros_df = pd.DataFrame(np.zeros((df.shape[0], len(genre_list))), columns=genre_list)
# print(zeros_df)

# 給每個電影出現分類的位置賦值1
for i in range(df.shape[0]):
    # 通過標籤索引行數據,此處實際操作了一行多列數據  參數二:是對應第i行電影的電影分類list
    zeros_df.loc[i, temp_list[i]] = 1

# print(zeros_df.head(3))

# 統計每個分類的電影的數量和
genre_count = zeros_df.sum(axis=0)
print(genre_count)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章