Skip to main content
  • Home
  • Development
  • Documentation
  • Donate
  • Operational login
  • Browse the archive

swh logo
SoftwareHeritage
Software
Heritage
Archive
Features
  • Search

  • Downloads

  • Save code now

  • Add forge now

  • Help

https://github.com/hongtaoh/32vis
08 December 2025, 08:00:46 UTC
  • Code
  • Branches (1)
  • Releases (0)
  • Visits
    • Branches
    • Releases
    • HEAD
    • refs/heads/master
    No releases to show
  • eae3568
  • /
  • analyses_and_get_figures
  • /
  • Authors_Statistics.ipynb
Raw File Download
Take a new snapshot of a software origin

If the archived software origin currently browsed is not synchronized with its upstream version (for instance when new commits have been issued), you can explicitly request Software Heritage to take a new snapshot of it.

Use the form below to proceed. Once a request has been submitted and accepted, it will be processed as soon as possible. You can then check its processing state by visiting this dedicated page.
swh spinner

Processing "take a new snapshot" request ...

To reference or cite the objects present in the Software Heritage archive, permalinks based on SoftWare Hash IDentifiers (SWHIDs) must be used.
Select below a type of object currently browsed in order to display its associated SWHID and permalink.

  • content
  • directory
  • revision
  • snapshot
origin badgecontent badge
swh:1:cnt:482f8476f2e897758ecb31909c4b1e1252fe877b
origin badgedirectory badge
swh:1:dir:5419d7d4fb4f1455ed07c880b6e146af0b5d07aa
origin badgerevision badge
swh:1:rev:9960413711b0efb1f51ff7cce3548d259be8d8cb
origin badgesnapshot badge
swh:1:snp:df3c5521f2cc2bcd7e55e45465def0e224e45267

This interface enables to generate software citations, provided that the root directory of browsed objects contains a citation.cff or codemeta.json file.
Select below a type of object currently browsed in order to generate citations for them.

  • content
  • directory
  • revision
  • snapshot
