關係網路圖表視覺化_Python資料預處理
阿新 • • 發佈:2018-12-12
本章內容: 用Python預處理豆瓣電影資料,並使用Gephi做關係網路圖表視覺化。
Python資料預處理
將資料中導演與演員的關係整理出來,得到導演與演員的關係資料,並統計合作次數。
import pandas as pd import warnings warnings.filterwarnings('ignore') # 不發出警告 # 讀取資料 import os os.chdir('C:/Users/HP/Desktop/') df = pd.read_excel('豆瓣電影資料.xlsx',sheetname=0,header=0) print('資料總共%i條' % len(df)) print('資料欄位為:\n',df.columns.tolist()) df.head() # 檢視資料 # 資料清洗 data = df[['name','導演','主演']] print(data.head(2)) # 檢視資料 data.dropna(inplace=True) # 刪除缺失值 data_yy = data['主演'].str.split('/ ', expand=True) col_len1 = len(data_yy.columns) data_yy.columns = ['yy'+str(i) for i in range(col_len1)] print(data_yy.head(2)) # 演員資料分列 data_dy = data['導演'].str.split('/ ', expand=True) col_len2 = len(data_dy.columns) data_dy.columns = ['dy'+str(i) for i in range(col_len2)] print(data_dy.head(2)) # 導演資料分列 data2 = data_dy.join(data_yy).join(data['name']) print(data2.head()) # 資料合併 # 資料拆分、合併 data_re = pd.DataFrame(columns=['name','導演','演員']) # 建立一個空的Dataframe col_yy = data_yy.columns col_dy = data_dy.columns # 提取演員、導演的列名 for dy in col_dy: for yy in col_yy: data_i = data2[['name',dy,yy]].dropna() # 提取資料 data_i.columns = ['name','導演','演員'] # 列名重新命名 data_re = pd.concat([data_re,data_i]) # 新增資料 print(data_re.head()) # 遍歷資料後,得到一個導演與演員的關係資料,並做去重處理 # 這裡index是有重複的,但作為過程資料可忽略 # 彙總統計導演和演員的合作次數 result = data_re.groupby(['導演','演員']).count() result.reset_index(inplace=True) # reset_index() → 將所有索引級別轉換為列 result.columns = ['導演','演員','合作次數'] print(result.head()) # 按照導演-演員進行計數統計,得到結果資料 writer = pd.ExcelWriter('output.xlsx') result.to_excel(writer,'sheet1') writer.save() # 存為excel # 注意:output.xlsx檔案不能是開啟狀態