Skip to content

Instantly share code, notes, and snippets.

@blindstitch
Last active November 26, 2021 16:14
Show Gist options
  • Save blindstitch/1bfcd5548529ab69a7e01c3b6ad7bb99 to your computer and use it in GitHub Desktop.
Save blindstitch/1bfcd5548529ab69a7e01c3b6ad7bb99 to your computer and use it in GitHub Desktop.
Mostly incomplete experiments modeling the friendship paradox
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 3,
"id": "bf3c57b2-75c1-4ad2-ba15-3d1f37c53d69",
"metadata": {},
"outputs": [],
"source": [
"import networkx\n",
"from matplotlib import pyplot\n",
"from numpy import roll\n",
"import numpy\n",
"import pandas\n",
"import random"
]
},
{
"cell_type": "markdown",
"id": "988be176-35b4-4b43-aadd-02350e132d41",
"metadata": {},
"source": [
"Class to contain all of the functions"
]
},
{
"cell_type": "code",
"execution_count": 187,
"id": "332013f1-b8b3-45d7-a458-19835d295648",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"class Friendships:\n",
" \n",
" def _neighbor_deg_mean(self,node,graph):\n",
" return numpy.mean([graph.degree(n) for n in graph.neighbors(node)])\n",
" \n",
" def _make_df(self,graph):\n",
" temp_df = pandas.DataFrame(columns=['node','deg','neigh_deg_avg','fewer_neighbors'])\n",
"\n",
" for node in graph.nodes():\n",
" deg_n_mu=self._neighbor_deg_mean(node,self.graph)\n",
" temp_df = temp_df.append(\n",
" {'node':node,\n",
" 'deg':self.graph.degree(node),\n",
" 'neigh_deg_avg':deg_n_mu,\n",
" 'fewer_neighbors': str(deg_n_mu > self.graph.degree(node))},\n",
" ignore_index=True)\n",
" return temp_df\n",
" \n",
" \n",
" def __init__(self,graph):\n",
" self.graph = graph.copy()\n",
" self.df = self._make_df(self.graph)\n",
" \n",
" def refresh_df(self):\n",
" self.df = self._make_df(self.graph)\n",
" \n",
" def summary_dict(self,printed=False):\n",
" self.refresh_df()\n",
" dict_out = self.df.groupby(['fewer_neighbors']).count().to_dict()['node']\n",
"\n",
" if 'True' in dict_out.keys():\n",
" dict_out['prop'] = dict_out['True']/len(self.graph.nodes())\n",
" if 'False' in dict_out.keys():\n",
" dict_out['paradox'] = dict_out['True'] > dict_out['False']\n",
" else:\n",
" dict_out['paradox'] = False\n",
" dict_out['prop'] = 1\n",
" \n",
" if not(printed):\n",
" return dict_out\n",
" else:\n",
" print(dict_out)\n",
" \n",
" def summary(self):\n",
" self.refresh_df()\n",
" print( self.df.groupby(['fewer_neighbors']).count() )\n",
" self.summary_dict(printed=True)\n",
" \n",
" def plot(self, circular=True):\n",
" pyplot.figure()\n",
" if circular:\n",
" networkx.draw_circular(self.graph, with_labels=True)\n",
" else:\n",
" networkx.draw(self.graph, with_labels=True)\n",
" pyplot.show()\n",
" \n",
" def add_random_connection(self,count=1):\n",
" for i in range(count):\n",
" while True:\n",
" pair = random.choices(list(self.graph.nodes()),k=2)\n",
" if not(self.graph.has_edge(pair[0],pair[1])):\n",
" if pair[0] != pair[1]:\n",
" self.graph.add_edge(pair[0],pair[1])\n",
" break\n",
" self.refresh_df()\n"
]
},
{
"cell_type": "markdown",
"id": "456cdfea-8d32-427f-b42f-bd3500c65501",
"metadata": {},
"source": [
"Graph where everyone has 2 friends - their 2 nearest neighbors in the ring"
]
},
{
"cell_type": "code",
"execution_count": 188,
"id": "f5e219f6-8d61-4574-909f-ee071f001de5",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" node deg neigh_deg_avg\n",
"fewer_neighbors \n",
"False 30 30 30\n",
"{'False': 30, 'paradox': False, 'prop': 1}\n"
]
}
],
"source": [
"g = networkx.Graph()\n",
"count=30\n",
"nodelist = [i+1 for i in range(count)]\n",
"\n",
"for n in nodelist:\n",
" g.add_node(n)\n",
" \n",
"for i in range(count):\n",
" g.add_edge(nodelist[i],roll(nodelist,-1*i+1)[0])\n",
" #g.add_edge(nodelist[i],roll(nodelist,-1*i+2)[0])\n",
" g.add_edge(nodelist[i],roll(nodelist,-1*i-1)[0])\n",
" #g.add_edge(nodelist[i],roll(nodelist,-1*i-2)[0])\n",
" \n",
"\n",
"friends = Friendships(g)\n",
"friends.plot()\n",
"friends.summary()"
]
},
{
"cell_type": "markdown",
"id": "f12f59f6-e308-4c2e-a031-5290ca214b58",
"metadata": {},
"source": [
"Add a single random connection"
]
},
{
"cell_type": "code",
"execution_count": 189,
"id": "653ee16e-4361-4a52-8045-ed91893fdf5e",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" node deg neigh_deg_avg\n",
"fewer_neighbors \n",
"False 26 26 26\n",
"True 4 4 4\n",
"{'False': 26, 'True': 4, 'prop': 0.13333333333333333, 'paradox': False}\n"
]
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>node</th>\n",
" <th>deg</th>\n",
" <th>neigh_deg_avg</th>\n",
" <th>fewer_neighbors</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>2.500000</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>2</td>\n",
" <td>3</td>\n",
" <td>2.333333</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>3</td>\n",
" <td>2</td>\n",
" <td>2.500000</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>4</td>\n",
" <td>2</td>\n",
" <td>2.000000</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>5</td>\n",
" <td>2</td>\n",
" <td>2.000000</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>6</td>\n",
" <td>2</td>\n",
" <td>2.000000</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>7</td>\n",
" <td>2</td>\n",
" <td>2.000000</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>8</td>\n",
" <td>2</td>\n",
" <td>2.000000</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>9</td>\n",
" <td>2</td>\n",
" <td>2.000000</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>10</td>\n",
" <td>2</td>\n",
" <td>2.000000</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>11</td>\n",
" <td>2</td>\n",
" <td>2.000000</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>12</td>\n",
" <td>2</td>\n",
" <td>2.000000</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>13</td>\n",
" <td>2</td>\n",
" <td>2.000000</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>14</td>\n",
" <td>2</td>\n",
" <td>2.000000</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>15</td>\n",
" <td>2</td>\n",
" <td>2.000000</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15</th>\n",
" <td>16</td>\n",
" <td>2</td>\n",
" <td>2.000000</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16</th>\n",
" <td>17</td>\n",
" <td>2</td>\n",
" <td>2.000000</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17</th>\n",
" <td>18</td>\n",
" <td>2</td>\n",
" <td>2.000000</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18</th>\n",
" <td>19</td>\n",
" <td>2</td>\n",
" <td>2.000000</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19</th>\n",
" <td>20</td>\n",
" <td>2</td>\n",
" <td>2.000000</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20</th>\n",
" <td>21</td>\n",
" <td>2</td>\n",
" <td>2.000000</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21</th>\n",
" <td>22</td>\n",
" <td>2</td>\n",
" <td>2.000000</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22</th>\n",
" <td>23</td>\n",
" <td>2</td>\n",
" <td>2.000000</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>23</th>\n",
" <td>24</td>\n",
" <td>2</td>\n",
" <td>2.000000</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>24</th>\n",
" <td>25</td>\n",
" <td>2</td>\n",
" <td>2.000000</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25</th>\n",
" <td>26</td>\n",
" <td>2</td>\n",
" <td>2.500000</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>26</th>\n",
" <td>27</td>\n",
" <td>3</td>\n",
" <td>2.333333</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>27</th>\n",
" <td>28</td>\n",
" <td>2</td>\n",
" <td>2.500000</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>28</th>\n",
" <td>29</td>\n",
" <td>2</td>\n",
" <td>2.000000</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>29</th>\n",
" <td>30</td>\n",
" <td>2</td>\n",
" <td>2.000000</td>\n",
" <td>False</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" node deg neigh_deg_avg fewer_neighbors\n",
"0 1 2 2.500000 True\n",
"1 2 3 2.333333 False\n",
"2 3 2 2.500000 True\n",
"3 4 2 2.000000 False\n",
"4 5 2 2.000000 False\n",
"5 6 2 2.000000 False\n",
"6 7 2 2.000000 False\n",
"7 8 2 2.000000 False\n",
"8 9 2 2.000000 False\n",
"9 10 2 2.000000 False\n",
"10 11 2 2.000000 False\n",
"11 12 2 2.000000 False\n",
"12 13 2 2.000000 False\n",
"13 14 2 2.000000 False\n",
"14 15 2 2.000000 False\n",
"15 16 2 2.000000 False\n",
"16 17 2 2.000000 False\n",
"17 18 2 2.000000 False\n",
"18 19 2 2.000000 False\n",
"19 20 2 2.000000 False\n",
"20 21 2 2.000000 False\n",
"21 22 2 2.000000 False\n",
"22 23 2 2.000000 False\n",
"23 24 2 2.000000 False\n",
"24 25 2 2.000000 False\n",
"25 26 2 2.500000 True\n",
"26 27 3 2.333333 False\n",
"27 28 2 2.500000 True\n",
"28 29 2 2.000000 False\n",
"29 30 2 2.000000 False"
]
},
"execution_count": 189,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"friends = Friendships(g)\n",
"friends.add_random_connection()\n",
"friends.plot()\n",
"friends.summary()\n",
"friends.df"
]
},
{
"cell_type": "markdown",
"id": "8a07c9d2-3a5a-4635-89f1-e2fe1a15bcfd",
"metadata": {},
"source": [
"Add a few more"
]
},
{
"cell_type": "code",
"execution_count": 158,
"id": "4e7c65a7-665a-43e8-ba95-9701c473761c",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" node deg neigh_deg_avg\n",
"fewer_neighbors \n",
"False 13 13 13\n",
"True 17 17 17\n",
"{'False': 13, 'True': 17, 'prop': 0.5666666666666667, 'paradox': True}\n"
]
}
],
"source": [
"friends = Friendships(g)\n",
"friends.add_random_connection(count=4) \n",
"friends.plot()\n",
"friends.summary()"
]
},
{
"cell_type": "markdown",
"id": "f9bd14fb-3025-4652-be23-335f89157a88",
"metadata": {},
"source": [
"Another example starting from random"
]
},
{
"cell_type": "code",
"execution_count": 169,
"id": "6c6aed3b-4906-4b58-84e9-4f046722ea5e",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/karl/miniconda3/lib/python3.9/site-packages/numpy/core/fromnumeric.py:3440: RuntimeWarning: Mean of empty slice.\n",
" return _methods._mean(a, axis=axis, dtype=dtype,\n",
"/home/karl/miniconda3/lib/python3.9/site-packages/numpy/core/_methods.py:189: RuntimeWarning: invalid value encountered in double_scalars\n",
" ret = ret.dtype.type(ret / rcount)\n"
]
}
],
"source": [
"empty = networkx.Graph()\n",
"count=10\n",
"for node in [i+1 for i in range(count)]:\n",
" empty.add_node(node)\n",
"\n",
"from_empty = Friendships(empty)\n",
"from_empty.add_random_connection(count=12)"
]
},
{
"cell_type": "code",
"execution_count": 171,
"id": "11fa1c49-4ca7-41e0-8ea1-37e5b2c30a3a",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" node deg neigh_deg_avg\n",
"fewer_neighbors \n",
"False 2 2 0\n",
"True 8 8 8\n",
"{'False': 2, 'True': 8, 'prop': 0.8, 'paradox': True}\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/karl/miniconda3/lib/python3.9/site-packages/numpy/core/fromnumeric.py:3440: RuntimeWarning: Mean of empty slice.\n",
" return _methods._mean(a, axis=axis, dtype=dtype,\n",
"/home/karl/miniconda3/lib/python3.9/site-packages/numpy/core/_methods.py:189: RuntimeWarning: invalid value encountered in double_scalars\n",
" ret = ret.dtype.type(ret / rcount)\n"
]
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>node</th>\n",
" <th>deg</th>\n",
" <th>neigh_deg_avg</th>\n",
" <th>fewer_neighbors</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>4.500000</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>NaN</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>3</td>\n",
" <td>2</td>\n",
" <td>4.500000</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>4</td>\n",
" <td>2</td>\n",
" <td>3.666667</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>5</td>\n",
" <td>2</td>\n",
" <td>4.000000</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>6</td>\n",
" <td>2</td>\n",
" <td>4.333333</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>7</td>\n",
" <td>2</td>\n",
" <td>4.000000</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>8</td>\n",
" <td>2</td>\n",
" <td>3.250000</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>9</td>\n",
" <td>2</td>\n",
" <td>2.833333</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>10</td>\n",
" <td>2</td>\n",
" <td>NaN</td>\n",
" <td>False</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" node deg neigh_deg_avg fewer_neighbors\n",
"0 1 2 4.500000 True\n",
"1 2 2 NaN False\n",
"2 3 2 4.500000 True\n",
"3 4 2 3.666667 True\n",
"4 5 2 4.000000 True\n",
"5 6 2 4.333333 True\n",
"6 7 2 4.000000 True\n",
"7 8 2 3.250000 True\n",
"8 9 2 2.833333 True\n",
"9 10 2 NaN False"
]
},
"execution_count": 171,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from_empty.plot(circular=False)\n",
"from_empty.summary()\n",
"from_empty.df"
]
},
{
"cell_type": "code",
"execution_count": 178,
"id": "db235b80-fd65-4051-90fc-f5a947dd9a81",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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d3r00Uf12WefadasWRo5cqQslobVRmpYZwMAAbB161b16NFDTqdTWVlZDSb0JKl169Z66623tHTpUi1cuFA9e/bU2rVrg11WnaLFBwC18Nprr+mRRx7RnDlzNHr06GCX41der1fLli3To48+qq5du2r27Nm68sorg13WJaPFBwAXoLS0VHfddZf+9Kc/KTMzs8GHnlTTAWb48OHKzc1V37591bdvX91///06cuRIsEu7JAQfAJxHTk6OevbsKY/How0bNqhjx47BLimgHA6HHnnkEeXk5Mjj8Sg5OVlz5syR2+2+4GMUutx6ae23mrJss+5+/QtNWbZZL639VkdcF36MusKtTgA4hyVLlmjKlCn6wx/+oHvuuYeZDlTzH4FHHnlE27dv19NPP63bb7/9rP8u2fuKtDBzl9buPCxJcp9h1omUdk01/pq26pIYF4DqCT4AOKOysjJNmTJFa9as0fLly9WlS5dglxRyVq9eralTpyoqKkpz5sxRr169Tlu/OCtPM1flqtxTpXMljWFIDptV6anJvnkG/YlbnQDw/3zzzTfq06ePioqK9OWXXxJ6Z3Hddddp48aNuueee/SrX/1KI0aMUF5enqSToZejsspzh54keb1SWWWVZq7K0eKsmv1/85vfaPr06X6pmxYfAJxi+fLlGj9+vJ566indd9993Nq8AFFRUZKkiooKVVZWymqzqdqwSZIa3zxBUR0HXvCxnHarlo3tfc7Jdi8VwQegQSp0ubViY75yD5aopNyjGIdNyZfFaGj3M0/o6na79dBDD2nlypVavny5unfvHoSq67/ExEQ5ew6Ru+21Mi7ixXfDkG7q0Fwvpflv4lyCD0CDcjGdKXbv3q077rhDCQkJeu211xQXFxf4whuIpJYtVd1/nGxJXeT1VOpY5msqzf2XJCkiub8apdwlw2ZX+Z4tKnxvjmJ63Kbiz/9HhmFR3DWjFdX5BoXbLOr23Rtqc0VLzZgxo85r5BkfgAZjcVaehr+SpY9yDsntqT4t9CSp/N+ffbj9kIa/kqXFWXl655131KtXL40cOVJvv/02oXeJTrirfL8Xr18m94Edir9rvuLvfl4VBTtVvH6pb32V65iq3aVKmPC6mqRO1tEPX1JVuUuGpLyj/hsr1Oa3IwNAAP3QmaL6vNue7Ewx/r7fyFJcoPf//nf17t07AFU2fJVV1bJVe2WTdGJ7phrfME7WyDhJUmy/ETry/kLFDRglSTKsNsX2HyHDYpWzzdUywhzyHMlXuSNZxaWVfquR4ANQL5zsQCHVjKISHh4uq9UqSXps1lxlFCZdUOidqvHNk+SwWRSRkFyntZrZqQ/PqlxHZY1p5lu2xTZTleuob9nijJZhsfqWDVu4qivLJdUEqL9wqxNAveByuXw/SUlJevfdd33LeY26qdxTdf6DnIG7qlovZO6q42rN69ROsNaoxqoq+d637Ck5LGtU4ws6jt3qv3gi+ADUa/uPlGj5ghna9/xo5S8YraMfvyyvp+Y2WfmeLcpfOEYln7+tffNHKv/5UXJt+ci3b+F7z+ro2gyt2XFYR1xuvffee+ratavi4uLUt29fbdmyJVinVW/ZrRbZLTXpF9HhGhWvX6aq0mJVlRar+NOliux0/lcbHDaLYiPsfquR4ANQr419MF3l+3Nr3YHiVIakuUs/0N13361FixbpyJEjGjdunAYNGlSr8SghRYb/cOsyru8whV32ExW8OlEFr05UWPM2ius77LzH8Epq1TjCbzUSfADqtU/f/5ti+g6XNTJO1ohYxfYbIde2Nb71vg4UVttpHShOVe6p1rvLMjRu3Dj16tVLVqtVY8aMUXh4uLKysgJ9SvXa3j17lHrzjTIMybCFqfEN45QwKUMJkzLU+IZxMmxhkiRHy85KmPD6afsmjP+LIq7oqoHtmurNJRl+eZVBIvgA1HOuY4cvugPFqY59f0Bz5sxRXFyc72ffvn06cOCAf0+gAZqQ0lYOm/X8G56Bw2bV+JS2dVzR6Qg+APVaVKOmF92B4lRxTeOVnp6uoqIi309paalGjBhRl+WaQpfEOKWnJstpr13EOO0Wpacm+3W4MongA1DP9blxkEo+e6vWHShO5bBZdOsdaXrppZf0+eefy+v16sSJE1q5cqWOHz/up8obtrTerZSe2l5Ou1XnG+7UMGrG6ExPbR+Q2Rl4jw9AvfbKs7N0VepoFbw6UVLNsFgX0oHiVF5JU+/8uQYkvaKJEyfqm2++kdPpVP/+/TVgwAA/VG0Oab1bqXNCnF7I3KU1Ow7LUM3z1JNODiE3sF1TjU9p6/eW3kmM1Qmg3hub8aU+yjl03ulvziQQgyJDOuJya8WmfOUWHFdJeaViHHYlx0drSLczDxruTwQfgHove1+Rhr+SpbLK2r/EHohpcBBaeMYHoN4L9c4UCC084wPQIJzsFDFzVa7KPeee9dswarrNp6cmB6QzBUILtzoBNChb8otCrjMFQgvBB6BBCqXOFAgtBB8AwFTo3AIAMBWCDwBgKgQfAMBUCD4AgKkQfAAAUyH4AACmQvABAEyF4AMAmArBBwAwFYIPAGAqBB8AwFQIPgCAqRB8AABTIfgAAKZC8AEATOX/AGvjMXJhhcYLAAAAAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>node</th>\n",
" <th>deg</th>\n",
" <th>neigh_deg_avg</th>\n",
" <th>fewer_neighbors</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>Me</td>\n",
" <td>()</td>\n",
" <td>1.666667</td>\n",
" <td>[]</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>Tony</td>\n",
" <td>()</td>\n",
" <td>3.000000</td>\n",
" <td>[]</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>Tom</td>\n",
" <td>()</td>\n",
" <td>1.666667</td>\n",
" <td>[]</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>Timmy</td>\n",
" <td>()</td>\n",
" <td>3.000000</td>\n",
" <td>[]</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>Toni</td>\n",
" <td>()</td>\n",
" <td>3.000000</td>\n",
" <td>[]</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>Tonie</td>\n",
" <td>()</td>\n",
" <td>3.000000</td>\n",
" <td>[]</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>Tommy</td>\n",
" <td>()</td>\n",
" <td>NaN</td>\n",
" <td>[]</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" node deg neigh_deg_avg fewer_neighbors\n",
"0 Me () 1.666667 []\n",
"1 Tony () 3.000000 []\n",
"2 Tom () 1.666667 []\n",
"3 Timmy () 3.000000 []\n",
"4 Toni () 3.000000 []\n",
"5 Tonie () 3.000000 []\n",
"6 Tommy () NaN []"
]
},
"execution_count": 178,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"cool = networkx.Graph()\n",
"cool.add_node('Me')\n",
"ppl = ['Tony','Tom','Timmy','Toni','Tonie','Tommy']\n",
"for n in ppl: cool.add_node(n)\n",
"\n",
"# I know Tony, Tom, and Timmy\n",
"# Tony and Tom only know me\n",
"cool.add_edge('Me','Tony')\n",
"cool.add_edge('Me','Tom')\n",
"cool.add_edge('Me','Timmy')\n",
"\n",
"# Tom knows Toni and Tonie\n",
"cool.add_edge('Tom','Toni')\n",
"cool.add_edge('Tom','Tonie')\n",
"\n",
"coolnet = Friendships(cool)\n",
"coolnet.plot(circular=False)\n",
"coolnet.df"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.5"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment