最近一直在做项目搞科研,很久没更新了,今天分享一个在实习中遇到的数据分析实战项目吧。公司当时整理的一个爱优腾等平台的2016年-2024年所有上线的电视剧数据,数据大概长这样:
我想得到哪些演员是最有投资价值的,给企业带来投资决策。我当时想到的就是用复杂网络进行KOL识别。我发现主要演员这一列将演员们用’/'进行连接,可以据此来构建演员合作网络进行分析。
- 数据预处理
由于不同平台的数据在不同的Excel中,需要先合并再去重
import pandas as pd
import numpy as np
excel_path = r"xxx平台电视剧.xlsx"
# 使用pandas的ExcelFile来读取整个Excel文件
xls = pd.ExcelFile(excel_path)
# 初始化一个空的DataFrame,用于存放合并后的数据
combined_df = pd.DataFrame()
# 遍历Excel文件中的所有sheet
def readsheet(xls,combined_df):
for sheet_name in xls.sheet_names:
# 读取每个sheet到DataFrame
df = pd.read_excel(xls, sheet_name=sheet_name,skiprows=13)
# 添加一列,标识数据来源(sheet名)
df['年份'] = sheet_name
# 合并DataFrame
# 如果combined_df是空的,则直接赋值;否则使用concat
if combined_df.empty:
combined_df = df
else:
combined_df = pd.concat([combined_df, df], ignore_index=True)
return combined_df
combined_df=readsheet(xls,combined_df)
xls1 = pd.ExcelFile(r"xxx平台电视剧.xlsx")
xls2 = pd.ExcelFile(r"xxx平台电视剧.xlsx")
xls3 = pd.ExcelFile(r"xxx平台电视剧.xlsx")
combined_df=readsheet(xls1,combined_df)
combined_df=readsheet(xls2,combined_df)
combined_df=readsheet(xls3,combined_df)
combined_df = combined_df.drop_duplicates(subset='剧名', keep='first')
#CSDN:清洄KAKA 原创
去重是因为有些电视剧是多平台同时播出的,可以查看这些重复的是哪些电视剧:
duplicated_titles = combined_df[combined_df.duplicated(subset='剧名', keep=False)] #查看所有重复剧名的行,发现多平台同播
- 构建复杂网络
使用networkx库构建复杂网络,节点是演员,边代表合作关系