用数据告诉你如何查找每个机顶盒的偏好频道信息

import numpy as npimport pandas as pd

下列数据描述的是每个机顶盒观看各个电视频道的时长,通过这组原始数据,查找出每个机顶盒偏好的频道并进行排序,原始数据如下:

data

用数据告诉你如何查找每个机顶盒的偏好频道?

目标数据如下:偏好频道1到偏好频道4的排序依据是观看时长降序排列,也就是当前机顶盒观看偏好频道1的时长最长,观看偏好频道4的时长最短,如何才能在原始数据的基础上得到下列数据呢?

用数据告诉你如何查找每个机顶盒的偏好频道?

思路:实际上,上述两个图表之间的关系可以看成每个机顶盒设备号是一组,然后组内按照时长进行降序排序,排序后,时长列舍弃不要,把频道名称列转换成行即可,按照这个思路,我们一步一步实现。

第一步:按照机顶盒设备号分组,组内按照时长降序排序,这两步可以用一行代码实现,具体如下:

data.groupby(["机顶盒设备号"]).apply(lambda x :x.sort_values("时长",ascending=False))

</style>

机顶盒设备号

频道名称

时长

机顶盒设备号

10001

0

10001

东方卫视

1.764052

1

10001

翡翠台

0.400157

10002

3

10002

江苏卫视

2.240893

4

10002

珠江电影

1.867558

2

10002

浙江卫视

0.978738

5

10002

卡酷动画

0.977278

10003

6

10003

湖南卫视

0.950088

9

10003

广东卫视

0.410599

7

10003

中央5台

0.151357

8

10003

北京卫视

0.103219

10004

11

10004

江西卫视

1.454274

10

10004

福建卫视

0.144044

10005

12

10005

河北卫视

0.761038

14

10005

陕西卫视

0.443863

13

10005

河南卫视

0.121675

</div>

对上述代码进行简单解释,data.groupby(["机顶盒设备号"])表示对名字为data的数据集进行分组,分组的依据是"机顶盒设备号"这一列,默认把分组依据作为分组数据进行聚合后的行索引(可以通过as_index参数进行设置)。

接下来进行组内排序,对所有小组中的数据进行相同的操作可以通过apply方法实现,apply方法接收的参数是一个函数,目前的需求是组内排序,所以我们传入apply方法中的函数需要具有排序功能。

分组后的每一个小组都是一个小的dataframe,所以apply中接收的函数,得是能够为dataframe排序的函数才行。大家最先想到的可能就是dataframe支持的sort_values方法,但是需要注意的是sort_values是dataframe支持的方法,不是通用函数,不能直接作为参数传递给apply。

既然是对每个小的dataframe按照时长进行排序,我们可以借助匿名函数,匿名函数中的参数就是每个分组,即分组后的小dataframe,用这个小dataframe调用sort_values方法就可以了,注意填写上排序的依据–"时长",还有排序的方向ascending=False,降序排序。

以上,得到的结果好像没有什么问题,的确实现了组内排序,但是,有一个细节问题,就是索引,从下图可以看出,索引不是组内索引,我们还需要修改索引,即每一组的索引都是从0到n-1。如果不修改索引,每一组的索引都不一样的话,没有办法得到目标的结果(有兴趣的小伙伴可以不修改索引试验一下)。

用数据告诉你如何查找每个机顶盒的偏好频道?

其实修改组内索引这一步在刚才的代码里添加一个参数即可,在对dataframe进行排序的sort_values方法中,有一个参数ignore_index表示是否忽略原索引,忽略原索引即对组内索引进行重置,所以只需要添加这一个参数就可以了,具体代码及效果如下:

dff = data.groupby(["机顶盒设备号"]).apply(lambda x :x.sort_values("时长",ascending=False,ignore_index=True))
dff

用数据告诉你如何查找每个机顶盒的偏好频道?

第二步:到这一步,已经基本时实现了查找每个机顶盒的偏好频道,但是,这种形式看起来不太直观。

对于我们的目标来说,时长只在排序的时候有作用,所以,在这个表中,有用的只是索引列和频道名称,我们只需要把频道名称从列转换成行即可。这个转换用到的是unstack方法,即把列转换成行。

在转换的时候,不要整个数据集转换,有用的数据提取出来进行转换即可,有用的数据就是索引列和频道名称,提取出来的数据如下:

dff["频道名称"]

机顶盒设备号 10001 0 东方卫视 1 翡翠台10002 0 江苏卫视 1 珠江电影 2 浙江卫视 3 卡酷动画10003 0 湖南卫视 1 广东卫视 2 中央5台 3 北京卫视10004 0 江西卫视 1 福建卫视10005 0 河北卫视 1 陕西卫视 2 河南卫视Name: 频道名称, dtype: object

