You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
sitc/sna/5_Pandas.ipynb

473 lines
53 KiB
Plaintext

{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "skip"
}
},
"source": [
"![](images/EscUpmPolit_p.gif \"UPM\")"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "skip"
}
},
"source": [
"# Course Notes for Learning Intelligent Systems"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "skip"
}
},
"source": [
"Department of Telematic Engineering Systems, Universidad Politécnica de Madrid, © Carlos A. Iglesias"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "skip"
}
},
"source": [
"## [Introduction to Network Analysis](0_Intro_Network_Analysis.ipynb)"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"# Pandas integration"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"## Dataset Game of Thrones"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"Character Interaction Networks for George R. R. Martin's \"A Song of Ice and Fire\" saga\n",
"\n",
"Available at https://github.com/mathbeveridge/asoiaf\n",
"\n",
"Based on https://mriduls.github.io/pydata-networkx/introduction-and-game-of-thrones-instructor.html"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [],
"source": [
"import pandas as pd\n",
"import networkx as nx\n",
"import matplotlib.pyplot as plt\n",
"from matplotlib import cm\n",
"import networkx.algorithms.connectivity as nxcon\n",
"import numpy as np\n",
"import warnings\n",
"warnings.filterwarnings('ignore')\n",
"\n",
"%matplotlib inline"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"outputs": [],
"source": [
"book1 = pd.read_csv('https://raw.githubusercontent.com/mathbeveridge/asoiaf/master/data/asoiaf-book1-edges.csv')"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"We inspect the dataset. **weight** shows the number of interactions of the characters in the book."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"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>Source</th>\n",
" <th>Target</th>\n",
" <th>Type</th>\n",
" <th>weight</th>\n",
" <th>book</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>Addam-Marbrand</td>\n",
" <td>Jaime-Lannister</td>\n",
" <td>Undirected</td>\n",
" <td>3</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>Addam-Marbrand</td>\n",
" <td>Tywin-Lannister</td>\n",
" <td>Undirected</td>\n",
" <td>6</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>Aegon-I-Targaryen</td>\n",
" <td>Daenerys-Targaryen</td>\n",
" <td>Undirected</td>\n",
" <td>5</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>Aegon-I-Targaryen</td>\n",
" <td>Eddard-Stark</td>\n",
" <td>Undirected</td>\n",
" <td>4</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>Aemon-Targaryen-(Maester-Aemon)</td>\n",
" <td>Alliser-Thorne</td>\n",
" <td>Undirected</td>\n",
" <td>4</td>\n",
" <td>1</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Source Target Type weight \\\n",
"0 Addam-Marbrand Jaime-Lannister Undirected 3 \n",
"1 Addam-Marbrand Tywin-Lannister Undirected 6 \n",
"2 Aegon-I-Targaryen Daenerys-Targaryen Undirected 5 \n",
"3 Aegon-I-Targaryen Eddard-Stark Undirected 4 \n",
"4 Aemon-Targaryen-(Maester-Aemon) Alliser-Thorne Undirected 4 \n",
"\n",
" book \n",
"0 1 \n",
"1 1 \n",
"2 1 \n",
"3 1 \n",
"4 1 "
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"book1.head(5)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import networkx as nx\n",
"\n",
"G1 = nx.from_pandas_edgelist(book1, 'Source', 'Target', ['weight']) #df, source, target, [columns with attrbs]\n",
"\n",
"pos = nx.spring_layout(G1)\n",
"#pos = nx.circular_layout(G1)\n",
"#pos = nx.spectral_layout(G1)\n",
"#pos = nx.random_layout(G1)\n",
"nx.draw_networkx(G1, pos = pos, node_size=10, with_labels=False) "
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"Let's inspect..."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/plain": [
"('Jaime-Lannister', 'Loras-Tyrell', {'weight': 3})"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"list(G1.edges(data=True))[16]"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Most important nodes"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/plain": [
"[('Eddard-Stark', 0.3548387096774194),\n",
" ('Robert-Baratheon', 0.2688172043010753),\n",
" ('Tyrion-Lannister', 0.24731182795698928),\n",
" ('Catelyn-Stark', 0.23118279569892475),\n",
" ('Jon-Snow', 0.19892473118279572),\n",
" ('Robb-Stark', 0.18817204301075272),\n",
" ('Sansa-Stark', 0.18817204301075272),\n",
" ('Bran-Stark', 0.17204301075268819),\n",
" ('Cersei-Lannister', 0.16129032258064518),\n",
" ('Joffrey-Baratheon', 0.16129032258064518)]"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"degree_1 = nx.degree_centrality(G1)\n",
"sorted(degree_1.items(), key=lambda x:x[1], reverse=True)[0:10]"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Histogram of degree centrality"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.hist(list(nx.degree_centrality(G1).values()))\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "skip"
}
},
"source": [
"## References\n",
"* [NetworkX introduction](https://mriduls.github.io/pydata-networkx/introduction-and-game-of-thrones-instructor.html)"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "skip"
}
},
"source": [
"## Licence"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "skip"
}
},
"source": [
"The notebook is freely licensed under under the [Creative Commons Attribution Share-Alike license](https://creativecommons.org/licenses/by/2.0/). \n",
"\n",
"© Carlos A. Iglesias, Universidad Politécnica de Madrid."
]
}
],
"metadata": {
"celltoolbar": "Slideshow",
"datacleaner": {
"position": {
"top": "50px"
},
"python": {
"varRefreshCmd": "try:\n print(_datacleaner.dataframe_metadata())\nexcept:\n print([])"
},
"window_display": false
},
"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.8.12"
},
"latex_envs": {
"LaTeX_envs_menu_present": true,
"autocomplete": true,
"bibliofile": "biblio.bib",
"cite_by": "apalike",
"current_citInitial": 1,
"eqLabelWithNumbers": true,
"eqNumInitial": 1,
"hotkeys": {
"equation": "Ctrl-E",
"itemize": "Ctrl-I"
},
"labels_anchors": false,
"latex_user_defs": false,
"report_style_numbering": false,
"user_envs_cfg": false
}
},
"nbformat": 4,
"nbformat_minor": 1
}