ind=[re.search('星期一',str(i)) !=None for i in media3['星期']] workday=media3.loc[[ind[i]==False for i in range(len(ind))],:] 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 plt.xlabel('观看用户(排序后)') plt.ylabel('观看时长(小时)') plt.title('周末用户观看总时长') plt.subplot(221) ax2=sns.barplot(x=m2.index,y=m2.iloc[:,1]) plt.show() 以上代码怎么修改才可以将每个星期一的前十位的收视频道的观看时长比较,并将横向的3-4个周一进行比较。
时间: 2023-08-11 09:06:07 浏览: 126
indiefail:删除前在Indie.fail上显示的内容的副本
可以按照以下步骤进行修改:
1. 首先筛选出所有星期一的数据,并按照观看时长从大到小排序:
```
monday = media3[media3['星期'] == '星期一']
monday_top10 = monday.nlargest(10, 'wat_time')
```
2. 然后将星期一的数据按照日期分组,并计算每个日期的观看总时长:
```
monday_grouped = monday.groupby('日期')['wat_time'].sum().reset_index()
```
3. 将星期一的数据按照日期排序,并筛选出需要比较的日期:
```
monday_dates = monday_grouped['日期'].sort_values()[2:4]
monday_top10_dates = monday_top10[monday_top10['日期'].isin(monday_dates)]
```
4. 最后使用 seaborn 库的 barplot 函数进行绘图:
```
import seaborn as sns
sns.barplot(x='日期', y='wat_time', hue='收视频道', data=monday_top10_dates)
```
完整代码如下:
```
import seaborn as sns
monday = media3[media3['星期'] == '星期一']
monday_top10 = monday.nlargest(10, 'wat_time')
monday_grouped = monday.groupby('日期')['wat_time'].sum().reset_index()
monday_dates = monday_grouped['日期'].sort_values()[2:4]
monday_top10_dates = monday_top10[monday_top10['日期'].isin(monday_dates)]
sns.barplot(x='日期', y='wat_time', hue='收视频道', data=monday_top10_dates)
```
阅读全文