Generate software citation in BibTex format (requires biblatex-software package)
Generating citation ...
Generate software citation in BibTex format (requires biblatex-software package)
Generating citation ...
Generate software citation in BibTex format (requires biblatex-software package)
Generating citation ...
Generate software citation in BibTex format (requires biblatex-software package)
Generating citation ...
Tip revision: 9960413711b0efb1f51ff7cce3548d259be8d8cb authored by Hongtao Hao on 24 May 2025, 20:13:11 UTC
Update README.md
Tip revision: 9960413
Authors_Statistics.ipynb
{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 51,
   "id": "00847d0f",
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "from collections import Counter\n",
    "import seaborn as sns\n",
    "import matplotlib\n",
    "font = {'family' : 'Arial',\n",
    "        'weight' : 'normal',\n",
    "        'size'   : 14}\n",
    "matplotlib.rc('font', **font)\n",
    "# matplotlib.rcParams['figure.dpi']= 200\n",
    "import altair as alt\n",
    "pd.set_option('display.max_rows', 500)\n",
    "import numpy as np\n",
    "import plotnine as p9\n",
    "from plotnine import ggplot, geom_point, aes, stat_smooth, facet_wrap\n",
    "from altair_saver import save"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "id": "62c85bb1",
   "metadata": {},
   "outputs": [],
   "source": [
    "author = pd.read_csv('../data/ht_class/ht_cleaned_author_df.csv')\n",
    "paper = pd.read_csv('../data/ht_class/ht_cleaned_paper_df.csv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "id": "75b7739b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "12428"
      ]
     },
     "execution_count": 53,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "total_authors = author.shape[0]\n",
    "total_authors"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "189d2a63",
   "metadata": {},
   "source": [
    "### Number of countries by year"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "id": "dd7b875d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "42"
      ]
     },
     "execution_count": 54,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "## How many counries in total\n",
    "countries = author['Affiliation Country Code']\n",
    "len(list(set(countries)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "id": "32cedf16",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "110"
      ]
     },
     "execution_count": 55,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# how many rows miss openalex author id\n",
    "author[author['OpenAlex Author ID'].isnull()].shape[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "id": "4ddbe4be",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "119"
      ]
     },
     "execution_count": 56,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "author[author.Year == 1990].shape[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "id": "ed225e3e",
   "metadata": {},
   "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>Year</th>\n",
       "      <th>DOI</th>\n",
       "      <th>Title</th>\n",
       "      <th>Number of Authors</th>\n",
       "      <th>Author Position</th>\n",
       "      <th>Author Name</th>\n",
       "      <th>OpenAlex Author ID</th>\n",
       "      <th>Affiliation Name</th>\n",
       "      <th>Affiliation Country Code</th>\n",
       "      <th>Affiliation Type</th>\n",
       "      <th>Binary Type</th>\n",
       "      <th>Cross-type Collaboration</th>\n",
       "      <th>International Collaboration</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>7746</th>\n",
       "      <td>1990</td>\n",
       "      <td>10.1109/VISUAL.1990.146385</td>\n",
       "      <td>A journey into the fourth dimension</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>E.S. Panduranga</td>\n",
       "      <td>https://openalex.org/A2302757246</td>\n",
       "      <td>Department of Computer Sciences, Johns Hopkins...</td>\n",
       "      <td>US</td>\n",
       "      <td>education</td>\n",
       "      <td>education</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9955</th>\n",
       "      <td>1990</td>\n",
       "      <td>10.1109/VISUAL.1990.146393</td>\n",
       "      <td>A numerical method for rendering spherical ref...</td>\n",
       "      <td>3.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>E.S. Panduranga</td>\n",
       "      <td>https://openalex.org/A2302757246</td>\n",
       "      <td>Department of Computer Sciences, Johns Hopkins...</td>\n",
       "      <td>US</td>\n",
       "      <td>education</td>\n",
       "      <td>education</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      Year                         DOI  \\\n",
       "7746  1990  10.1109/VISUAL.1990.146385   \n",
       "9955  1990  10.1109/VISUAL.1990.146393   \n",
       "\n",
       "                                                  Title  Number of Authors  \\\n",
       "7746                A journey into the fourth dimension                2.0   \n",
       "9955  A numerical method for rendering spherical ref...                3.0   \n",
       "\n",
       "      Author Position      Author Name                OpenAlex Author ID  \\\n",
       "7746              2.0  E.S. Panduranga  https://openalex.org/A2302757246   \n",
       "9955              2.0  E.S. Panduranga  https://openalex.org/A2302757246   \n",
       "\n",
       "                                       Affiliation Name  \\\n",
       "7746  Department of Computer Sciences, Johns Hopkins...   \n",
       "9955  Department of Computer Sciences, Johns Hopkins...   \n",
       "\n",
       "     Affiliation Country Code Affiliation Type Binary Type  \\\n",
       "7746                       US        education   education   \n",
       "9955                       US        education   education   \n",
       "\n",
       "      Cross-type Collaboration  International Collaboration  \n",
       "7746                     False                         True  \n",
       "9955                     False                        False  "
      ]
     },
     "execution_count": 57,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "year_1990_author = author[author.Year == 1990]\n",
    "author_id_1990 = year_1990_author['OpenAlex Author ID'].tolist()\n",
    "dic = dict(Counter(author_id_1990))\n",
    "twice_1990 = [x for x in dic.keys() if dic[x] > 1][0]\n",
    "year_1990_author[year_1990_author['OpenAlex Author ID'] == twice_1990]\n",
    "# This author appeared twice in 1990"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "id": "cbcb47f3",
   "metadata": {},
   "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>Year</th>\n",
       "      <th>number of participating countries</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1990</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1991</td>\n",
       "      <td>8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1992</td>\n",
       "      <td>11</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1993</td>\n",
       "      <td>12</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1994</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Year  number of participating countries\n",
       "0  1990                                  5\n",
       "1  1991                                  8\n",
       "2  1992                                 11\n",
       "3  1993                                 12\n",
       "4  1994                                  9"
      ]
     },
     "execution_count": 58,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cntry_num_by_year = author.groupby('Year')['Affiliation Country Code'].nunique().reset_index(\n",
    "    name='number of participating countries')\n",
    "cntry_num_by_year.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "id": "9350cb79",
   "metadata": {},
   "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>Year</th>\n",
       "      <th>number of participating countries</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>27</th>\n",
       "      <td>2017</td>\n",
       "      <td>21</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>28</th>\n",
       "      <td>2018</td>\n",
       "      <td>18</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>29</th>\n",
       "      <td>2019</td>\n",
       "      <td>17</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30</th>\n",
       "      <td>2020</td>\n",
       "      <td>24</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>31</th>\n",
       "      <td>2021</td>\n",
       "      <td>26</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    Year  number of participating countries\n",
       "27  2017                                 21\n",
       "28  2018                                 18\n",
       "29  2019                                 17\n",
       "30  2020                                 24\n",
       "31  2021                                 26"
      ]
     },
     "execution_count": 59,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cntry_num_by_year.tail()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "id": "433b97ce",
   "metadata": {},
   "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>Year</th>\n",
       "      <th>number of participating countries</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1994</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>1995</td>\n",
       "      <td>11</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>2003</td>\n",
       "      <td>15</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>2004</td>\n",
       "      <td>16</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>2007</td>\n",
       "      <td>19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>2008</td>\n",
       "      <td>19</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    Year  number of participating countries\n",
       "4   1994                                  9\n",
       "5   1995                                 11\n",
       "13  2003                                 15\n",
       "14  2004                                 16\n",
       "17  2007                                 19\n",
       "18  2008                                 19"
      ]
     },
     "execution_count": 60,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cntry_num_by_year[cntry_num_by_year.Year.isin([1994, 1995, 2003, 2004,2007,2008])]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "id": "ee5f589d",
   "metadata": {},
   "outputs": [],
   "source": [
    "year_1990_author = author[author.Year == 1990]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "id": "966e4793",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Counter({'US': 109, 'DE': 4, 'AU': 3, 'CA': 1, 'FR': 2})"
      ]
     },
     "execution_count": 62,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Counter(year_1990_author['Affiliation Country Code'])"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2109f857",
   "metadata": {},
   "source": [
    "### Top countries"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "id": "c6b64ce0",
   "metadata": {},
   "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>country</th>\n",
       "      <th>count</th>\n",
       "      <th>ratio</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>US</td>\n",
       "      <td>6576</td>\n",
       "      <td>0.529</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>DE</td>\n",
       "      <td>1656</td>\n",
       "      <td>0.133</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>CN</td>\n",
       "      <td>1013</td>\n",
       "      <td>0.082</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>AT</td>\n",
       "      <td>523</td>\n",
       "      <td>0.042</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>CA</td>\n",
       "      <td>429</td>\n",
       "      <td>0.035</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  country  count  ratio\n",
       "0      US   6576  0.529\n",
       "1      DE   1656  0.133\n",
       "2      CN   1013  0.082\n",
       "3      AT    523  0.042\n",
       "4      CA    429  0.035"
      ]
     },
     "execution_count": 63,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dic = dict(Counter(author['Affiliation Country Code']).most_common(5))\n",
    "top_five = list(dic.keys())\n",
    "df = pd.DataFrame(dic.items(), columns = ['country', 'count'])\n",
    "df['ratio'] = round(df['count'] / total_authors, 3)\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "id": "1a64104f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.8210000000000001"
      ]
     },
     "execution_count": 64,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.ratio.sum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "id": "848425c9",
   "metadata": {},
   "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>country</th>\n",
       "      <th>count</th>\n",
       "      <th>ratio</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>US</td>\n",
       "      <td>6576</td>\n",
       "      <td>0.529</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>DE</td>\n",
       "      <td>1656</td>\n",
       "      <td>0.133</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>CN</td>\n",
       "      <td>1013</td>\n",
       "      <td>0.082</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>AT</td>\n",
       "      <td>523</td>\n",
       "      <td>0.042</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>CA</td>\n",
       "      <td>429</td>\n",
       "      <td>0.035</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>GB</td>\n",
       "      <td>422</td>\n",
       "      <td>0.034</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>FR</td>\n",
       "      <td>312</td>\n",
       "      <td>0.025</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>NL</td>\n",
       "      <td>308</td>\n",
       "      <td>0.025</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>CH</td>\n",
       "      <td>161</td>\n",
       "      <td>0.013</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>AU</td>\n",
       "      <td>143</td>\n",
       "      <td>0.012</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  country  count  ratio\n",
       "0      US   6576  0.529\n",
       "1      DE   1656  0.133\n",
       "2      CN   1013  0.082\n",
       "3      AT    523  0.042\n",
       "4      CA    429  0.035\n",
       "5      GB    422  0.034\n",
       "6      FR    312  0.025\n",
       "7      NL    308  0.025\n",
       "8      CH    161  0.013\n",
       "9      AU    143  0.012"
      ]
     },
     "execution_count": 65,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dic = dict(Counter(author['Affiliation Country Code']).most_common(10))\n",
    "top_10 = list(dic.keys())\n",
    "df = pd.DataFrame(dic.items(), columns = ['country', 'count'])\n",
    "df['ratio'] = round(df['count'] / total_authors, 3)\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "id": "fe7f0f91",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.93"
      ]
     },
     "execution_count": 66,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.ratio.sum()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "327e215a",
   "metadata": {},
   "source": [
    "#### Redistributions"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "id": "51b0cfed",
   "metadata": {},
   "outputs": [],
   "source": [
    "# prepare for timeseries plot\n",
    "cntry_ts_prop = []\n",
    "for group in author.groupby('Year'):\n",
    "    year = group[0]\n",
    "    year_total = group[1].shape[0]\n",
    "    group[1]['cntry new'] = group[1]['Affiliation Country Code'].apply(\n",
    "        lambda x: x if x in top_five else 'Other'\n",
    "    )\n",
    "    for cntry_group in group[1].groupby('cntry new'):\n",
    "        cntry_code = cntry_group[0]\n",
    "        cntry_year_total = cntry_group[1].shape[0]\n",
    "        cntry_prop = cntry_year_total / year_total\n",
    "        cntry_ts_prop.append((year, cntry_code, cntry_year_total, cntry_prop))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "id": "f44c847d",
   "metadata": {},
   "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>year</th>\n",
       "      <th>country</th>\n",
       "      <th>year total</th>\n",
       "      <th>ratio</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1990</td>\n",
       "      <td>Canada</td>\n",
       "      <td>1</td>\n",
       "      <td>0.008403</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1990</td>\n",
       "      <td>Germany</td>\n",
       "      <td>4</td>\n",
       "      <td>0.033613</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1990</td>\n",
       "      <td>Other</td>\n",
       "      <td>5</td>\n",
       "      <td>0.042017</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1990</td>\n",
       "      <td>US</td>\n",
       "      <td>109</td>\n",
       "      <td>0.915966</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1991</td>\n",
       "      <td>Germany</td>\n",
       "      <td>3</td>\n",
       "      <td>0.023438</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   year  country  year total     ratio\n",
       "0  1990   Canada           1  0.008403\n",
       "1  1990  Germany           4  0.033613\n",
       "2  1990    Other           5  0.042017\n",
       "3  1990       US         109  0.915966\n",
       "4  1991  Germany           3  0.023438"
      ]
     },
     "execution_count": 68,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cntry_ts_prop_df = pd.DataFrame(\n",
    "    list(cntry_ts_prop), columns=['year', 'country', 'year total', 'ratio']) \n",
    "cntry_ts_prop_df.replace({'CA': 'Canada',\n",
    "                          'DE': 'Germany',\n",
    "                          'CN': 'China',\n",
    "                          'AT': 'Austria',\n",
    "                         }, inplace = True)\n",
    "cntry_ts_prop_df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "id": "0de7023d",
   "metadata": {},
   "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>year</th>\n",
       "      <th>country</th>\n",
       "      <th>year total</th>\n",
       "      <th>ratio</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>137</th>\n",
       "      <td>2016</td>\n",
       "      <td>Austria</td>\n",
       "      <td>23</td>\n",
       "      <td>0.042672</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>138</th>\n",
       "      <td>2016</td>\n",
       "      <td>Canada</td>\n",
       "      <td>19</td>\n",
       "      <td>0.035250</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>139</th>\n",
       "      <td>2016</td>\n",
       "      <td>China</td>\n",
       "      <td>55</td>\n",
       "      <td>0.102041</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>140</th>\n",
       "      <td>2016</td>\n",
       "      <td>Germany</td>\n",
       "      <td>71</td>\n",
       "      <td>0.131725</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>141</th>\n",
       "      <td>2016</td>\n",
       "      <td>Other</td>\n",
       "      <td>131</td>\n",
       "      <td>0.243043</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>142</th>\n",
       "      <td>2016</td>\n",
       "      <td>US</td>\n",
       "      <td>240</td>\n",
       "      <td>0.445269</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>143</th>\n",
       "      <td>2017</td>\n",
       "      <td>Austria</td>\n",
       "      <td>44</td>\n",
       "      <td>0.081633</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>144</th>\n",
       "      <td>2017</td>\n",
       "      <td>Canada</td>\n",
       "      <td>17</td>\n",
       "      <td>0.031540</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>145</th>\n",
       "      <td>2017</td>\n",
       "      <td>China</td>\n",
       "      <td>74</td>\n",
       "      <td>0.137291</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>146</th>\n",
       "      <td>2017</td>\n",
       "      <td>Germany</td>\n",
       "      <td>70</td>\n",
       "      <td>0.129870</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>147</th>\n",
       "      <td>2017</td>\n",
       "      <td>Other</td>\n",
       "      <td>99</td>\n",
       "      <td>0.183673</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>148</th>\n",
       "      <td>2017</td>\n",
       "      <td>US</td>\n",
       "      <td>235</td>\n",
       "      <td>0.435993</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "     year  country  year total     ratio\n",
       "137  2016  Austria          23  0.042672\n",
       "138  2016   Canada          19  0.035250\n",
       "139  2016    China          55  0.102041\n",
       "140  2016  Germany          71  0.131725\n",
       "141  2016    Other         131  0.243043\n",
       "142  2016       US         240  0.445269\n",
       "143  2017  Austria          44  0.081633\n",
       "144  2017   Canada          17  0.031540\n",
       "145  2017    China          74  0.137291\n",
       "146  2017  Germany          70  0.129870\n",
       "147  2017    Other          99  0.183673\n",
       "148  2017       US         235  0.435993"
      ]
     },
     "execution_count": 69,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cntry_ts_prop_df[cntry_ts_prop_df.year.isin([2016, 2017])]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "48f3079b",
   "metadata": {},
   "source": [
    "#### Addressing the issue of Hong Kong"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "id": "8ee769f6",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1013"
      ]
     },
     "execution_count": 70,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "author[author['Affiliation Country Code'] == 'CN'].shape[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "id": "c564c265",
   "metadata": {},
   "outputs": [],
   "source": [
    "def check_substring(substring_list, string_to_check):\n",
    "    true_false_list = []\n",
    "    for i in substring_list:\n",
    "        true_false_list.append(i in string_to_check)\n",
    "    return True in true_false_list"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "id": "b6516b02",
   "metadata": {},
   "outputs": [],
   "source": [
    "hk_list = ['Hong Kong', 'hong kong', 'HK', 'hk']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "id": "caea14be",
   "metadata": {},
   "outputs": [],
   "source": [
    "# author['Country Code New'] = author.apply(\n",
    "#     lambda row: 'HK' if check_substring(\n",
    "#         hk_list, row['Affiliation Name']) else row['Affiliation Country Code'], axis = 1\n",
    "# )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "id": "72ceea88",
   "metadata": {},
   "outputs": [],
   "source": [
    "# now i got it: in np.where, the condition should be a list or array!\n",
    "cntry_code_new = np.where(\n",
    "    [check_substring(hk_list, i) for i in author['Affiliation Name']],\n",
    "    'HK',\n",
    "    author['Affiliation Country Code']\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "id": "d5a0e21f",
   "metadata": {},
   "outputs": [],
   "source": [
    "kwargs = {'Country Code New': cntry_code_new}\n",
    "author = author.assign(**kwargs)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 76,
   "id": "540c2a6c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "258"
      ]
     },
     "execution_count": 76,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 258 out of 1018 authors coded as coming from CN actually came from Hong Kong\n",
    "# One author actually came from Hong Kong was mislabelled as coming from YE\n",
    "hk_author = author[author['Country Code New'] == 'HK']\n",
    "hk_author.shape[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "id": "90c5ec8f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<AxesSubplot:xlabel='Year', ylabel='count'>"
      ]
     },
     "execution_count": 77,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "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": [
    "sns.countplot(x = hk_author.Year)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 78,
   "id": "acb92316",
   "metadata": {},
   "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>country</th>\n",
       "      <th>count</th>\n",
       "      <th>ratio</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>US</td>\n",
       "      <td>6576</td>\n",
       "      <td>0.529</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>DE</td>\n",
       "      <td>1656</td>\n",
       "      <td>0.133</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>CN</td>\n",
       "      <td>755</td>\n",
       "      <td>0.061</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>AT</td>\n",
       "      <td>523</td>\n",
       "      <td>0.042</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>CA</td>\n",
       "      <td>429</td>\n",
       "      <td>0.035</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  country  count  ratio\n",
       "0      US   6576  0.529\n",
       "1      DE   1656  0.133\n",
       "2      CN    755  0.061\n",
       "3      AT    523  0.042\n",
       "4      CA    429  0.035"
      ]
     },
     "execution_count": 78,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dic = dict(Counter(author['Country Code New']).most_common(5))\n",
    "list(dic.keys())\n",
    "df = pd.DataFrame(dic.items(), columns = ['country', 'count'])\n",
    "df['ratio'] = round(df['count'] / total_authors, 3)\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 79,
   "id": "9b5c4a60",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.7997264242034117"
      ]
     },
     "execution_count": 79,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# top_five = ['US', 'DE', 'CN', 'AT', 'CA']\n",
    "top_five = list(dic.keys())\n",
    "author[author['Country Code New'].isin(top_five)].shape[0] / author.shape[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 80,
   "id": "a2219413",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9172835532668169"
      ]
     },
     "execution_count": 80,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "### TOP 10\n",
    "dic2 = dict(Counter(author['Country Code New']).most_common(10))\n",
    "list(dic2.keys())\n",
    "# top_ten = ['US', 'DE', 'CN', 'AT', 'CA', 'GB', 'FR', 'NL', 'CH', 'AU']\n",
    "top_ten = list(dic2.keys())\n",
    "author[author['Affiliation Country Code'].isin(top_ten)].shape[0] / author.shape[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 81,
   "id": "02923d1e",
   "metadata": {},
   "outputs": [],
   "source": [
    "cntry_ts_prop = []\n",
    "for group in author.groupby('Year'):\n",
    "    year = group[0]\n",
    "    year_total = group[1].shape[0]\n",
    "    group[1]['cntry new'] = group[1]['Country Code New'].apply(\n",
    "        lambda x: x if x in top_five else 'Other'\n",
    "    )\n",
    "    for cntry_group in group[1].groupby('cntry new'):\n",
    "        cntry_code = cntry_group[0]\n",
    "        cntry_year_total = cntry_group[1].shape[0]\n",
    "        cntry_prop = cntry_year_total / year_total\n",
    "        cntry_ts_prop.append((year, cntry_code, cntry_year_total, cntry_prop))\n",
    "\n",
    "cntry_ts_prop_df = pd.DataFrame(\n",
    "    list(cntry_ts_prop), columns=['year', 'country', 'year total', 'ratio']) "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 82,
   "id": "31491e33",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['CA', 'Other', 'CN', 'DE', 'US', 'AT']"
      ]
     },
     "execution_count": 82,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "list(set(cntry_ts_prop_df.country.tolist()))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 83,
   "id": "f6e9123e",
   "metadata": {},
   "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>year</th>\n",
       "      <th>country</th>\n",
       "      <th>year total</th>\n",
       "      <th>ratio</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>134</th>\n",
       "      <td>2016</td>\n",
       "      <td>AT</td>\n",
       "      <td>23</td>\n",
       "      <td>0.042672</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>135</th>\n",
       "      <td>2016</td>\n",
       "      <td>CA</td>\n",
       "      <td>19</td>\n",
       "      <td>0.035250</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>136</th>\n",
       "      <td>2016</td>\n",
       "      <td>CN</td>\n",
       "      <td>30</td>\n",
       "      <td>0.055659</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>137</th>\n",
       "      <td>2016</td>\n",
       "      <td>DE</td>\n",
       "      <td>71</td>\n",
       "      <td>0.131725</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>138</th>\n",
       "      <td>2016</td>\n",
       "      <td>Other</td>\n",
       "      <td>156</td>\n",
       "      <td>0.289425</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>139</th>\n",
       "      <td>2016</td>\n",
       "      <td>US</td>\n",
       "      <td>240</td>\n",
       "      <td>0.445269</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>140</th>\n",
       "      <td>2017</td>\n",
       "      <td>AT</td>\n",
       "      <td>44</td>\n",
       "      <td>0.081633</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>141</th>\n",
       "      <td>2017</td>\n",
       "      <td>CA</td>\n",
       "      <td>17</td>\n",
       "      <td>0.031540</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>142</th>\n",
       "      <td>2017</td>\n",
       "      <td>CN</td>\n",
       "      <td>53</td>\n",
       "      <td>0.098330</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>143</th>\n",
       "      <td>2017</td>\n",
       "      <td>DE</td>\n",
       "      <td>70</td>\n",
       "      <td>0.129870</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>144</th>\n",
       "      <td>2017</td>\n",
       "      <td>Other</td>\n",
       "      <td>120</td>\n",
       "      <td>0.222635</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>145</th>\n",
       "      <td>2017</td>\n",
       "      <td>US</td>\n",
       "      <td>235</td>\n",
       "      <td>0.435993</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>146</th>\n",
       "      <td>2018</td>\n",
       "      <td>AT</td>\n",
       "      <td>14</td>\n",
       "      <td>0.023810</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>147</th>\n",
       "      <td>2018</td>\n",
       "      <td>CA</td>\n",
       "      <td>10</td>\n",
       "      <td>0.017007</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>148</th>\n",
       "      <td>2018</td>\n",
       "      <td>CN</td>\n",
       "      <td>77</td>\n",
       "      <td>0.130952</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>149</th>\n",
       "      <td>2018</td>\n",
       "      <td>DE</td>\n",
       "      <td>82</td>\n",
       "      <td>0.139456</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>150</th>\n",
       "      <td>2018</td>\n",
       "      <td>Other</td>\n",
       "      <td>122</td>\n",
       "      <td>0.207483</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>151</th>\n",
       "      <td>2018</td>\n",
       "      <td>US</td>\n",
       "      <td>283</td>\n",
       "      <td>0.481293</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>152</th>\n",
       "      <td>2019</td>\n",
       "      <td>AT</td>\n",
       "      <td>14</td>\n",
       "      <td>0.020649</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>153</th>\n",
       "      <td>2019</td>\n",
       "      <td>CA</td>\n",
       "      <td>26</td>\n",
       "      <td>0.038348</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>154</th>\n",
       "      <td>2019</td>\n",
       "      <td>CN</td>\n",
       "      <td>106</td>\n",
       "      <td>0.156342</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>155</th>\n",
       "      <td>2019</td>\n",
       "      <td>DE</td>\n",
       "      <td>67</td>\n",
       "      <td>0.098820</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>156</th>\n",
       "      <td>2019</td>\n",
       "      <td>Other</td>\n",
       "      <td>131</td>\n",
       "      <td>0.193215</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>157</th>\n",
       "      <td>2019</td>\n",
       "      <td>US</td>\n",
       "      <td>334</td>\n",
       "      <td>0.492625</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>158</th>\n",
       "      <td>2020</td>\n",
       "      <td>AT</td>\n",
       "      <td>10</td>\n",
       "      <td>0.012610</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>159</th>\n",
       "      <td>2020</td>\n",
       "      <td>CA</td>\n",
       "      <td>16</td>\n",
       "      <td>0.020177</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>160</th>\n",
       "      <td>2020</td>\n",
       "      <td>CN</td>\n",
       "      <td>172</td>\n",
       "      <td>0.216898</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>161</th>\n",
       "      <td>2020</td>\n",
       "      <td>DE</td>\n",
       "      <td>87</td>\n",
       "      <td>0.109710</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>162</th>\n",
       "      <td>2020</td>\n",
       "      <td>Other</td>\n",
       "      <td>196</td>\n",
       "      <td>0.247163</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>163</th>\n",
       "      <td>2020</td>\n",
       "      <td>US</td>\n",
       "      <td>312</td>\n",
       "      <td>0.393443</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>164</th>\n",
       "      <td>2021</td>\n",
       "      <td>AT</td>\n",
       "      <td>19</td>\n",
       "      <td>0.022485</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>165</th>\n",
       "      <td>2021</td>\n",
       "      <td>CA</td>\n",
       "      <td>25</td>\n",
       "      <td>0.029586</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>166</th>\n",
       "      <td>2021</td>\n",
       "      <td>CN</td>\n",
       "      <td>164</td>\n",
       "      <td>0.194083</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>167</th>\n",
       "      <td>2021</td>\n",
       "      <td>DE</td>\n",
       "      <td>81</td>\n",
       "      <td>0.095858</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>168</th>\n",
       "      <td>2021</td>\n",
       "      <td>Other</td>\n",
       "      <td>196</td>\n",
       "      <td>0.231953</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>169</th>\n",
       "      <td>2021</td>\n",
       "      <td>US</td>\n",
       "      <td>360</td>\n",
       "      <td>0.426036</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "     year country  year total     ratio\n",
       "134  2016      AT          23  0.042672\n",
       "135  2016      CA          19  0.035250\n",
       "136  2016      CN          30  0.055659\n",
       "137  2016      DE          71  0.131725\n",
       "138  2016   Other         156  0.289425\n",
       "139  2016      US         240  0.445269\n",
       "140  2017      AT          44  0.081633\n",
       "141  2017      CA          17  0.031540\n",
       "142  2017      CN          53  0.098330\n",
       "143  2017      DE          70  0.129870\n",
       "144  2017   Other         120  0.222635\n",
       "145  2017      US         235  0.435993\n",
       "146  2018      AT          14  0.023810\n",
       "147  2018      CA          10  0.017007\n",
       "148  2018      CN          77  0.130952\n",
       "149  2018      DE          82  0.139456\n",
       "150  2018   Other         122  0.207483\n",
       "151  2018      US         283  0.481293\n",
       "152  2019      AT          14  0.020649\n",
       "153  2019      CA          26  0.038348\n",
       "154  2019      CN         106  0.156342\n",
       "155  2019      DE          67  0.098820\n",
       "156  2019   Other         131  0.193215\n",
       "157  2019      US         334  0.492625\n",
       "158  2020      AT          10  0.012610\n",
       "159  2020      CA          16  0.020177\n",
       "160  2020      CN         172  0.216898\n",
       "161  2020      DE          87  0.109710\n",
       "162  2020   Other         196  0.247163\n",
       "163  2020      US         312  0.393443\n",
       "164  2021      AT          19  0.022485\n",
       "165  2021      CA          25  0.029586\n",
       "166  2021      CN         164  0.194083\n",
       "167  2021      DE          81  0.095858\n",
       "168  2021   Other         196  0.231953\n",
       "169  2021      US         360  0.426036"
      ]
     },
     "execution_count": 83,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cntry_ts_prop_df[cntry_ts_prop_df.year >= 2016]\n",
    "# China overtook DE in 2019 as the second largest source of authors"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 84,
   "id": "11e98d40",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5, 1.0, 'number of authros from participating countries over the past 32 years')"
      ]
     },
     "execution_count": 84,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "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": [
    "g = sns.lineplot(x='year', y='year total', hue='country', data = cntry_ts_prop_df)\n",
    "g.set_title('number of authros from participating countries over the past 32 years')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3d03e3c5",
   "metadata": {},
   "source": [
    "### Involving US authors"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 85,
   "id": "66c8814e",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Counter({True: 2104, False: 1136})"
      ]
     },
     "execution_count": 85,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Counter(paper['With US Authors'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 86,
   "id": "84194a2c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.6493827160493827"
      ]
     },
     "execution_count": 86,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "paper[paper['With US Authors']].shape[0]/paper.shape[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 87,
   "id": "0f29caad",
   "metadata": {},
   "outputs": [],
   "source": [
    "def get_total_and_ratio_by_year(DF, subgroup_par):\n",
    "    tuples = []\n",
    "    for group in DF.groupby('Year'):\n",
    "        year = group[0]\n",
    "        total = group[1].shape[0]\n",
    "        for subgroup in group[1].groupby(subgroup_par):\n",
    "            subtype = 'Yes' if subgroup[0] else 'No'\n",
    "            count = subgroup[1].shape[0]\n",
    "            ratio = count / total\n",
    "            tuples.append((year, subtype, count, ratio))\n",
    "    dff = pd.DataFrame(\n",
    "        list(tuples), columns=['year', 'type', 'count', 'ratio']) \n",
    "    return dff"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 88,
   "id": "f19b1b94",
   "metadata": {},
   "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>year</th>\n",
       "      <th>With US Authors</th>\n",
       "      <th>count</th>\n",
       "      <th>Ratio</th>\n",
       "      <th>Year</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1990</td>\n",
       "      <td>No</td>\n",
       "      <td>6</td>\n",
       "      <td>0.115385</td>\n",
       "      <td>1990-01-01</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1990</td>\n",
       "      <td>Yes</td>\n",
       "      <td>46</td>\n",
       "      <td>0.884615</td>\n",
       "      <td>1990-01-01</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1991</td>\n",
       "      <td>No</td>\n",
       "      <td>6</td>\n",
       "      <td>0.120000</td>\n",
       "      <td>1991-01-01</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1991</td>\n",
       "      <td>Yes</td>\n",
       "      <td>44</td>\n",
       "      <td>0.880000</td>\n",
       "      <td>1991-01-01</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1992</td>\n",
       "      <td>No</td>\n",
       "      <td>10</td>\n",
       "      <td>0.188679</td>\n",
       "      <td>1992-01-01</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>1992</td>\n",
       "      <td>Yes</td>\n",
       "      <td>43</td>\n",
       "      <td>0.811321</td>\n",
       "      <td>1992-01-01</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>1993</td>\n",
       "      <td>No</td>\n",
       "      <td>17</td>\n",
       "      <td>0.309091</td>\n",
       "      <td>1993-01-01</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>1993</td>\n",
       "      <td>Yes</td>\n",
       "      <td>38</td>\n",
       "      <td>0.690909</td>\n",
       "      <td>1993-01-01</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>1994</td>\n",
       "      <td>No</td>\n",
       "      <td>8</td>\n",
       "      <td>0.150943</td>\n",
       "      <td>1994-01-01</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>1994</td>\n",
       "      <td>Yes</td>\n",
       "      <td>45</td>\n",
       "      <td>0.849057</td>\n",
       "      <td>1994-01-01</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   year With US Authors  count     Ratio       Year\n",
       "0  1990              No      6  0.115385 1990-01-01\n",
       "1  1990             Yes     46  0.884615 1990-01-01\n",
       "2  1991              No      6  0.120000 1991-01-01\n",
       "3  1991             Yes     44  0.880000 1991-01-01\n",
       "4  1992              No     10  0.188679 1992-01-01\n",
       "5  1992             Yes     43  0.811321 1992-01-01\n",
       "6  1993              No     17  0.309091 1993-01-01\n",
       "7  1993             Yes     38  0.690909 1993-01-01\n",
       "8  1994              No      8  0.150943 1994-01-01\n",
       "9  1994             Yes     45  0.849057 1994-01-01"
      ]
     },
     "execution_count": 88,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "withus_authors = get_total_and_ratio_by_year(paper, 'With US Authors')\n",
    "withus_authors.rename(columns = {\n",
    "#     'year': 'Year',\n",
    "    'type': 'With US Authors', \n",
    "    'ratio': 'Ratio'}, inplace=True)\n",
    "withus_authors['Year'] = pd.to_datetime(withus_authors['year'], format='%Y')\n",
    "withus_authors.head(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 89,
   "id": "735cc45e",
   "metadata": {},
   "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>year</th>\n",
       "      <th>With US Authors</th>\n",
       "      <th>count</th>\n",
       "      <th>Ratio</th>\n",
       "      <th>Year</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>40</th>\n",
       "      <td>2010</td>\n",
       "      <td>No</td>\n",
       "      <td>40</td>\n",
       "      <td>0.366972</td>\n",
       "      <td>2010-01-01</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>41</th>\n",
       "      <td>2010</td>\n",
       "      <td>Yes</td>\n",
       "      <td>69</td>\n",
       "      <td>0.633028</td>\n",
       "      <td>2010-01-01</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>42</th>\n",
       "      <td>2011</td>\n",
       "      <td>No</td>\n",
       "      <td>63</td>\n",
       "      <td>0.529412</td>\n",
       "      <td>2011-01-01</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>43</th>\n",
       "      <td>2011</td>\n",
       "      <td>Yes</td>\n",
       "      <td>56</td>\n",
       "      <td>0.470588</td>\n",
       "      <td>2011-01-01</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>62</th>\n",
       "      <td>2021</td>\n",
       "      <td>No</td>\n",
       "      <td>70</td>\n",
       "      <td>0.411765</td>\n",
       "      <td>2021-01-01</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>63</th>\n",
       "      <td>2021</td>\n",
       "      <td>Yes</td>\n",
       "      <td>100</td>\n",
       "      <td>0.588235</td>\n",
       "      <td>2021-01-01</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    year With US Authors  count     Ratio       Year\n",
       "40  2010              No     40  0.366972 2010-01-01\n",
       "41  2010             Yes     69  0.633028 2010-01-01\n",
       "42  2011              No     63  0.529412 2011-01-01\n",
       "43  2011             Yes     56  0.470588 2011-01-01\n",
       "62  2021              No     70  0.411765 2021-01-01\n",
       "63  2021             Yes    100  0.588235 2021-01-01"
      ]
     },
     "execution_count": 89,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "withus_authors[withus_authors.year.isin([2010, 2011, 2021])]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 90,
   "id": "400a95cc",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2104"
      ]
     },
     "execution_count": 90,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "withus_authors[withus_authors['With US Authors'] == 'Yes']['count'].sum()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1a2fe88b",
   "metadata": {},
   "source": [
    "## Affiliation types"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 91,
   "id": "0633cb73",
   "metadata": {},
   "outputs": [],
   "source": [
    "tuples = []\n",
    "for group in author.groupby('Year'):\n",
    "    year = group[0]\n",
    "    total = group[1].shape[0]\n",
    "    for subgroup in group[1].groupby('Binary Type'):\n",
    "        aff_type = subgroup[0]\n",
    "        count = subgroup[1].shape[0]\n",
    "        ratio = count / total\n",
    "        tuples.append((year, aff_type, count, ratio))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 92,
   "id": "3ba2b8c1",
   "metadata": {},
   "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>year</th>\n",
       "      <th>type</th>\n",
       "      <th>count</th>\n",
       "      <th>ratio</th>\n",
       "      <th>Year</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1990</td>\n",
       "      <td>Education</td>\n",
       "      <td>72</td>\n",
       "      <td>0.605042</td>\n",
       "      <td>1990-01-01</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1990</td>\n",
       "      <td>Non-Education</td>\n",
       "      <td>47</td>\n",
       "      <td>0.394958</td>\n",
       "      <td>1990-01-01</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1991</td>\n",
       "      <td>Education</td>\n",
       "      <td>65</td>\n",
       "      <td>0.507812</td>\n",
       "      <td>1991-01-01</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1991</td>\n",
       "      <td>Non-Education</td>\n",
       "      <td>63</td>\n",
       "      <td>0.492188</td>\n",
       "      <td>1991-01-01</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1992</td>\n",
       "      <td>Education</td>\n",
       "      <td>55</td>\n",
       "      <td>0.413534</td>\n",
       "      <td>1992-01-01</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>1992</td>\n",
       "      <td>Non-Education</td>\n",
       "      <td>78</td>\n",
       "      <td>0.586466</td>\n",
       "      <td>1992-01-01</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>1993</td>\n",
       "      <td>Education</td>\n",
       "      <td>64</td>\n",
       "      <td>0.496124</td>\n",
       "      <td>1993-01-01</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>1993</td>\n",
       "      <td>Non-Education</td>\n",
       "      <td>65</td>\n",
       "      <td>0.503876</td>\n",
       "      <td>1993-01-01</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>1994</td>\n",
       "      <td>Education</td>\n",
       "      <td>86</td>\n",
       "      <td>0.627737</td>\n",
       "      <td>1994-01-01</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>1994</td>\n",
       "      <td>Non-Education</td>\n",
       "      <td>51</td>\n",
       "      <td>0.372263</td>\n",
       "      <td>1994-01-01</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   year           type  count     ratio       Year\n",
       "0  1990      Education     72  0.605042 1990-01-01\n",
       "1  1990  Non-Education     47  0.394958 1990-01-01\n",
       "2  1991      Education     65  0.507812 1991-01-01\n",
       "3  1991  Non-Education     63  0.492188 1991-01-01\n",
       "4  1992      Education     55  0.413534 1992-01-01\n",
       "5  1992  Non-Education     78  0.586466 1992-01-01\n",
       "6  1993      Education     64  0.496124 1993-01-01\n",
       "7  1993  Non-Education     65  0.503876 1993-01-01\n",
       "8  1994      Education     86  0.627737 1994-01-01\n",
       "9  1994  Non-Education     51  0.372263 1994-01-01"
      ]
     },
     "execution_count": 92,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "binary_type_df = pd.DataFrame(list(tuples), columns=['year', 'type', 'count', 'ratio']) \n",
    "binary_type_df['Year'] = pd.to_datetime(binary_type_df['year'], format='%Y')\n",
    "binary_type_df.replace({\n",
    "    'education': 'Education',\n",
    "    'non-education': 'Non-Education'\n",
    "}, inplace= True)\n",
    "binary_type_df.head(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 93,
   "id": "4e4fa387",
   "metadata": {},
   "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>year</th>\n",
       "      <th>type</th>\n",
       "      <th>count</th>\n",
       "      <th>ratio</th>\n",
       "      <th>Year</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>59</th>\n",
       "      <td>2019</td>\n",
       "      <td>Non-Education</td>\n",
       "      <td>112</td>\n",
       "      <td>0.165192</td>\n",
       "      <td>2019-01-01</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>60</th>\n",
       "      <td>2020</td>\n",
       "      <td>Education</td>\n",
       "      <td>665</td>\n",
       "      <td>0.838588</td>\n",
       "      <td>2020-01-01</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>61</th>\n",
       "      <td>2020</td>\n",
       "      <td>Non-Education</td>\n",
       "      <td>128</td>\n",
       "      <td>0.161412</td>\n",
       "      <td>2020-01-01</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>62</th>\n",
       "      <td>2021</td>\n",
       "      <td>Education</td>\n",
       "      <td>706</td>\n",
       "      <td>0.835503</td>\n",
       "      <td>2021-01-01</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>63</th>\n",
       "      <td>2021</td>\n",
       "      <td>Non-Education</td>\n",
       "      <td>139</td>\n",
       "      <td>0.164497</td>\n",
       "      <td>2021-01-01</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    year           type  count     ratio       Year\n",
       "59  2019  Non-Education    112  0.165192 2019-01-01\n",
       "60  2020      Education    665  0.838588 2020-01-01\n",
       "61  2020  Non-Education    128  0.161412 2020-01-01\n",
       "62  2021      Education    706  0.835503 2021-01-01\n",
       "63  2021  Non-Education    139  0.164497 2021-01-01"
      ]
     },
     "execution_count": 93,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "binary_type_df.tail(5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 94,
   "id": "93a93d53",
   "metadata": {},
   "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>type</th>\n",
       "      <th>count</th>\n",
       "      <th>ratio</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>education</td>\n",
       "      <td>4688</td>\n",
       "      <td>0.712895</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>non-education</td>\n",
       "      <td>1888</td>\n",
       "      <td>0.287105</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "            type  count     ratio\n",
       "0      education   4688  0.712895\n",
       "1  non-education   1888  0.287105"
      ]
     },
     "execution_count": 94,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# edu and non-edu within us\n",
    "dic = dict(Counter(author[author['Affiliation Country Code'] == 'US']['Binary Type']))\n",
    "dff1 = pd.DataFrame(dic.items(), columns = ['type', 'count'])\n",
    "dff1['ratio'] = dff1['count'] / dff1['count'].sum()\n",
    "dff1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 95,
   "id": "5111e109",
   "metadata": {},
   "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>type</th>\n",
       "      <th>count</th>\n",
       "      <th>ratio</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>education</td>\n",
       "      <td>4732</td>\n",
       "      <td>0.808612</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>non-education</td>\n",
       "      <td>1120</td>\n",
       "      <td>0.191388</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "            type  count     ratio\n",
       "0      education   4732  0.808612\n",
       "1  non-education   1120  0.191388"
      ]
     },
     "execution_count": 95,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# edu and non-edu outside of the us\n",
    "dic = dict(Counter(author[author['Affiliation Country Code'] != 'US']['Binary Type']))\n",
    "dff2 = pd.DataFrame(dic.items(), columns = ['type', 'count'])\n",
    "dff2['ratio'] = dff2['count'] / dff2['count'].sum()\n",
    "dff2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 96,
   "id": "97ec4921",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.6276595744680851"
      ]
     },
     "execution_count": 96,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# the proportion of nonedu from us against all nonedu\n",
    "dff1.iloc[1,1] / (dff1.iloc[1,1] + dff2.iloc[1,1])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 97,
   "id": "d51bf75a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.3723404255319149"
      ]
     },
     "execution_count": 97,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# the proportion of nonedu from outside the us against all nonedu\n",
    "dff2.iloc[1,1] / (dff1.iloc[1,1] + dff2.iloc[1,1])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 98,
   "id": "543d2593",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.8086124401913876"
      ]
     },
     "execution_count": 98,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# the proportion of edu against all affs when we only consider outside the us\n",
    "dff2.iloc[0,1] / (dff2.iloc[0,1] + dff2.iloc[1,1])"
   ]
  }
 ],
 "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.8.12"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}

back to top

Software Heritage — Copyright (C) 2015–2026, The Software Heritage developers. License: GNU AGPLv3+.
The source code of Software Heritage itself is available on our development forge.
The source code files archived by Software Heritage are available under their own copyright and licenses.
Terms of use: Archive access, API— Content policy— Contact— JavaScript license information— Web API