1. 程式人生 > >關係網路圖表視覺化_Python資料預處理

關係網路圖表視覺化_Python資料預處理

本章內容: 用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檔案不能是開啟狀態

Gephi做關係網路圖表視覺化。