案例1:統計Genre【類別】字段中單詞【電影所屬的類別】出現的次數
數據鏈接:https://pan.baidu.com/s/1tL7TSqgEcF3F6EpVvb51uQ
提取碼:5kj5
複製這段內容後打開百度網盤手機App,操作更方便哦
import pandas as pd
import numpy as np
from matplotlib import pyplot as plt
file_path = "C:\\Users\\Administrator\\Desktop\\IMDB-Movie-Data.csv"
df = pd.read_csv(file_path) # 讀取csv數據
# 1. 統計Genre字段
temp_list = df["Genre"].str.split(",").tolist() # [[],[],[]] 嵌套列表 [['Action', 'Adventure', 'Sci-Fi'], ['Adventure', 'Mystery', 'Sci-Fi']...]
genre_list = list(set([j for i in temp_list for j in i])) # 類別過濾 如柱狀圖下邊的單詞 舉個例子:若sb 這個單詞出現過100次,只統計一次
# 2. 構造全爲0的二維數組
zeros_df = pd.DataFrame(np.zeros((df.shape[0], len(genre_list))), columns=genre_list)
# 3. 給每個電影出現分類的位置賦值1
for i in range(df.shape[0]):
zeros_df.loc[i, temp_list[i]] = 1
# 4. 統計每個分類的電影的數量和
genre_count = zeros_df.sum(axis=0)
# 5. 將電影的數量和升序排序
genre_count = genre_count.sort_values()
# 6. 畫圖
_x = genre_count.index
_y = genre_count.values
plt.figure(figsize=(20, 8), dpi=80)
plt.bar(range(len(_x)), _y, width=0.4, color="orange")
plt.xticks(range(len(_x)), _x)
plt.show()
有關df的相關知識
# 獲得行索引信息
df.index
# 獲得列索引信息
df.columns
# 獲得df的size
df.shape
# 獲得df的行數
df.shape[0]
# 獲得df的列數
df.shape[1]
# 獲得df中的值
df.values
案例2:現在我們有2015到2017年25萬條911的緊急電話的數據,請統計出這些數據中不同類型的緊急情況的次數
數據鏈接:https://pan.baidu.com/s/13zY2GFzdHWolUHfyoNrogw
提取碼:ggyr
複製這段內容後打開百度網盤手機App,操作更方便哦
import pandas as pd
import numpy as np
file_path = "C:/Users/Administrator/Desktop/911.csv"
df = pd.read_csv(file_path)
temp_list = df["title"].str.split(": ").tolist()
cate_list = list(set([i[0] for i in temp_list])) # 去重後轉換爲列表['EMS', 'Traffic', 'Fire']
# 構造全爲0的數組
zeros_df = pd.DataFrame(np.zeros((df.shape[0], len(cate_list))), columns=cate_list)
for cate in cate_list:
zeros_df[cate][df["title"].str.contains(cate)] = 1
sum_ret = zeros_df.sum(axis=0)
print(sum_ret)