以下代码怎么修改才可以将每个星期一的前十位的收视频道的观看时长比较,并将横向的3-4个周一进行比较。ind=[re.search('星期六|星期日',str(i)) !=None for i in media3['星期']] freeday=media3.loc[ind,:] workday=media3.loc[[ind[i]==False for i in range(len(ind))],:] m1=pd.DataFrame(freeday['wat_time'].groupby([freeday['phone_no']]).sum()) m1=m1.sort_values(['wat_time']) m1=m1.reset_index() m1['wat_time']=m1['wat_time']/3600 m2=pd.DataFrame(workday['wat_time'].groupby([workday['phone_no']]).sum()) m2=m1.sort_values(['wat_time']) m2=m1.reset_index() m2['wat_time']=m1['wat_time']/3600 w=sum(m2['wat_time'])/5 f=sum(m2['wat_time'])/2 plt.figure(figsize=(8,8)) plt.subplot(211) colors='lightgreen','lightcoral' plt.pie([w,f],labels=['工作日','周末'],colors=colors,shadow=True, autopct='%1.1f%%',pctdistance=1.23) plt.title('周末与工作日观看时长占比') plt.subplot(223) ax1=sns.barplot(x=m1.index,y=m1.iloc[:,1]) #设置坐标刻度 ax1.xaxis.set_major_locator(ticker.MultipleLocator(250)) ax1.xaxis.set_major_formatter(ticker.ScalarFormatter()) plt.xlabel('观看用户(排序后)') plt.ylabel('观看时长(小时)') plt.title('周末用户观看总时长') plt.subplot(224) ax2=sns.barplot(x=m2.index,y=m2.iloc[:,1]) #设置坐标刻度 ax2.xaxis.set_major_locator(ticker.MultipleLocator(250)) ax2.xaxis.set_major_formatter(ticker.ScalarFormatter()) plt.xlabel('观看用户(排序后)') plt.ylabel('观看时长(小时)') plt.title('工作日用户观看总时长') plt.show()
时间: 2023-08-11 19:06:28 浏览: 152
首先,需要修改代码来筛选出每个星期一的数据。可以使用以下代码:
```
mondays = media3.loc[media3['星期'] == '星期一'].sort_values('wat_time', ascending=False).head(10)
```
然后,需要将这些数据与其他两个星期一的数据进行比较。可以使用以下代码:
```
# 筛选出前三个星期一的数据
monday1 = media3.loc[media3['日期'] == '2021-01-04']
monday2 = media3.loc[media3['日期'] == '2021-01-11']
monday3 = media3.loc[media3['日期'] == '2021-01-18']
# 合并三个星期一的数据
mondays = pd.concat([monday1, monday2, monday3])
# 筛选出前十个视频道的观看时长
top10 = mondays.groupby(['视频名称'])['wat_time'].sum().sort_values(ascending=False).head(10)
# 绘制比较图表
plt.figure(figsize=(8,8))
sns.barplot(x=top10.index, y=top10.values)
plt.title('前十个视频道在三个星期一的观看时长比较')
plt.show()
```
这段代码会根据日期筛选出三个星期一的数据,并将它们合并起来。然后,它会计算出前十个视频道的观看时长,并绘制出比较图表。
阅读全文