从 python 数据帧的列构造二分图

2023-11-26

我有一个包含三列的数据框。

data['subdomain'],  data['domain'], data ['IP']

我想为子域的每个元素构建一个二分图 对应同一个域,权重为它出现的次数 对应。

例如我的数据可能是:

subdomain , domain, IP
test1, example.org, 10.20.30.40
something, site.com, 30.50.70.90
test2, example.org, 10.20.30.41
test3, example.org, 10.20.30.42
else, website.com, 90.80.70.10

我想要一个二部图来说明example.org其权重为 3 3 个边等。我想将这些结果组合成一个新的 数据框。

我一直在尝试networkX但我没有经验,特别是当需要计算边缘时。

B=nx.Graph()
B.add_nodes_from(data['subdomain'],bipartite=0)
B.add_nodes_from(data['domain'],bipartite=1)
B.add_edges_from (...)

你可以使用

B.add_weighted_edges_from(
    [(row['domain'], row['subdomain'], 1) for idx, row in df.iterrows()], 
    weight='weight')

添加加权边缘,或者您可以使用

B.add_edges_from(
    [(row['domain'], row['subdomain']) for idx, row in df.iterrows()])

添加没有权重的边。

您可能不需要权重,因为节点度数是相邻边的数量 到那个节点。例如,

>>> B.degree('example.org')
3

import pandas as pd
import networkx as nx
import matplotlib.pyplot as plt

df = pd.DataFrame(
    {'IP': ['10.20.30.40',
      '30.50.70.90',
      '10.20.30.41',
      '10.20.30.42',
      '90.80.70.10'],
     'domain': ['example.org',
      'site.com',
      'example.org',
      'example.org',
      'website.com'],
     'subdomain': ['test1', 'something', 'test2', 'test3', 'else']})

B = nx.Graph()
B.add_nodes_from(df['subdomain'], bipartite=0)
B.add_nodes_from(df['domain'], bipartite=1)
B.add_weighted_edges_from(
    [(row['domain'], row['subdomain'], 1) for idx, row in df.iterrows()], 
    weight='weight')

print(B.edges(data=True))
# [('test1', 'example.org', {'weight': 1}), ('test3', 'example.org', {'weight': 1}), ('test2', 'example.org', {'weight': 1}), ('website.com', 'else', {'weight': 1}), ('site.com', 'something', {'weight': 1})]

pos = {node:[0, i] for i,node in enumerate(df['domain'])}
pos.update({node:[1, i] for i,node in enumerate(df['subdomain'])})
nx.draw(B, pos, with_labels=False)
for p in pos:  # raise text positions
    pos[p][1] += 0.25
nx.draw_networkx_labels(B, pos)

plt.show()

yields enter image description here


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 python 数据帧的列构造二分图 的相关文章

