28,Python数分之Pandas训练,力扣,614. 二级关注者

  • 学习:知识的初次邂逅
  • 复习:知识的温故知新
  • 练习:知识的实践应用


目录

一,原题力扣链接

二,题干

三,建表语句

四,分析

五,Pandas解答

六,验证

七,知识点总结


一,原题力扣链接

. - 力扣(LeetCode)

二,题干

表:Follow

+-------------+---------+
| Column Name | Type    |
+-------------+---------+
| followee    | varchar |
| follower    | varchar |
+-------------+---------+
(followee, follower) 是该表的主键(具有唯一值的列的组合)。
该表的每一行表示关注者关注了社交网络上的被关注者。
不会有用户关注他们自己。

二级关注者 是指满足以下条件的用户:

  • 关注至少一个用户,
  • 被至少一个用户关注。

编写一个解决方案来报告 二级用户 及其关注者的数量。

返回按 follower 字典序排序 的结果表。

结果格式如下所示。

示例 1:

输入:
Follow table:
+----------+----------+
| followee | follower |
+----------+----------+
| Alice    | Bob      |
| Bob      | Cena     |
| Bob      | Donald   |
| Donald   | Edward   |
+----------+----------+
输出:
+----------+-----+
| follower | num |
+----------+-----+
| Bob      | 2   |
| Donald   | 1   |
+----------+-----+
解释:
用户 Bob 有 2 个关注者。Bob 是二级关注者,因为他关注了 Alice,所以我们把他包括在结果表中。
用户 Donald 有 1 个关注者。Donald 是二级关注者,因为他关注了 Bob,所以我们把他包括在结果表中。
用户 Alice 有 1 个关注者。Alice 不是二级关注者,但是她不关注任何人,所以我们不把她包括在结果表中。

三,建表语句

import pandas as pd

data = [['Alice', 'Bob'], ['Bob', 'Cena'], ['Bob', 'Donald'], ['Donald', 'Edward']]
follow = pd.DataFrame(data, columns=['followee', 'follower']).astype({'followee':'object', 'follower':'object'})

四,分析

题解:

表 关注表

字段 被关注者,关注者

求二级关注者的关注数量 结果按照关注着用户的升序排序

第一步: 找到 至少又被一人关注的 被关注者

# 我作为被关注着 我有关注过别人  是否在这列里面
df = follow[follow['followee'].isin(follow['follower'])]
df

第二步:简简单单的分组聚合 以被关注者分组 count 关注他的人数

#简简单单的分组聚合
df1 = df.groupby('followee').count().reset_index()
df1

第三步: 排序 并改名

#排序  
res = df1.sort_values('followee')
res.columns=['follower','num']
res

五,Pandas解答

import pandas as pd

def second_degree_follower(follow: pd.DataFrame) -> pd.DataFrame:
    # 我作为被关注着 我有关注过别人  是否在这列里面
    df = follow[follow['followee'].isin(follow['follower'])]
    #简简单单的分组聚合
    df1 = df.groupby('followee').count().reset_index()
    #排序  
    res = df1.sort_values('followee')
    #改名
    res.columns=['follower','num']
    return res
second_degree_follower(follow)

六,验证

七,知识点总结

  • Pandas中 多列判断的运用   API; isin方法
  • Pandas中分组聚合的运用  API: groupby...count()
  • Padans中重新生成索引的运用  API: reset_index()
  • Pandas中排序的运用 API :sort_values()
  • Pandas中修改列名的运用 API columns
  • 先子查询,在分类聚合 求出二级关注着的关注者人数

  • 学习:知识的初次邂逅
  • 复习:知识的温故知新
  • 练习:知识的实践应用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值