数据处理
import pandas as pd
user_level = pd.read_excel('user_level.xlsx')
import os
excel_list = []
for item in os.listdir('./'):
if 'xlsx' in item and 'user_level' not in item:
excel_list.append(item)
excel_list
danmu = pd.DataFrame()
for item in excel_list:
excel = pd.read_excel(item, converters={'uid': str, 'id': str})
excel['视频标题'] = item
danmu = pd.concat([danmu, excel],axis=0)
danmu
时间
事件处理
from datetime import datetime
#将时间具体化
danmu['弹幕创建时间'] = danmu['ctime'].map(datetime.fromtimestamp)
danmu['年'] = danmu['弹幕创建时间'].map(lambda x: x.year)
danmu['月份'] = danmu['弹幕创建时间'].map(lambda x: x.month)
danmu['星期'] = danmu['弹幕创建时间'].map(datetime.isoweekday)
danmu['小时'] = danmu['弹幕创建时间'].map(lambda x: x.hour)
danmu
时间分析
#正常的显示中文
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']
月份
danmu_year = danmu[danmu['年']==2022]
danmu_year
danmu_year.groupby('月份')[['id']].count().plot()
#nuique只会算一次不会算重复的值
danmu_year.groupby('月份')[['uid']].nunique().plot()
星期
danmu_year.groupby('星期')[['id']].count().plot()
danmu_year.groupby('星期')[['uid']].nunique().plot()
import pygwalker as pyg
pyg.walk(danmu_year)
用户画像
danmu
用户处理
danmu['用户弹幕数'] = danmu.groupby('uid')['id'].transform('count')
danmu
user_level['uid'] = user_level['uid'].astype(str)
danmu_level = pd.merge(danmu, user_level, on='uid', how='inner')
danmu_level
弹幕内容
danmu_level.groupby('uid')[['id']].count().sort_values('id', ascending=False)
pd.set_option('display.max_rows', 300)
danmu_level[danmu_level['uid']=='6653485828143602809']
danmu_level[danmu_level['uid']=='6812827409839048297']
等级分布
danmu_level.groupby('level')[['id']].count().plot(kind='bar')
danmu_level.groupby('level')[['uid']].nunique().plot(kind='bar')
视频内容
视频内容处理
danmu
from time import strftime
from time import gmtime
danmu['progress'] = danmu['progress']/1000
danmu
danmu['视频进度'] = danmu['progress'].map(lambda x: strftime('%H:%M:%S', gmtime(x)))
#gtime计算弹幕在视频的那个时间
danmu
danmu['视频进度【时分】'] = danmu['视频进度'].str[:5]
danmu
视频内容分析
P1、系统认识数据分析
p1 = danmu[danmu['视频标题']=='1、系统认识数据分析.xlsx']
p1.groupby('视频进度【时分】')[['id']].count().sort_values('id', ascending=False)
p1[p1['视频进度【时分】']=='00:11']
p2、excel基础操作
p2 = danmu[danmu['视频标题']=='2、EXCEL基础操作.xlsx']
p2.groupby('视频进度【时分】')[['id']].count().sort_values('id', ascending=False)
p3、tableau数据可视化
p3 = danmu[danmu['视频标题']=='3、Tableau数据可视化.xlsx']
p3.groupby('视频进度【时分】')[['id']].count().sort_values('id', ascending=False)