随机推荐

  • 将本地 .aar 文件添加到我的 gradle 构建中

    所以我创建了一个Android库并成功将其编译成 aar文件 我将这个 aar 文件命名为 projectx sdk 1 0 0 aar 现在我希望我的新项目依赖于这个 aar 所以我所做的是这个帖子 但这篇文章让我感到困惑 因为我没有得到
  • 导入android.support.v7无法解决

    我是安卓新手 目前 我有adt bundle windows x86 20131030 zip Windows 32 位 已安装 并已成功安装 Android SDK 和 Eclipse 另外 我还更新了 Android SDK 管理器中的
  • 用于 Ruby on Rails / ActiveRecord 的优雅 PostgreSQL Group by

    尝试使用 PostgreSQL 检索按日期分组的 ActiveRecord 对象数组 更具体地说 我正在尝试翻译以下 MySQL 查询 posts Post all group gt date date conditions gt loca
  • 具有其他表的多个 id 的 SQL 字段

    有人可以告诉我如何创建这个数据库结构吗 这是一个例子 Table countries id countryname 1 US 2 DE 3 FR 4 IT 现在我有另一个表 产品 我想在其中存储该产品可用的所有国家 地区 Table pro
  • 使用 js (jquery) 查找所有 YouTube 链接

    假设有一个包含内容和 YouTube 链接的 div 我想获取该 YouTube 链接并将其嵌入 div p Here is a cool video Check it out http www youtube com watch v oH
  • mysql 选择没有表的日期

    我只需要返回一个月内所有日期的列表 我没有访问特定的表 所以我需要一个 sql select 语句 如果给定二月份 则返回以下内容 Day 2011 02 01 2011 02 02 2011 02 03 etc etc 2011 02 2
  • 什么是好的 PHP 模板系统? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 集成 PHP 的最好 最简单的模板系统是什么 使用它有什么好处 我目前根本不使用它 并且我认为这可能有助于将内容与演示文稿进一步分离 PHP 本身就
  • cartopy set_xlabel set_ylabel (不是刻度标签)

    使用 cartopy 地图时 我无法添加 xlabel 或 ylabel 有没有办法做到这一点 我不是在寻找刻度标签 import matplotlib pyplot as plt import cartopy ax plt axes pr
  • 使用导航组件重新加载片段

    我正在使用导航组件加载我的片段 如下所示 https developer android com guide navigation navigation getting started navController findNavContro
  • SQL 查询中的 IF 条件

    我是 SQL Server 的新手 请帮我在查询中编写以下逻辑 If getnow gt today 4 PM Then SELECT FROM table WHERE MailDate is Tomorrow Else SELECT FR
  • Haskell 中函子如何工作?

    我正在尝试学习 Haskell 并且我已经完成了所有基础知识 但现在我陷入困境 试图了解函子 我读过 函子将一个类别转换为另一个类别 这是什么意思 我知道有很多问题要问 但有人可以给我一个吗简单的英语函子的解释或者可能是简单的用例 我不小心
  • 将存储过程返回值分配给 VBA 变量

    这应该很容易 但我还没有找到真正简洁的答案 我在 sql server 中有一个非常简单的存储过程 它返回一个整数值 我想要做的就是将该返回值放入变量中以便在 Access 中使用 存储过程 ALTER PROCEDURE dbo out
  • 检测计划关闭

    我有一个 cmd 脚本 它将执行一组补丁 它被设计为在需要重新启动时中止以避免补丁问题 我还想扩展脚本以在计划重新启动时中止 例如通过 shutdown 命令 以便尽可能避免在补丁中重新启动 不幸的是 除了尝试安排另一次关闭之外 我还没有找
  • Bitbucket 警告我的 git 存储库太大,但我无法确认大文件

    Bitbucket 警告我的 Git 存储库超过 1 GB 事实上 在存储库详细信息页面说它是1 7 GB 太疯狂了 我一定在版本控制中包含了大数据文件 我的本地存储库实际上是10 GB 这意味着至少我一直在使用 gitignore在某种程
  • Eclipse 中的 JPA 项目出现问题 - 注释 @Entity 的类中出现错误:无法解析表“xxx”

    我正在尝试在 Eclipse Indigo 中创建简单的 EJB JPA 项目 我创建了新的 EJB 项目 其中 目标 现有的 Glassfish 服务器 配置 EJB 模块 GlassFish 部署描述符文件 Java JPA 在窗口 J
  • ViewPager 的无尽适配器

    我一直在使用CWAC 的 EndlessAdapter实现ListViews的无限滚动 我想完成 ViewPager 的同等功能 不幸的是 PageAdapter 和ListAdapter 不共享相同的公共基类 解决这个问题的最佳方法是什么
  • Java:尝试编译 Hadoop 程序时未找到 com.sun.tools.javac.Main

    当我尝试使用此命令在 Hadoop 中编译程序时 bin hadoop com sun tools javac Main WordCounter java 从 Hadoop 文件夹中 它说 Error Could not find or l
  • 在 UIPopoverController 的页脚中使用 UISegmentedControl

    在我的 iPad 应用程序取景器中 iTunes 链接 我正在尝试重新创建 UISegmentedControl 的外观 如 Keynote 的 内置 弹出窗口的页脚中所示 iPad HIG 建议使用底部对齐的 UIToolbar 但外观不
  • 复选框检查事件监听器

    最近我一直在使用 Chrome 插件 API 我希望开发一个插件 这将使我管理网站的生活变得更轻松 现在我想做的是在选中某个复选框时触发一个事件 由于这个网站不属于我 我无法更改代码 因此我使用 Chrome API 主要问题之一是没有 I
  • 从 python 数据帧的列构造二分图

    我有一个包含三列的数据框 data subdomain data domain data IP 我想为子域的每个元素构建一个二分图 对应同一个域 权重为它出现的次数 对应 例如我的数据可能是 subdomain domain IP test