分享一个Pandas应用实战案例——使用Python实现根据关系进行分组(pandas根据时间分组数据)

点击上方“Python爬虫与数据挖掘”,进行关注

回复“书籍”即可获赠Python从入门到进阶共10本电子书

亲贤臣,远小人,此先汉所以兴隆也;

大家好,我是皮皮。

一、前言

近日,有群友提出这样的问题:

分享一个Pandas应用实战案例——使用Python实现根据关系进行分组

群友提示可以使用ChatGPT,并给出代码:

分享一个Pandas应用实战案例——使用Python实现根据关系进行分组

二、实现过程

这里【瑜亮老师】给出了另外一个答案,与此同时,根据需求,构造数据,使用pandas也可以完成需求,代码如下:

import pandas as

 pd

data = [

    [‘刘备’‘关羽’], [‘刘备’‘张飞’

],

    [‘曹操’‘夏侯’], [‘张飞’‘诸葛’

],

    [‘夏侯’‘荀彧’], [‘孙权’‘鲁肃’

]

]

df = pd.DataFrame(data, columns=[‘发起’‘接收’

])

# 创建一个空字典用于存储人名与组别的映射关系

groups = {}

# 遍历数据框的每一行for _, row in

 df.iterrows():

sender = row[‘发起’

]

    receiver = row[‘接收’

]

    # 检查发起者是否已存在于映射关系中    if sender not in

 groups:

        # 如果不存在,则将发起者添加到映射关系中,并分配一个新的组别        group = max(groups.values()) + 1 if groups else 1

        groups[sender] = group

    # 检查接收者是否已存在于映射关系中    if receiver not in

 groups:

        # 如果不存在,则将接收者添加到映射关系中,并分配与发起者相同的组别

        group = groups[sender]

        groups[receiver] = group

# 根据人名与组别的映射关系更新数据框的’组别’列df[‘组别’] = df[‘发起’

].map(groups)

print(df)

# 同时可以将groups也用字典形式输出

result = {}

for k, v in

groups.items():

    if v not in

 result.keys():

        result[v] = k

    else

:

        result[v] += “,”

 + k

print(result)

运行之后可以得到如下结果:

分享一个Pandas应用实战案例——使用Python实现根据关系进行分组

同时,根据大佬的提示,在python中这是典型的查找连通图的问题,直接的思路是使用现成的networkx包直接调用求解连通图的算法即可,代码如下:

import networkx as

 nx

g = nx.Graph()

data = [

    [‘刘备’‘关羽’], [‘刘备’‘张飞’

],

    [‘曹操’‘夏侯’], [‘张飞’‘诸葛’

],

    [‘夏侯’‘荀彧’], [‘孙权’‘鲁肃’

]

]

g.add_edges_from(data)

for sub_g in

 nx.connected_components(g):

    g_node = g.subgraph(sub_g).nodes()

    print(g_node)

代码运行后的结果如下:

分享一个Pandas应用实战案例——使用Python实现根据关系进行分组

使用networkx我们还可以将图绘制出来:

from matplotlib import pyplot as

 plt

import networkx as

 nx

plt.rcParams[‘font.sans-serif’] = [‘SimHei’

]

plt.rcParams[‘axes.unicode_minus’] = False

g = nx.Graph()

data = [

    [‘刘备’‘关羽’],    [‘刘备’‘张飞’

],

    [‘曹操’‘夏侯’],    [‘张飞’‘诸葛’

],

    [‘夏侯’‘荀彧’],    [‘孙权’‘鲁肃’

]

]

g.add_edges_from(data)

nx.draw_networkx(g)

代码运行后的结果如下:分享一个Pandas应用实战案例——使用Python实现根据关系进行分组

三、总结

大家好,我是皮皮。这篇文章主要盘点了一个Pandas数据分析的问题,文中针对该问题,给出了具体的解析和代码实现,帮助粉丝顺利解决了问题。

最后感谢粉丝提问,感谢【瑜亮老师】供稿。

【提问补充】温馨提示,大家在群里提问的时候。可以注意下面几点:如果涉及到大文件数据,可以数据脱敏后,发点demo数据来(小文件的意思),然后贴点代码(可以复制的那种),记得发报错截图(截全)。代码不多的话,直接发代码文字即可,代码超过50行这样的话,发个.py文件就行。

分享一个Pandas应用实战案例——使用Python实现根据关系进行分组

大家在学习过程中如果有遇到问题,欢迎随时联系我解决(我的微信:pdcfighting1),应粉丝要求,我创建了一些ChatGPT机器人交流群和高质量的Python付费学习交流群和付费接单群,欢迎大家加入我的Python学习交流群和接单群!

分享一个Pandas应用实战案例——使用Python实现根据关系进行分组

小伙伴们,快快用实践一下吧!如果在学习过程中,有遇到任何问题,欢迎加我好友,我拉你进Python学习交流群共同探讨学习。

分享一个Pandas应用实战案例——使用Python实现根据关系进行分组

 End 

往期精彩文章推荐:

盘点一个Python自动化办公的问题——批量实现文件重命名(方法一)

使用Pandas返回每个个体/记录中属性为1的列标签集合

Pandas实战——灵活使用pandas基础知识轻松处理不规则数据

盘点一个Python自动化办公的需求——将一份Excel文件按照指定列拆分成多个文件

分享一个Pandas应用实战案例——使用Python实现根据关系进行分组

欢迎大家点赞,留言,转发,转载,感谢大家的相伴与支持

想加入Python学习群请在后台回复【入群

万水千山总是情,点个【在看】行不行

/今日留言主题/

随便说一两句吧~~

0
分享到:
没有账号? 忘记密码?