其中机顶盒设备号和rangeindex组成的多重索引,数据只有频道名称,运用unstack把频道名称转换成行数据,代码如下:

dff1 = dff["频道名称"].unstack()dff1

</style>

0

1

2

3

机顶盒设备号

10001

东方卫视

翡翠台

NaN

NaN

10002

江苏卫视

珠江电影

浙江卫视

卡酷动画

10003

湖南卫视

广东卫视

中央5台

北京卫视

10004

江西卫视

福建卫视

NaN

NaN

10005

河北卫视

陕西卫视

河南卫视

NaN

</div>

第三步:现在只需要按照要求修改列名即可,代码如下:

dff1.columns=["偏好频道1","偏好频道2","偏好频道3","偏好频道4"]dff1

</style>

偏好频道1

偏好频道2

偏好频道3

偏好频道4

机顶盒设备号

10001

东方卫视

翡翠台

NaN

NaN

10002

江苏卫视

珠江电影

浙江卫视

卡酷动画

10003

湖南卫视

广东卫视

中央5台

北京卫视

10004

江西卫视

福建卫视

NaN

NaN

10005

河北卫视

陕西卫视

河南卫视

NaN

</div>

这样就能直观的看出,每一个机顶盒的偏好频道了。

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:dandanxi6@qq.com

(0)
上一篇 2023年 7月 22日 下午12:00
下一篇 2023年 7月 22日 下午12:34

相关推荐

  • 微信支付付错了怎么追回

    大家平时使用微信支付的时候还是很多的。有时候错付或者是被骗了钱,那么这个钱能不能要回来呢?笔者就以自己亲身经历,来讲述一下。 曾经下载过一个“随手记”用来记录日常的消费的APP,看…

    2023年 3月 13日
  • 山东省初中信息技术考试试题

    山东省中小学信息技术等级考试复习重点 万能的右键,功能齐全的菜单,快捷的工具栏将助力你完成优秀的答卷!!! 三种方法:1、万能的右键 2、功能齐全的菜单 3、常用工具栏 两种状态:…

    互联网 2023年 1月 29日
  • 微信抢红包慢怎么解决(微信抢红包最小改变)

    先来一张图,见证奇迹的时刻, 可以说是秒抢,甚至不用点开红包 看到这里,大家应该不淡定了,曾经错过一个亿的你是不是觉得这就是一般的抢红包软件?NO NO NO ,目前一般软件市场能…

    2023年 5月 3日
  • 海外版抖音tiktok注册

    作为一个拥有全球用户的视频分享平台,TikTok已经成为很多用户日常娱乐生活的一部分。不过,对于一些国内用户来说,因为一些地区的限制或网络不稳定,他们可能无法顺畅地下载和观看Tik…

    2023年 8月 2日
  • 淘宝主图拍摄制作教程

    今天给大家说说淘宝主图视频从拍摄、制作、到上传等一些列的建议。希望对正在上传制作的主图视频的小伙些建议吧! 现在的主图视频,已经不仅仅只是主图视频这么简单了,他会直接影像搜索排名权…

    2023年 7月 12日
  • 关闭qq宠物的简单方法(怎么永久关闭qq宠物)

    【科技讯】2月1日消息,很多时候我们因为一时新鲜玩一个东西,但是随后不想玩了,比如QQ宠物,然而烦人的是QQ宠物是默认伴随QQ启动而开启的,那么我们该怎么关掉它呢? QQ宠物怎么删…

    2023年 8月 5日
  • 替换substitute的用法

    查找替换,是Excel中的常见操作,除了用命令完成之外,一些特殊情况下,还可以用函数完成,此函数就是Substitute,可以将指定数据中指定字符串的值替换为新值,此函数也因此而得…

    2022年 12月 29日
  • ps2023快捷键大全

    ps2023你更新了吗?比2022顺畅很多,我认为是在技术上提速了哦~ 最新2023版本配置要求,戳下面链接: PS2023来了,对电脑配置有什么要求?又增了哪些功能? Windo…

    2023年 4月 28日
  • 公交卡可以在线充值吗(青岛公交卡手机怎么充值)

    为了给广大乘客提供 更加便利的出行服务 近日,市公交集团通卡公司 推出线上充值服务等便民措施 真正做到方便于民 那么,怎样下载和充值呢? 市民可下载“蚌埠通卡APP”或者关注“蚌埠…

    2023年 7月 2日
  • tiktok国际版使用教程,tiktok国际版怎么换地址

    tiktok是当今全球最受欢迎的短视频平台之一,但您可能已经注意到,海外国际版的TikTok上有一些独特的内容和功能,这使得许多人渴望尝试并体验。本文将为您提供一个完整的教程,详细…

    互联网 2023年 6月 15日