电视剧网播量数据分析
解释一下Python中的三元运算
[on true] if [expression] else [on false]
如果表达式为True,就执行[on true]中的语句。否则,就执行[on false]中的语句
a,b=2,3
min=a if a<b else b
min
部分数据结构图
import numpy as np
import pandas as pd
from matplotlib import pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']
data=pd.read_excel('网播量.xlsx')
对数值进行空值处理
data1=data.dropna(axis=0)
将采集日期(-替换成/),点赞(去除逗号),差评(去除逗号),播放量(统一换算值,仅保留数字)进行数据预处理。
data1['采集日期']=data1['采集日期'].apply(lambda x:x.replace('/','-'))
data1['点赞']=data1['点赞'].apply(lambda x:str(x).replace(',',''))
data1['播放量']=data1['播放量'].apply(lambda x:float(x.replace('亿',''))*100000000 if '亿' in x else float(x.replace(',','').replace('万',''))*10000)
#lambda中三元判断,以万和以亿分开判断换算
data1
统计出播放量Top50的电影中,平均点赞量和平均差评量
4
data2=data1.sort_values('播放量',ascending=False)[:50] #换算后的数据进行排序
data2['差评']=data2['差评'].apply(lambda x:int(str(x).replace(',',''))) # 替换后的数字转成Int类型
data3=data2['差评'].mean()
print(data3)
data2['点赞']=data2['点赞'].apply(lambda x:int(str(x).replace(',','')))
data4=data2['点赞'].mean()
print(data4)
1009213.76
5413927.08
分析出国庆黄金周里播放的电视剧播放量,并绘出期间电视剧播放量前十的柱状图
import numpy as np
import pandas as pd
from matplotlib import pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']
data=pd.read_excel('网播量.xlsx')
data1=data.dropna(axis=0)
data1['播放量']=data1['播放量'].apply(lambda x:float(x.replace('亿',''))*100000000 if '亿' in x else float(x.replace(',','').replace('万',''))*10000)
data2=data1[data1['采集日期'].apply(lambda x:pd.to_datetime(x).month)==10] #先取出十月的数据
data2['采集日期']=data2['采集日期'].apply(lambda x:pd.to_datetime(x).day) #然后对取出的数据进行重新定义采集日期,定义为天
data3=data2[data2['采集日期'].isin(np.arange(1,8).tolist())] #取出天为1到7日的数据
data4=data3.groupby('剧名').sum() #对得到的数据进行分组求和
data5=data4.sort_values('播放量',ascending=False) #倒序排列以播放量
X=data5.index[:10] #定义X
Y=data5['播放量'].values[:10] #定义Y
plt.bar(X,Y) #柱状图
plt.xticks(np.arange(10),X,rotation=60) #设置X刻度线
plt.show()
按月份统计平均播放量和平均点赞数
import pandas as pd
from matplotlib import pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']
data=pd.read_excel('网播量.xlsx')
data1=data.dropna(axis=0)
data1['点赞']=data1['点赞'].apply(lambda x:int(str(x).replace(',','')))
data1['播放量']=data1['播放量'].apply(lambda x:float(x.replace('亿',''))*100000000 if '亿' in x else float(x.replace(',','').replace('万',''))*10000)
data1['采集日期']=data1['采集日期'].apply(lambda x:pd.to_datetime(x).month) #取月重新赋值给采集日期
data2=data1.groupby('采集日期').mean() #以采集日期分组求平均
data2
采集日期 播放量 点赞
9 2.369891e+08 226373.443619
10 2.514792e+08 245293.625600