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.
ZSI_Reconnect_China/WOS/wos_processing.ipynb

3005 lines
2.1 MiB
Plaintext

2 years ago
{
"cells": [
{
"cell_type": "code",
2 years ago
"execution_count": 1,
"metadata": {},
2 years ago
"outputs": [],
"source": [
2 years ago
"import numpy as np\n",
2 years ago
"import pandas as pd\n",
"import os\n",
1 year ago
"import shutil\n",
"from flashgeotext.geotext import GeoText"
2 years ago
]
},
{
"cell_type": "code",
2 years ago
"execution_count": 2,
"metadata": {},
"outputs": [],
2 years ago
"source": [
"workdir_path=r\"wos_extract\"\n",
"outfile='wos_extract_complete.csv'\n",
2 years ago
"# with_header=True\n",
"# for root, dirs, files in os.walk(workdir_path):\n",
"# for filename in files:\n",
"# if filename.startswith(\"wosexport\"):\n",
"# path=os.path.join(root, filename)\n",
"# print(path)\n",
"# chunk = pd.read_excel(path)\n",
"# chunk.to_csv(outfile, mode=\"a\", index=False, header=with_header, sep=\"\\t\")\n",
"# with_header = False"
]
2 years ago
},
{
"cell_type": "code",
2 years ago
"execution_count": 3,
"metadata": {},
2 years ago
"outputs": [],
"source": [
2 years ago
"record_col=\"UT (Unique WOS ID)\""
]
2 years ago
},
{
"cell_type": "code",
2 years ago
"execution_count": 4,
"metadata": {},
2 years ago
"outputs": [],
"source": [
2 years ago
"wos = pd.read_csv(outfile, sep=\"\\t\",low_memory=False)\n",
"metrix = pd.read_excel(\"sm_journal_classification.xlsx\", sheet_name=\"Journal_Classification\")\n",
"\n",
"\n",
"metrix = metrix.set_index([c for c in metrix.columns if \"issn\" not in c]).stack().reset_index()\n",
"metrix = metrix.rename(columns={'level_6':\"issn_type\", 0:\"issn\"})\n",
"metrix[\"issn\"]=metrix[\"issn\"].str.replace(\"-\",\"\").str.lower().str.strip()\n",
"\n",
"wos[\"issn\"] = wos[\"ISSN\"].str.replace(\"-\",\"\").str.lower().str.strip()\n",
"wos[\"eissn\"] = wos[\"eISSN\"].str.replace(\"-\",\"\").str.lower().str.strip()\n",
"wos = wos.set_index([c for c in wos.columns if \"issn\" not in c]).stack().reset_index()\n",
"wos = wos.rename(columns={'level_72':\"issn_var\", 0:\"issn\"})\n",
"\n",
"wos_merge = wos.merge(metrix, on=\"issn\", how=\"left\")\n",
"wos = wos_merge.sort_values(by=\"issn_var\",ascending=False).drop_duplicates(subset=record_col)"
]
2 years ago
},
{
"cell_type": "code",
2 years ago
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": "0 Publication Type\n1 Authors\n2 Book Authors\n3 Book Editors\n4 Book Group Authors\n ... \n76 SubField_English\n77 2.00 SEQ\n78 Source_title\n79 srcid\n80 issn_type\nLength: 81, dtype: object"
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
2 years ago
],
2 years ago
"source": [
"pd.Series(wos.columns)"
]
2 years ago
},
{
"cell_type": "code",
2 years ago
"execution_count": 6,
"metadata": {},
2 years ago
"outputs": [
{
"data": {
2 years ago
"text/plain": "0 Salucci, Marco/S-8654-2016; Arrebola, Manuel/L...\n9714 Huang, Yu/AAY-5464-2020\n9697 Kakavand, Mohammad Reza Azadi/X-9556-2019; Fen...\n9699 Dong, Sheng/AAE-3619-2021; Soares, Carlos Gued...\n9701 Han, Guoqi/T-7365-2019; Nan, Yang/HKD-9687-202...\n ... \n3066 ; Liotta, Antonio/G-9532-2014\n5097 , 卢帅/AAK-2185-2020; Popp, József/AFN-1250-2022\n11369 NaN\n11368 Rossiter, D G/D-3842-2009\n11362 Jin, Shuanggen/B-8094-2008\nName: Researcher Ids, Length: 9889, dtype: object"
2 years ago
},
2 years ago
"execution_count": 6,
2 years ago
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
2 years ago
"wos[\"Researcher Ids\"]"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": " Publication Type Authors \n16979 J Zhang, MS; Huang, J; Cao, Y; Xiong, CH; Mohamm... \\\n1880 J Zhang, MS; Huang, J; Cao, Y; Xiong, CH; Mohamm... \n\n Book Authors Book Editors Book Group Authors \n16979 NaN NaN NaN \\\n1880 NaN NaN NaN \n\n Author Full Names \n16979 Zhang, Mengshi; Huang, Jian; Cao, Yu; Xiong, C... \\\n1880 Zhang, Mengshi; Huang, Jian; Cao, Yu; Xiong, C... \n\n Book Author Full Names Group Authors \n16979 NaN NaN \\\n1880 NaN NaN \n\n Article Title \n16979 Echo State Network-Enhanced Super-Twisting Con... \\\n1880 Echo State Network-Enhanced Super-Twisting Con... \n\n Source Title ... Web of Science Record \n16979 IEEE-ASME TRANSACTIONS ON MECHATRONICS ... 0 \\\n1880 IEEE-ASME TRANSACTIONS ON MECHATRONICS ... 0 \n\n issn_var issn Domain_English Field_English \n16979 issn 10834435 Applied Sciences Engineering \\\n1880 issn 10834435 Applied Sciences Engineering \n\n SubField_English 2.00 SEQ \n16979 Industrial Engineering & Automation 27 \\\n1880 Industrial Engineering & Automation 27 \n\n Source_title srcid issn_type \n16979 IEEE/ASME Transactions on Mechatronics 19113.0 issn1 \n1880 IEEE/ASME Transactions on Mechatronics 19113.0 issn1 \n\n[2 rows x 81 columns]",
"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>Publication Type</th>\n <th>Authors</th>\n <th>Book Authors</th>\n <th>Book Editors</th>\n <th>Book Group Authors</th>\n <th>Author Full Names</th>\n <th>Book Author Full Names</th>\n <th>Group Authors</th>\n <th>Article Title</th>\n <th>Source Title</th>\n <th>...</th>\n <th>Web of Science Record</th>\n <th>issn_var</th>\n <th>issn</th>\n <th>Domain_English</th>\n <th>Field_English</th>\n <th>SubField_English</th>\n <th>2.00 SEQ</th>\n <th>Source_title</th>\n <th>srcid</th>\n <th>issn_type</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>16979</th>\n <td>J</td>\n <td>Zhang, MS; Huang, J; Cao, Y; Xiong, CH; Mohamm...</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>Zhang, Mengshi; Huang, Jian; Cao, Yu; Xiong, C...</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>Echo State Network-Enhanced Super-Twisting Con...</td>\n <td>IEEE-ASME TRANSACTIONS ON MECHATRONICS</td>\n <td>...</td>\n <td>0</td>\n <td>issn</td>\n <td>10834435</td>\n <td>Applied Sciences</td>\n <td>Engineering</td>\n <td>Industrial Engineering &amp; Automation</td>\n <td>27</td>\n <td>IEEE/ASME Transactions on Mechatronics</td>\n <td>19113.0</td>\n <td>issn1</td>\n </tr>\n <tr>\n <th>1880</th>\n <td>J</td>\n <td>Zhang, MS; Huang, J; Cao, Y; Xiong, CH; Mohamm...</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>Zhang, Mengshi; Huang, Jian; Cao, Yu; Xiong, C...</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>Echo State Network-Enhanced Super-Twisting Con...</td>\n <td>IEEE-ASME TRANSACTIONS ON MECHATRONICS</td>\n <td>...</td>\n <td>0</td>\n <td>issn</td>\n <td>10834435</td>\n <td>Applied Sciences</td>\n <td>Engineering</td>\n <td>Industrial Engineering &amp; Automation</td>\n <td>27</td>\n <td>IEEE/ASME Transactions on Mechatronics</td>\n <td>19113.0</td>\n <td>issn1</td>\n </tr>\n </tbody>\n</table>\n<p>2 rows × 81 columns</p>\n</div>"
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
2 years ago
],
2 years ago
"source": [
"wos[(~wos[\"DOI\"].isna())&(wos[\"DOI\"].duplicated(False))]"
]
2 years ago
},
1 year ago
{
"cell_type": "code",
"execution_count": 11,
"outputs": [
{
"data": {
"text/plain": " UT (Unique WOS ID) Keywords Plus \n0 WOS:000852293800024 CONVOLUTIONAL NEURAL-NETWORK; DEEP LEARNING FR... \\\n9714 WOS:000540750000002 STATE-SPACE RECONSTRUCTION; SURFACE AIR-TEMPER... \n9697 WOS:000600708400002 COMPRESSIVE STRENGTH; MODELS; ADABOOST.RT; DUC... \n9699 WOS:000511965100005 STRUCTURAL RELIABILITY; FAILURE MODES \n9701 WOS:000663142500003 REFLECTED GPS SIGNALS; SOIL-MOISTURE; OCEAN; S... \n... ... ... \n3066 WOS:000528727500074 LOCAL SEARCH; ALGORITHM; VARIANCE; MODEL \n5097 WOS:000596139400001 INDUSTRY 4.0; MANAGEMENT; RISK; ANALYTICS; CHA... \n11369 WOS:000436774300069 NaN \n11368 WOS:000846290700001 PARTIAL LEAST-SQUARES; INFRARED-SPECTROSCOPY; ... \n11362 WOS:000480527800025 MICROWAVE DIELECTRIC BEHAVIOR; GPS SIGNALS; RE... \n\n Author Keywords \n0 Imaging; Three-dimensional displays; Electroma... \\\n9714 NaN \n9697 Plastic hinge length; RC columns; Machine lear... \n9699 system reliability; jacket platform; beta-unzi... \n9701 Cyclone GNSS (CYGNSS); Sea surface wind speed;... \n... ... \n3066 sea surface temperature; sea surface temperatu... \n5097 Big data finance; Big data in financial servic... \n11369 planetary gear; fault diagnosis; VMD; center f... \n11368 soil fertility class; reflectance spectroscopy... \n11362 global navigation satellite system (GNSS)-refl... \n\n Article Title \n0 Artificial Intelligence: New Frontiers in Real... \\\n9714 Detecting causality from time series in a mach... \n9697 Data-Driven Approach to Predict the Plastic Hi... \n9699 System Reliability Analysis of an Offshore Jac... \n9701 Analysis of coastal wind speed retrieval from ... \n... ... \n3066 Improved Particle Swarm Optimization for Sea S... \n5097 Current landscape and influence of big data on... \n11369 Planetary Gear Fault Diagnosis via Feature Ima... \n11368 How Well Can Reflectance Spectroscopy Allocate... \n11362 GNSS-R Soil Moisture Retrieval Based on a XGbo... \n\n Abstract \n0 In recent years, artificial intelligence (AI) ... \n9714 Detecting causality from observational data is... \n9697 Inelastic response of reinforced concrete colu... \n9699 This study investigates strategies for solving... \n9701 This paper demonstrates the capability and per... \n... ... \n3066 The Sea Surface Temperature (SST) is one of th... \n5097 Big data is one of the most recent business an... \n11369 Poor working environment leads to frequent fai... \n11368 Fertilization decisions depend on the measurem... \n11362 Global navigation satellite system (GNSS)-refl... \n\n[9889 rows x 5 columns]",
"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>UT (Unique WOS ID)</th>\n <th>Keywords Plus</th>\n <th>Author Keywords</th>\n <th>Article Title</th>\n <th>Abstract</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>WOS:000852293800024</td>\n <td>CONVOLUTIONAL NEURAL-NETWORK; DEEP LEARNING FR...</td>\n <td>Imaging; Three-dimensional displays; Electroma...</td>\n <td>Artificial Intelligence: New Frontiers in Real...</td>\n <td>In recent years, artificial intelligence (AI) ...</td>\n </tr>\n <tr>\n <th>9714</th>\n <td>WOS:000540750000002</td>\n <td>STATE-SPACE RECONSTRUCTION; SURFACE AIR-TEMPER...</td>\n <td>NaN</td>\n <td>Detecting causality from time series in a mach...</td>\n <td>Detecting causality from observational data is...</td>\n </tr>\n <tr>\n <th>9697</th>\n <td>WOS:000600708400002</td>\n <td>COMPRESSIVE STRENGTH; MODELS; ADABOOST.RT; DUC...</td>\n <td>Plastic hinge length; RC columns; Machine lear...</td>\n <td>Data-Driven Approach to Predict the Plastic Hi...</td>\n <td>Inelastic response of reinforced concrete colu...</td>\n </tr>\n <tr>\n <th>9699</th>\n <td>WOS:000511965100005</td>\n <td>STRUCTURAL RELIABILITY; FAILURE MODES</td>\n <td>system reliability; jacket platform; beta-unzi...</td>\n <td>System Reliability Analysis of an Offshore Jac...</td>\n <td>This study investigates strategies for solving...</td>\n </tr>\n <tr>\n <th>9701</th>\n <td>WOS:000663142500003</td>\n <td>REFLECTED GPS SIGNALS; SOIL-MOISTURE; OCEAN; S...</td>\n <td>Cyclone GNSS (CYGNSS); Sea surface wind speed;...</td>\n <td>Analysis of coastal wind speed retrieval from ...</td>\n <td>This paper demonstrates the capability and per...</td>\n </tr>\n <tr>\n <th>...</th>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n </tr>\n <tr>\n <th>3066</th>\n <td>WOS:000528727500074</td>\n <td>LOCAL SEARCH; ALGORITHM; VARIANCE; MODEL</td>\n <td>sea surface temperature; sea surface temperatu...</td>\n <td>Improved Particle Swarm Optimization for Sea S...</td>\n <td>The Sea Surface Temperature (SST) is one of th...</td>\n </tr>\n <tr>\n <th>5097</th>\n <td>WOS:000596139400001</td>\n <td>INDUSTRY 4.0; MANAGEMENT; RISK; ANALYTICS; CHA...</td>\n <td>Big data finance; Big data in financial servic...</td>\n <td>Current landscape and influence of big data on...</td>\n <td>Big data is one of the most recent business an...</td>\n </tr>\n <tr>\n <th>11369</th>\n <td>WOS:000436774300069</td>\n <td>NaN</td>\n <td>planetary gear; fault diagnosis; VMD; center f...</td>\n <td>Planetary Gear Fault Diagnosis via Feature Ima...</td>\n <td>Poor working environment leads to frequent fai...</td>\n </tr>\n <tr>\n <th>11368</th>\n <td>WOS:000846290700001</td>\n <td>PARTIAL LEAST-SQUARES; INFRARED-SPECTROSCOPY; ...</td>\n <td>soil fertility class; reflectance spectroscopy...</td>\n <td>How Well Can Reflectance Spectroscopy Allocate...</td>\n <td>Fertilization decisions depend on the measurem...</td>\n </tr>\n <tr>\n <th>11362</th>\n <td>WOS:000480527800025</td>\n <td>MICROWAVE DIELECTRIC BEHAVIOR; GPS SIGNALS; RE...</td>\n <td>global navigation satellite system (GNSS)-refl...</td>\n <td>GNSS-R Soil Moisture Retrieval Based on a XGbo...</td>\n <td>Global navigation satellite system (GNSS)-refl...</td>\n </tr>\n </tbody>\n</table>\n<p>9889 rows × 5 columns</p>\n</div>"
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"wos[[record_col,\"Keywords Plus\",\"Author Keywords\",\"Article Title\",\"Abstract\"]]\n"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "code",
"execution_count": 22,
"outputs": [
{
"data": {
"text/plain": " UT (Unique WOS ID) level_1 keyword\n0 WOS:000209536100003 11117 NaN\n1 WOS:000297893800037 10831 ADAPTIVE DYNAMIC SURFACE CONTROL\n2 WOS:000297893800037 10831 NEURAL COMPENSATOR\n3 WOS:000297893800037 10831 BUCK CONVERTER\n4 WOS:000297893800037 10831 FINITE-TIME IDENTIFIER\n... ... ... ...\n94060 WOS:000947693400001 240 EXPRESSION\n94061 WOS:000947693400001 240 RNALOCATE\n94062 WOS:000947693400001 240 PROTEINS\n94063 WOS:000947693400001 240 RESOURCE\n94064 WOS:000947693400001 240 CELLS\n\n[94065 rows x 3 columns]",
"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>UT (Unique WOS ID)</th>\n <th>level_1</th>\n <th>keyword</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>WOS:000209536100003</td>\n <td>11117</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>1</th>\n <td>WOS:000297893800037</td>\n <td>10831</td>\n <td>ADAPTIVE DYNAMIC SURFACE CONTROL</td>\n </tr>\n <tr>\n <th>2</th>\n <td>WOS:000297893800037</td>\n <td>10831</td>\n <td>NEURAL COMPENSATOR</td>\n </tr>\n <tr>\n <th>3</th>\n <td>WOS:000297893800037</td>\n <td>10831</td>\n <td>BUCK CONVERTER</td>\n </tr>\n <tr>\n <th>4</th>\n <td>WOS:000297893800037</td>\n <td>10831</td>\n <td>FINITE-TIME IDENTIFIER</td>\n </tr>\n <tr>\n <th>...</th>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n </tr>\n <tr>\n <th>94060</th>\n <td>WOS:000947693400001</td>\n <td>240</td>\n <td>EXPRESSION</td>\n </tr>\n <tr>\n <th>94061</th>\n <td>WOS:000947693400001</td>\n <td>240</td>\n <td>RNALOCATE</td>\n </tr>\n <tr>\n <th>94062</th>\n <td>WOS:000947693400001</td>\n <td>240</td>\n <td>PROTEINS</td>\n </tr>\n <tr>\n <th>94063</th>\n <td>WOS:000947693400001</td>\n <td>240</td>\n <td>RESOURCE</td>\n </tr>\n <tr>\n <th>94064</th>\n <td>WOS:000947693400001</td>\n <td>240</td>\n <td>CELLS</td>\n </tr>\n </tbody>\n</table>\n<p>94065 rows × 3 columns</p>\n</div>"
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"kw_df = pd.DataFrame()\n",
"for c in [\"Keywords Plus\",\"Author Keywords\"]:\n",
" kwp = wos.groupby(record_col)[c].apply(lambda x: x.str.split(';')).explode().str.strip().str.upper()\n",
" kwp.name = 'keyword'\n",
" kw_df = pd.concat([kwp.reset_index(),kw_df],ignore_index=True)\n",
"kw_df"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "code",
"execution_count": 39,
"outputs": [
{
"data": {
"text/plain": "Downloading pytorch_model.bin: 0%| | 0.00/438M [00:00<?, ?B/s]",
"application/vnd.jupyter.widget-view+json": {
"version_major": 2,
"version_minor": 0,
"model_id": "43fb040512964c61bdcca3e35d4e9778"
}
},
"metadata": {},
"output_type": "display_data"
},
{
"ename": "ChunkedEncodingError",
"evalue": "(\"Connection broken: ConnectionResetError(10054, 'A létező kapcsolatot a távoli állomás kényszerítetten bezárta', None, 10054, None)\", ConnectionResetError(10054, 'A létező kapcsolatot a távoli állomás kényszerítetten bezárta', None, 10054, None))",
"output_type": "error",
"traceback": [
"\u001B[1;31m---------------------------------------------------------------------------\u001B[0m",
"\u001B[1;31mConnectionResetError\u001B[0m Traceback (most recent call last)",
"File \u001B[1;32m~\\Anaconda3\\envs\\MOME_BIGDATA\\lib\\site-packages\\urllib3\\response.py:444\u001B[0m, in \u001B[0;36mHTTPResponse._error_catcher\u001B[1;34m(self)\u001B[0m\n\u001B[0;32m 443\u001B[0m \u001B[38;5;28;01mtry\u001B[39;00m:\n\u001B[1;32m--> 444\u001B[0m \u001B[38;5;28;01myield\u001B[39;00m\n\u001B[0;32m 446\u001B[0m \u001B[38;5;28;01mexcept\u001B[39;00m SocketTimeout:\n\u001B[0;32m 447\u001B[0m \u001B[38;5;66;03m# FIXME: Ideally we'd like to include the url in the ReadTimeoutError but\u001B[39;00m\n\u001B[0;32m 448\u001B[0m \u001B[38;5;66;03m# there is yet no clean way to get at it from this context.\u001B[39;00m\n",
"File \u001B[1;32m~\\Anaconda3\\envs\\MOME_BIGDATA\\lib\\site-packages\\urllib3\\response.py:567\u001B[0m, in \u001B[0;36mHTTPResponse.read\u001B[1;34m(self, amt, decode_content, cache_content)\u001B[0m\n\u001B[0;32m 566\u001B[0m \u001B[38;5;28;01mwith\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_error_catcher():\n\u001B[1;32m--> 567\u001B[0m data \u001B[38;5;241m=\u001B[39m \u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43m_fp_read\u001B[49m\u001B[43m(\u001B[49m\u001B[43mamt\u001B[49m\u001B[43m)\u001B[49m \u001B[38;5;28;01mif\u001B[39;00m \u001B[38;5;129;01mnot\u001B[39;00m fp_closed \u001B[38;5;28;01melse\u001B[39;00m \u001B[38;5;124mb\u001B[39m\u001B[38;5;124m\"\u001B[39m\u001B[38;5;124m\"\u001B[39m\n\u001B[0;32m 568\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m amt \u001B[38;5;129;01mis\u001B[39;00m \u001B[38;5;28;01mNone\u001B[39;00m:\n",
"File \u001B[1;32m~\\Anaconda3\\envs\\MOME_BIGDATA\\lib\\site-packages\\urllib3\\response.py:533\u001B[0m, in \u001B[0;36mHTTPResponse._fp_read\u001B[1;34m(self, amt)\u001B[0m\n\u001B[0;32m 531\u001B[0m \u001B[38;5;28;01melse\u001B[39;00m:\n\u001B[0;32m 532\u001B[0m \u001B[38;5;66;03m# StringIO doesn't like amt=None\u001B[39;00m\n\u001B[1;32m--> 533\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43m_fp\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mread\u001B[49m\u001B[43m(\u001B[49m\u001B[43mamt\u001B[49m\u001B[43m)\u001B[49m \u001B[38;5;28;01mif\u001B[39;00m amt \u001B[38;5;129;01mis\u001B[39;00m \u001B[38;5;129;01mnot\u001B[39;00m \u001B[38;5;28;01mNone\u001B[39;00m \u001B[38;5;28;01melse\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_fp\u001B[38;5;241m.\u001B[39mread()\n",
"File \u001B[1;32m~\\Anaconda3\\envs\\MOME_BIGDATA\\lib\\http\\client.py:463\u001B[0m, in \u001B[0;36mHTTPResponse.read\u001B[1;34m(self, amt)\u001B[0m\n\u001B[0;32m 462\u001B[0m b \u001B[38;5;241m=\u001B[39m \u001B[38;5;28mbytearray\u001B[39m(amt)\n\u001B[1;32m--> 463\u001B[0m n \u001B[38;5;241m=\u001B[39m \u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mreadinto\u001B[49m\u001B[43m(\u001B[49m\u001B[43mb\u001B[49m\u001B[43m)\u001B[49m\n\u001B[0;32m 464\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[38;5;28mmemoryview\u001B[39m(b)[:n]\u001B[38;5;241m.\u001B[39mtobytes()\n",
"File \u001B[1;32m~\\Anaconda3\\envs\\MOME_BIGDATA\\lib\\http\\client.py:507\u001B[0m, in \u001B[0;36mHTTPResponse.readinto\u001B[1;34m(self, b)\u001B[0m\n\u001B[0;32m 504\u001B[0m \u001B[38;5;66;03m# we do not use _safe_read() here because this may be a .will_close\u001B[39;00m\n\u001B[0;32m 505\u001B[0m \u001B[38;5;66;03m# connection, and the user is reading more bytes than will be provided\u001B[39;00m\n\u001B[0;32m 506\u001B[0m \u001B[38;5;66;03m# (for example, reading in 1k chunks)\u001B[39;00m\n\u001B[1;32m--> 507\u001B[0m n \u001B[38;5;241m=\u001B[39m \u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mfp\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mreadinto\u001B[49m\u001B[43m(\u001B[49m\u001B[43mb\u001B[49m\u001B[43m)\u001B[49m\n\u001B[0;32m 508\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m \u001B[38;5;129;01mnot\u001B[39;00m n \u001B[38;5;129;01mand\u001B[39;00m b:\n\u001B[0;32m 509\u001B[0m \u001B[38;5;66;03m# Ideally, we would raise IncompleteRead if the content-length\u001B[39;00m\n\u001B[0;32m 510\u001B[0m \u001B[38;5;66;03m# wasn't satisfied, but it might break compatibility.\u001B[39;00m\n",
"File \u001B[1;32m~\\Anaconda3\\envs\\MOME_BIGDATA\\lib\\socket.py:704\u001B[0m, in \u001B[0;36mSocketIO.readinto\u001B[1;34m(self, b)\u001B[0m\n\u001B[0;32m 703\u001B[0m \u001B[38;5;28;01mtry\u001B[39;00m:\n\u001B[1;32m--> 704\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43m_sock\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mrecv_into\u001B[49m\u001B[43m(\u001B[49m\u001B[43mb\u001B[49m\u001B[43m)\u001B[49m\n\u001B[0;32m 705\u001B[0m \u001B[38;5;28;01mexcept\u001B[39;00m timeout:\n",
"File \u001B[1;32m~\\Anaconda3\\envs\\MOME_BIGDATA\\lib\\ssl.py:1242\u001B[0m, in \u001B[0;36mSSLSocket.recv_into\u001B[1;34m(self, buffer, nbytes, flags)\u001B[0m\n\u001B[0;32m 1239\u001B[0m \u001B[38;5;28;01mraise\u001B[39;00m \u001B[38;5;167;01mValueError\u001B[39;00m(\n\u001B[0;32m 1240\u001B[0m \u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mnon-zero flags not allowed in calls to recv_into() on \u001B[39m\u001B[38;5;132;01m%s\u001B[39;00m\u001B[38;5;124m\"\u001B[39m \u001B[38;5;241m%\u001B[39m\n\u001B[0;32m 1241\u001B[0m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m\u001B[38;5;18m__class__\u001B[39m)\n\u001B[1;32m-> 1242\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mread\u001B[49m\u001B[43m(\u001B[49m\u001B[43mnbytes\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mbuffer\u001B[49m\u001B[43m)\u001B[49m\n\u001B[0;32m 1243\u001B[0m \u001B[38;5;28;01melse\u001B[39;00m:\n",
"File \u001B[1;32m~\\Anaconda3\\envs\\MOME_BIGDATA\\lib\\ssl.py:1100\u001B[0m, in \u001B[0;36mSSLSocket.read\u001B[1;34m(self, len, buffer)\u001B[0m\n\u001B[0;32m 1099\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m buffer \u001B[38;5;129;01mis\u001B[39;00m \u001B[38;5;129;01mnot\u001B[39;00m \u001B[38;5;28;01mNone\u001B[39;00m:\n\u001B[1;32m-> 1100\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43m_sslobj\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mread\u001B[49m\u001B[43m(\u001B[49m\u001B[38;5;28;43mlen\u001B[39;49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mbuffer\u001B[49m\u001B[43m)\u001B[49m\n\u001B[0;32m 1101\u001B[0m \u001B[38;5;28;01melse\u001B[39;00m:\n",
"\u001B[1;31mConnectionResetError\u001B[0m: [WinError 10054] A létező kapcsolatot a távoli állomás kényszerítetten bezárta",
"\nDuring handling of the above exception, another exception occurred:\n",
"\u001B[1;31mProtocolError\u001B[0m Traceback (most recent call last)",
"File \u001B[1;32m~\\Anaconda3\\envs\\MOME_BIGDATA\\lib\\site-packages\\requests\\models.py:816\u001B[0m, in \u001B[0;36mResponse.iter_content.<locals>.generate\u001B[1;34m()\u001B[0m\n\u001B[0;32m 815\u001B[0m \u001B[38;5;28;01mtry\u001B[39;00m:\n\u001B[1;32m--> 816\u001B[0m \u001B[38;5;28;01myield from\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mraw\u001B[38;5;241m.\u001B[39mstream(chunk_size, decode_content\u001B[38;5;241m=\u001B[39m\u001B[38;5;28;01mTrue\u001B[39;00m)\n\u001B[0;32m 817\u001B[0m \u001B[38;5;28;01mexcept\u001B[39;00m ProtocolError \u001B[38;5;28;01mas\u001B[39;00m e:\n",
"File \u001B[1;32m~\\Anaconda3\\envs\\MOME_BIGDATA\\lib\\site-packages\\urllib3\\response.py:628\u001B[0m, in \u001B[0;36mHTTPResponse.stream\u001B[1;34m(self, amt, decode_content)\u001B[0m\n\u001B[0;32m 627\u001B[0m \u001B[38;5;28;01mwhile\u001B[39;00m \u001B[38;5;129;01mnot\u001B[39;00m is_fp_closed(\u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_fp):\n\u001B[1;32m--> 628\u001B[0m data \u001B[38;5;241m=\u001B[39m \u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mread\u001B[49m\u001B[43m(\u001B[49m\u001B[43mamt\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mamt\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mdecode_content\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mdecode_content\u001B[49m\u001B[43m)\u001B[49m\n\u001B[0;32m 630\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m data:\n",
"File \u001B[1;32m~\\Anaconda3\\envs\\MOME_BIGDATA\\lib\\site-packages\\urllib3\\response.py:593\u001B[0m, in \u001B[0;36mHTTPResponse.read\u001B[1;34m(self, amt, decode_content, cache_content)\u001B[0m\n\u001B[0;32m 584\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39menforce_content_length \u001B[38;5;129;01mand\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mlength_remaining \u001B[38;5;129;01mnot\u001B[39;00m \u001B[38;5;129;01min\u001B[39;00m (\n\u001B[0;32m 585\u001B[0m \u001B[38;5;241m0\u001B[39m,\n\u001B[0;32m 586\u001B[0m \u001B[38;5;28;01mNone\u001B[39;00m,\n\u001B[1;32m (...)\u001B[0m\n\u001B[0;32m 591\u001B[0m \u001B[38;5;66;03m# raised during streaming, so all calls with incorrect\u001B[39;00m\n\u001B[0;32m 592\u001B[0m \u001B[38;5;66;03m# Content-Length are caught.\u001B[39;00m\n\u001B[1;32m--> 593\u001B[0m \u001B[38;5;28;01mraise\u001B[39;00m IncompleteRead(\u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_fp_bytes_read, \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mlength_remaining)\n\u001B[0;32m 595\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m data:\n",
"File \u001B[1;32m~\\Anaconda3\\envs\\MOME_BIGDATA\\lib\\contextlib.py:137\u001B[0m, in \u001B[0;36m_GeneratorContextManager.__exit__\u001B[1;34m(self, typ, value, traceback)\u001B[0m\n\u001B[0;32m 136\u001B[0m \u001B[38;5;28;01mtry\u001B[39;00m:\n\u001B[1;32m--> 137\u001B[0m \u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mgen\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mthrow\u001B[49m\u001B[43m(\u001B[49m\u001B[43mtyp\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mvalue\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mtraceback\u001B[49m\u001B[43m)\u001B[49m\n\u001B[0;32m 138\u001B[0m \u001B[38;5;28;01mexcept\u001B[39;00m \u001B[38;5;167;01mStopIteration\u001B[39;00m \u001B[38;5;28;01mas\u001B[39;00m exc:\n\u001B[0;32m 139\u001B[0m \u001B[38;5;66;03m# Suppress StopIteration *unless* it's the same exception that\u001B[39;00m\n\u001B[0;32m 140\u001B[0m \u001B[38;5;66;03m# was passed to throw(). This prevents a StopIteration\u001B[39;00m\n\u001B[0;32m 141\u001B[0m \u001B[38;5;66;03m# raised inside the \"with\" statement from being suppressed.\u001B[39;00m\n",
"File \u001B[1;32m~\\Anaconda3\\envs\\MOME_BIGDATA\\lib\\site-packages\\urllib3\\response.py:461\u001B[0m, in \u001B[0;36mHTTPResponse._error_catcher\u001B[1;34m(self)\u001B[0m\n\u001B[0;32m 459\u001B[0m \u001B[38;5;28;01mexcept\u001B[39;00m (HTTPException, SocketError) \u001B[38;5;28;01mas\u001B[39;00m e:\n\u001B[0;32m 460\u001B[0m \u001B[38;5;66;03m# This includes IncompleteRead.\u001B[39;00m\n\u001B[1;32m--> 461\u001B[0m \u001B[38;5;28;01mraise\u001B[39;00m ProtocolError(\u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mConnection broken: \u001B[39m\u001B[38;5;132;01m%r\u001B[39;00m\u001B[38;5;124m\"\u001B[39m \u001B[38;5;241m%\u001B[39m e, e)\n\u001B[0;32m 463\u001B[0m \u001B[38;5;66;03m# If no exception is thrown, we should avoid cleaning up\u001B[39;00m\n\u001B[0;32m 464\u001B[0m \u001B[38;5;66;03m# unnecessarily.\u001B[39;00m\n",
"\u001B[1;31mProtocolError\u001B[0m: (\"Connection broken: ConnectionResetError(10054, 'A létező kapcsolatot a távoli állomás kényszerítetten bezárta', None, 10054, None)\", ConnectionResetError(10054, 'A létező kapcsolatot a távoli állomás kényszerítetten bezárta', None, 10054, None))",
"\nDuring handling of the above exception, another exception occurred:\n",
"\u001B[1;31mChunkedEncodingError\u001B[0m Traceback (most recent call last)",
"Cell \u001B[1;32mIn[39], line 7\u001B[0m\n\u001B[0;32m 4\u001B[0m \u001B[38;5;66;03m# Uses stopwords for english from NLTK, and all puntuation characters by\u001B[39;00m\n\u001B[0;32m 5\u001B[0m \u001B[38;5;66;03m# default\u001B[39;00m\n\u001B[0;32m 6\u001B[0m r \u001B[38;5;241m=\u001B[39m Rake()\n\u001B[1;32m----> 7\u001B[0m kw_model \u001B[38;5;241m=\u001B[39m \u001B[43mKeyBERT\u001B[49m\u001B[43m(\u001B[49m\u001B[43mmodel\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[38;5;124;43m'\u001B[39;49m\u001B[38;5;124;43mall-mpnet-base-v2\u001B[39;49m\u001B[38;5;124;43m'\u001B[39;49m\u001B[43m)\u001B[49m\n",
"File \u001B[1;32m~\\Anaconda3\\envs\\MOME_BIGDATA\\lib\\site-packages\\keybert\\_model.py:55\u001B[0m, in \u001B[0;36mKeyBERT.__init__\u001B[1;34m(self, model)\u001B[0m\n\u001B[0;32m 39\u001B[0m \u001B[38;5;28;01mdef\u001B[39;00m \u001B[38;5;21m__init__\u001B[39m(\u001B[38;5;28mself\u001B[39m, model\u001B[38;5;241m=\u001B[39m\u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mall-MiniLM-L6-v2\u001B[39m\u001B[38;5;124m\"\u001B[39m):\n\u001B[0;32m 40\u001B[0m \u001B[38;5;124;03m\"\"\"KeyBERT initialization\u001B[39;00m\n\u001B[0;32m 41\u001B[0m \n\u001B[0;32m 42\u001B[0m \u001B[38;5;124;03m Arguments:\u001B[39;00m\n\u001B[1;32m (...)\u001B[0m\n\u001B[0;32m 53\u001B[0m \u001B[38;5;124;03m * https://www.sbert.net/docs/pretrained_models.html\u001B[39;00m\n\u001B[0;32m 54\u001B[0m \u001B[38;5;124;03m \"\"\"\u001B[39;00m\n\u001B[1;32m---> 55\u001B[0m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mmodel \u001B[38;5;241m=\u001B[39m \u001B[43mselect_backend\u001B[49m\u001B[43m(\u001B[49m\u001B[43mmodel\u001B[49m\u001B[43m)\u001B[49m\n",
"File \u001B[1;32m~\\Anaconda3\\envs\\MOME_BIGDATA\\lib\\site-packages\\keybert\\backend\\_utils.py:49\u001B[0m, in \u001B[0;36mselect_backend\u001B[1;34m(embedding_model)\u001B[0m\n\u001B[0;32m 47\u001B[0m \u001B[38;5;66;03m# Create a Sentence Transformer model based on a string\u001B[39;00m\n\u001B[0;32m 48\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m \u001B[38;5;28misinstance\u001B[39m(embedding_model, \u001B[38;5;28mstr\u001B[39m):\n\u001B[1;32m---> 49\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[43mSentenceTransformerBackend\u001B[49m\u001B[43m(\u001B[49m\u001B[43membedding_model\u001B[49m\u001B[43m)\u001B[49m\n\u001B[0;32m 51\u001B[0m \u001B[38;5;66;03m# Hugging Face embeddings\u001B[39;00m\n\u001B[0;32m 52\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m \u001B[38;5;28misinstance\u001B[39m(embedding_model, Pipeline):\n",
"File \u001B[1;32m~\\Anaconda3\\envs\\MOME_BIGDATA\\lib\\site-packages\\keybert\\backend\\_sentencetransformers.py:42\u001B[0m, in \u001B[0;36mSentenceTransformerBackend.__init__\u001B[1;34m(self, embedding_model)\u001B[0m\n\u001B[0;32m 40\u001B[0m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39membedding_model \u001B[38;5;241m=\u001B[39m embedding_model\n\u001B[0;32m 41\u001B[0m \u001B[38;5;28;01melif\u001B[39;00m \u001B[38;5;28misinstance\u001B[39m(embedding_model, \u001B[38;5;28mstr\u001B[39m):\n\u001B[1;32m---> 42\u001B[0m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39membedding_model \u001B[38;5;241m=\u001B[39m \u001B[43mSentenceTransformer\u001B[49m\u001B[43m(\u001B[49m\u001B[43membedding_model\u001B[49m\u001B[43m)\u001B[49m\n\u001B[0;32m 43\u001B[0m \u001B[38;5;28;01melse\u001B[39;00m:\n\u001B[0;32m 44\u001B[0m \u001B[38;5;28;01mraise\u001B[39;00m \u001B[38;5;167;01mValueError\u001B[39;00m(\n\u001B[0;32m 45\u001B[0m \u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mPlease select a correct SentenceTransformers model: \u001B[39m\u001B[38;5;130;01m\\n\u001B[39;00m\u001B[38;5;124m\"\u001B[39m\n\u001B[0;32m 46\u001B[0m \u001B[38;5;124m\"\u001B[39m\u001B[38;5;124m`from sentence_transformers import SentenceTransformer` \u001B[39m\u001B[38;5;130;01m\\n\u001B[39;00m\u001B[38;5;124m\"\u001B[39m\n\u001B[0;32m 47\u001B[0m \u001B[38;5;124m\"\u001B[39m\u001B[38;5;124m`model = SentenceTransformer(\u001B[39m\u001B[38;5;124m'\u001B[39m\u001B[38;5;124mall-MiniLM-L6-v2\u001B[39m\u001B[38;5;124m'\u001B[39m\u001B[38;5;124m)`\u001B[39m\u001B[38;5;124m\"\u001B[39m\n\u001B[0;32m 48\u001B[0m )\n",
"File \u001B[1;32m~\\Anaconda3\\envs\\MOME_BIGDATA\\lib\\site-packages\\sentence_transformers\\SentenceTransformer.py:87\u001B[0m, in \u001B[0;36mSentenceTransformer.__init__\u001B[1;34m(self, model_name_or_path, modules, device, cache_folder, use_auth_token)\u001B[0m\n\u001B[0;32m 83\u001B[0m model_path \u001B[38;5;241m=\u001B[39m os\u001B[38;5;241m.\u001B[39mpath\u001B[38;5;241m.\u001B[39mjoin(cache_folder, model_name_or_path\u001B[38;5;241m.\u001B[39mreplace(\u001B[38;5;124m\"\u001B[39m\u001B[38;5;124m/\u001B[39m\u001B[38;5;124m\"\u001B[39m, \u001B[38;5;124m\"\u001B[39m\u001B[38;5;124m_\u001B[39m\u001B[38;5;124m\"\u001B[39m))\n\u001B[0;32m 85\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m \u001B[38;5;129;01mnot\u001B[39;00m os\u001B[38;5;241m.\u001B[39mpath\u001B[38;5;241m.\u001B[39mexists(os\u001B[38;5;241m.\u001B[39mpath\u001B[38;5;241m.\u001B[39mjoin(model_path, \u001B[38;5;124m'\u001B[39m\u001B[38;5;124mmodules.json\u001B[39m\u001B[38;5;124m'\u001B[39m)):\n\u001B[0;32m 86\u001B[0m \u001B[38;5;66;03m# Download from hub with caching\u001B[39;00m\n\u001B[1;32m---> 87\u001B[0m \u001B[43msnapshot_download\u001B[49m\u001B[43m(\u001B[49m\u001B[43mmodel_name_or_path\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 88\u001B[0m \u001B[43m \u001B[49m\u001B[43mcache_dir\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mcache_folder\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 89\u001B[0m \u001B[43m \u001B[49m\u001B[43mlibrary_name\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[38;5;124;43m'\u001B[39;49m\u001B[38;5;124;43msentence-transformers\u001B[39;49m\u001B[38;5;124;43m'\u001B[39;49m\u001B[43m,\u001B[49m\n\u001B[0;32m 90\u001B[0m \u001B[43m \u001B[49m\u001B[43mlibrary_version\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43m__version__\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 91\u001B[0m \u001B[43m \u001B[49m\u001B[43mignore_files\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43m[\u001B[49m\u001B[38;5;124;43m'\u001B[39;49m\u001B[38;5;124;43mflax_model.msgpack\u001B[39;49m\u001B[38;5;124;43m'\u001B[39;49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;124;43m'\u001B[39;49m\u001B[38;5;124;43mrust_model.ot\u001B[39;49m\u001B[38;5;124;43m'\u001B[39;49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;124;43m'\u001B[39;49m\u001B[38;5;124;43mtf_model.h5\u001B[39;49m\u001B[38;5;124;43m'\u001B[39;49m\u001B[43m]\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 92\u001B[0m \u001B[43m \u001B[49m\u001B[43muse_auth_token\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43muse_auth_token\u001B[49m\u001B[43m)\u001B[49m\n\u001B[0;32m 94\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m os\u001B[38;5;241m.\u001B[39mpath\u001B[38;5;241m.\u001B[39mexists(os\u001B[38;5;241m.\u001B[39mpath\u001B[38;5;241m.\u001B[39mjoin(model_path, \u001B[38;5;124m'\u001B[39m\u001B[38;5;124mmodules.json\u001B[39m\u001B[38;5;124m'\u001B[39m)): \u001B[38;5;66;03m#Load as SentenceTransformer model\u001B[39;00m\n\u001B[0;32m 95\u001B[0m modules \u001B[38;5;241m=\u001B[39m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_load_sbert_model(model_path)\n",
"File \u001B[1;32m~\\Anaconda3\\envs\\MOME_BIGDATA\\lib\\site-packages\\sentence_transformers\\util.py:491\u001B[0m, in \u001B[0;36msnapshot_download\u001B[1;34m(repo_id, revision, cache_dir, library_name, library_version, user_agent, ignore_files, use_auth_token)\u001B[0m\n\u001B[0;32m 486\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m version\u001B[38;5;241m.\u001B[39mparse(huggingface_hub\u001B[38;5;241m.\u001B[39m__version__) \u001B[38;5;241m>\u001B[39m\u001B[38;5;241m=\u001B[39m version\u001B[38;5;241m.\u001B[39mparse(\u001B[38;5;124m\"\u001B[39m\u001B[38;5;124m0.8.1\u001B[39m\u001B[38;5;124m\"\u001B[39m):\n\u001B[0;32m 487\u001B[0m \u001B[38;5;66;03m# huggingface_hub v0.8.1 introduces a new cache layout. We sill use a manual layout\u001B[39;00m\n\u001B[0;32m 488\u001B[0m \u001B[38;5;66;03m# And need to pass legacy_cache_layout=True to avoid that a warning will be printed\u001B[39;00m\n\u001B[0;32m 489\u001B[0m cached_download_args[\u001B[38;5;124m'\u001B[39m\u001B[38;5;124mlegacy_cache_layout\u001B[39m\u001B[38;5;124m'\u001B[39m] \u001B[38;5;241m=\u001B[39m \u001B[38;5;28;01mTrue\u001B[39;00m\n\u001B[1;32m--> 491\u001B[0m path \u001B[38;5;241m=\u001B[39m cached_download(\u001B[38;5;241m*\u001B[39m\u001B[38;5;241m*\u001B[39mcached_download_args)\n\u001B[0;32m 493\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m os\u001B[38;5;241m.\u001B[39mpath\u001B[38;5;241m.\u001B[39mexists(path \u001B[38;5;241m+\u001B[39m \u001B[38;5;124m\"\u001B[39m\u001B[38;5;124m.lock\u001B[39m\u001B[38;5;124m\"\u001B[39m):\n\u001B[0;32m 494\u001B[0m os\u001B[38;5;241m.\u001B[39mremove(path \u001B[38;5;241m+\u001B[39m \u001B[38;5;124m\"\u001B[39m\u001B[38;5;124m.lock\u001B[39m\u001B[38;5;124m\"\u001B[39m)\n",
"File \u001B[1;32m~\\Anaconda3\\envs\\MOME_BIGDATA\\lib\\site-packages\\huggingface_hub\\utils\\_validators.py:120\u001B[0m, in \u001B[0;36mvalidate_hf_hub_args.<locals>._inner_fn\u001B[1;34m(*args, **kwargs)\u001B[0m\n\u001B[0;32m 117\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m check_use_auth_token:\n\u001B[0;32m 118\u001B[0m kwargs \u001B[38;5;241m=\u001B[39m smoothly_deprecate_use_auth_token(fn_name\u001B[38;5;241m=\u001B[39mfn\u001B[38;5;241m.\u001B[39m\u001B[38;5;18m__name__\u001B[39m, has_token\u001B[38;5;241m=\u001B[39mhas_token, kwargs\u001B[38;5;241m=\u001B[39mkwargs)\n\u001B[1;32m--> 120\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m fn(\u001B[38;5;241m*\u001B[39margs, \u001B[38;5;241m*\u001B[39m\u001B[38;5;241m*\u001B[39mkwargs)\n",
"File \u001B[1;32m~\\Anaconda3\\envs\\MOME_BIGDATA\\lib\\site-packages\\huggingface_hub\\file_download.py:780\u001B[0m, in \u001B[0;36mcached_download\u001B[1;34m(url, library_name, library_version, cache_dir, user_agent, force_download, force_filename, proxies, etag_timeout, resume_download, token, local_files_only, legacy_cache_layout)\u001B[0m\n\u001B[0;32m 777\u001B[0m \u001B[38;5;28;01mwith\u001B[39;00m temp_file_manager() \u001B[38;5;28;01mas\u001B[39;00m temp_file:\n\u001B[0;32m 778\u001B[0m logger\u001B[38;5;241m.\u001B[39minfo(\u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mdownloading \u001B[39m\u001B[38;5;132;01m%s\u001B[39;00m\u001B[38;5;124m to \u001B[39m\u001B[38;5;132;01m%s\u001B[39;00m\u001B[38;5;124m\"\u001B[39m, url, temp_file\u001B[38;5;241m.\u001B[39mname)\n\u001B[1;32m--> 780\u001B[0m \u001B[43mhttp_get\u001B[49m\u001B[43m(\u001B[49m\n\u001B[0;32m 781\u001B[0m \u001B[43m \u001B[49m\u001B[43murl_to_download\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 782\u001B[0m \u001B[43m \u001B[49m\u001B[43mtemp_file\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 783\u001B[0m \u001B[43m \u001B[49m\u001B[43mproxies\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mproxies\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 784\u001B[0m \u001B[43m \u001B[49m\u001B[43mresume_size\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mresume_size\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 785\u001B[0m \u001B[43m \u001B[49m\u001B[43mheaders\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mheaders\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 786\u001B[0m \u001B[43m \u001B[49m\u001B[43m)\u001B[49m\n\u001B[0;32m 788\u001B[0m logger\u001B[38;5;241m.\u001B[39minfo(\u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mstoring \u001B[39m\u001B[38;5;132;01m%s\u001B[39;00m\u001B[38;5;124m in cache at \u001B[39m\u001B[38;5;132;01m%s\u001B[39;00m\u001B[38;5;124m\"\u001B[39m, url, cache_path)\n\u001B[0;32m 789\u001B[0m _chmod_and_replace(temp_file\u001B[38;5;241m.\u001B[39mname, cache_path)\n",
"File \u001B[1;32m~\\Anaconda3\\envs\\MOME_BIGDATA\\lib\\site-packages\\huggingface_hub\\file_download.py:538\u001B[0m, in \u001B[0;36mhttp_get\u001B[1;34m(url, temp_file, proxies, resume_size, headers, timeout, max_retries)\u001B[0m\n\u001B[0;32m 528\u001B[0m displayed_name \u001B[38;5;241m=\u001B[39m \u001B[38;5;124mf\u001B[39m\u001B[38;5;124m\"\u001B[39m\u001B[38;5;124m(…)\u001B[39m\u001B[38;5;132;01m{\u001B[39;00mdisplayed_name[\u001B[38;5;241m-\u001B[39m\u001B[38;5;241m20\u001B[39m:]\u001B[38;5;132;01m}\u001B[39;00m\u001B[38;5;124m\"\u001B[39m\n\u001B[0;32m 530\u001B[0m progress \u001B[38;5;241m=\u001B[39m tqdm(\n\u001B[0;32m 531\u001B[0m unit\u001B[38;5;241m=\u001B[39m\u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mB\u001B[39m\u001B[38;5;124m\"\u001B[39m,\n\u001B[0;32m 532\u001B[0m unit_scale\u001B[38;5;241m=\u001B[39m\u001B[38;5;28;01mTrue\u001B[39;00m,\n\u001B[1;32m (...)\u001B[0m\n\u001B[0;32m 536\u001B[0m disable\u001B[38;5;241m=\u001B[39m\u001B[38;5;28mbool\u001B[39m(logger\u001B[38;5;241m.\u001B[39mgetEffectiveLevel() \u001B[38;5;241m==\u001B[39m logging\u001B[38;5;241m.\u001B[39mNOTSET),\n\u001B[0;32m 537\u001B[0m )\n\u001B[1;32m--> 538\u001B[0m \u001B[38;5;28;01mfor\u001B[39;00m chunk \u001B[38;5;129;01min\u001B[39;00m r\u001B[38;5;241m.\u001B[39miter_content(chunk_size\u001B[38;5;241m=\u001B[39m\u001B[38;5;241m10\u001B[39m \u001B[38;5;241m*\u001B[39m \u001B[38;5;241m1024\u001B[39m \u001B[38;5;241m*\u001B[39m \u001B[38;5;241m1024\u001B[39m):\n\u001B[0;32m 539\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m chunk: \u001B[38;5;66;03m# filter out keep-alive new chunks\u001B[39;00m\n\u001B[0;32m 540\u001B[0m progress\u001B[38;5;241m.\u001B[39mupdate(\u001B[38;5;28mlen\u001B[39m(chunk))\n",
"File \u001B[1;32m~\\Anaconda3\\envs\\MOME_BIGDATA\\lib\\site-packages\\requests\\models.py:818\u001B[0m, in \u001B[0;36mResponse.iter_content.<locals>.generate\u001B[1;34m()\u001B[0m\n\u001B[0;32m 816\u001B[0m \u001B[38;5;28;01myield from\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mraw\u001B[38;5;241m.\u001B[39mstream(chunk_size, decode_content\u001B[38;5;241m=\u001B[39m\u001B[38;5;28;01mTrue\u001B[39;00m)\n\u001B[0;32m 817\u001B[0m \u001B[38;5;28;01mexcept\u001B[39;00m ProtocolError \u001B[38;5;28;01mas\u001B[39;00m e:\n\u001B[1;32m--> 818\u001B[0m \u001B[38;5;28;01mraise\u001B[39;00m ChunkedEncodingError(e)\n\u001B[0;32m 819\u001B[0m \u001B[38;5;28;01mexcept\u001B[39;00m DecodeError \u001B[38;5;28;01mas\u001B[39;00m e:\n\u001B[0;32m 820\u001B[0m \u001B[38;5;28;01mraise\u001B[39;00m ContentDecodingError(e)\n",
"\u001B[1;31mChunkedEncodingError\u001B[0m: (\"Connection broken: ConnectionResetError(10054, 'A létező kapcsolatot a távoli állomás kényszerítetten bezárta', None, 10054, None)\", ConnectionResetError(10054, 'A létező kapcsolatot a távoli állomás kényszerítetten bezárta', None, 10054, None))"
]
}
],
"source": [
"from rake_nltk import Rake\n",
"from keybert import KeyBERT\n",
"\n",
"# Uses stopwords for english from NLTK, and all puntuation characters by\n",
"# default\n",
"r = Rake()\n",
"kw_model = KeyBERT(model='all-mpnet-base-v2')\n",
"\n",
"# Extraction given the text.\n",
"# r.extract_keywords_from_text(<text to process>)\n",
"\n",
"# keywords = kw_model.extract_keywords(full_text,\n",
"#\n",
"# keyphrase_ngram_range=(1, 3),\n",
"#\n",
"# stop_words='english',\n",
"#\n",
"# highlight=False,\n",
"#\n",
"# top_n=10)\n",
"#\n",
"# keywords_list= list(dict(keywords).keys())"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "code",
"execution_count": 32,
"outputs": [
{
"ename": "AttributeError",
"evalue": "'NoneType' object has no attribute 'get_ranked_phrases'",
"output_type": "error",
"traceback": [
"\u001B[1;31m---------------------------------------------------------------------------\u001B[0m",
"\u001B[1;31mAttributeError\u001B[0m Traceback (most recent call last)",
"Cell \u001B[1;32mIn[32], line 1\u001B[0m\n\u001B[1;32m----> 1\u001B[0m \u001B[43mRake\u001B[49m\u001B[43m(\u001B[49m\u001B[43m)\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mextract_keywords_from_text\u001B[49m\u001B[43m(\u001B[49m\u001B[38;5;124;43m\"\u001B[39;49m\u001B[38;5;124;43mmy time to shine\u001B[39;49m\u001B[38;5;124;43m\"\u001B[39;49m\u001B[43m)\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mget_ranked_phrases\u001B[49m()\n",
"\u001B[1;31mAttributeError\u001B[0m: 'NoneType' object has no attribute 'get_ranked_phrases'"
]
}
],
"source": [
"Rake().extract_keywords_from_text(\"my time to shine\").get_ranked_phrases()"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "code",
"execution_count": 37,
"outputs": [],
"source": [
"def kwd_rake(text):\n",
" r = Rake()\n",
" r.extract_keywords_from_sentences(text)\n",
" return r.get_ranked_phrases()\n",
"\n",
"kwds_rake = wos[\"Abstract\"].fillna(\"\").map(kwd_rake)\n",
"# kwds_bert = wos[\"A\"]\n"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "code",
"execution_count": 38,
"outputs": [
{
"data": {
"text/plain": "0 [brief summary could help us better understand...\n9714 [known phase space reconstruction based causal...\n9697 [column behavior requires accurate plastic hin...\n9699 [approach needs excessive computational effort...\n9701 [proposed ann model achieves good wind speed r...\n ... \n3066 [key factors affecting ocean climate change, r...\n5097 [big data influences different financial secto...\n11369 [planetary gear fault diagnosis via feature im...\n11368 [simultaneously predict various soil fertility...\n11362 [recently developed ensemble machine learning ...\nName: Abstract, Length: 9889, dtype: object"
},
"execution_count": 38,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"kwds_rake"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "code",
"execution_count": 28,
"outputs": [
{
"data": {
"text/plain": "0 None\n9714 None\n9697 None\n9699 None\n9701 None\n ... \n3066 None\n5097 None\n11369 None\n11368 None\n11362 None\nName: Abstract, Length: 9889, dtype: object"
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"kwds_rake"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "code",
"execution_count": 19,
"outputs": [
{
"data": {
"text/plain": "'Keywords Plus'"
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
2 years ago
{
"cell_type": "code",
2 years ago
"execution_count": 8,
"metadata": {},
2 years ago
"outputs": [],
"source": [
2 years ago
"geotext = GeoText()\n",
"\n",
"def extract_location(input_text, key='countries'):\n",
" anomalies = {\"Malta\":\"Malta\",\n",
" \"Mongolia\":\"Mongolia\",\n",
" \"Quatar\":\"Qatar\",\n",
" \"Qatar\":\"Qatar\",\n",
" \"Ethiop\":\"Ethiopia\",\n",
" \"Nigeria\":\"Nigeria\",\n",
" \"BELAR\":\"Belarus\",\n",
" \"Venezuela\":\"Venezuela\",\n",
" \"Cyprus\":\"Cyprus\",\n",
" \"Ecuador\":\"Ecuador\",\n",
" \"U Arab\":\"United Arab Emirates\",\n",
" \"Syria\":\"Syria\",\n",
" \"Uganda\":\"Uganda\",\n",
" \"Yemen\":\"Yemen\",\n",
" \"Mali\":\"Mali\",\n",
" \"Senegal\":\"Senegal\",\n",
" \"Vatican\":\"Vatican\",\n",
" \"Uruguay\":\"Uruguay\",\n",
" \"Panama\":\"Panama\",\n",
" \"Fiji\":\"Fiji\",\n",
" \"Faroe\":\"Faroe Islands\",\n",
" \"Macedonia\":\"Macedonia\",\n",
" 'Mozambique':'Mozambique',\n",
" \"Kuwait\":\"Kuwait\",\n",
" \"Libya\":\"Libya\",\n",
" \"Turkiy\":\"Turkey\",\n",
" \"Liberia\":\"Liberia\",\n",
" \"Namibia\":\"Namibia\",\n",
" \"Ivoire\":\"Ivory Coast\",\n",
" \"Guatemala\":\"Gutemala\",\n",
" \"Paraguay\":\"Paraguay\",\n",
" \"Honduras\":\"Honduras\",\n",
" \"Nicaragua\":\"Nicaragua\",\n",
" \"Trinidad\":\"Trinidad & Tobago\",\n",
" \"Liechtenstein\":\"Liechtenstein\",\n",
" \"Greenland\":\"Denmark\"}\n",
"\n",
" extracted = geotext.extract(input_text=input_text)\n",
" found = extracted[key].keys()\n",
" if len(sorted(found))>0:\n",
" return sorted(found)[0]\n",
" elif key=='countries':\n",
" for i in ['Scotland','Wales','England']:\n",
" if i in input_text:\n",
" return 'United Kingdom'\n",
" for j in anomalies.keys():\n",
" if j in input_text:\n",
" return anomalies.get(j)\n",
" else:\n",
" return None\n",
"\n",
"with open('../eu_members.txt',\"r\") as f:\n",
" eu_countries=f.readline().split(\",\")\n",
" eu_countries=[i.strip() for i in eu_countries]\n",
"\n",
"def country_type(country):\n",
" if country in eu_countries:\n",
" return \"EU\"\n",
" elif country==\"China\":\n",
" return \"China\"\n",
" else:\n",
" return \"Other\"\n"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [],
"source": [
"locations = wos.groupby(record_col)[\"Addresses\"].apply(lambda x: x.str.split('[')).explode().reset_index().drop(columns=\"level_1\")\n",
"locations = locations[locations[\"Addresses\"]!=\"\"].copy()\n",
"locations[\"Address\"] = locations[\"Addresses\"].apply(lambda x:x.split(\"]\")[-1])\n",
"locations[\"Authors_of_address\"] = locations[\"Addresses\"].apply(lambda x:x.split(\"]\")[0])\n",
"locations[\"Country\"]=locations['Address'].apply(lambda x: extract_location(input_text=x, key='countries'))\n",
"locations[\"City\"]=locations['Address'].apply(lambda x: extract_location(input_text=x, key='cities'))\n",
"locations[\"Country_Type\"] = locations[\"Country\"].apply(lambda x: country_type(x))"
]
2 years ago
},
{
"cell_type": "code",
2 years ago
"execution_count": 10,
"metadata": {},
2 years ago
"outputs": [
{
2 years ago
"data": {
"text/plain": " UT (Unique WOS ID) Address \n1 WOS:000209536100003 BGI HK Ltd, GigaSci, Tai Po, Hong Kong, Peopl... \\\n2 WOS:000209536100003 Nat Hist Museum, London SW7 5BD, England; \n3 WOS:000209536100003 Pensoft Publishers, Sofia, Bulgaria; \n4 WOS:000209536100003 Nat Hist Museum, Natl Museum, Sofia, Bulgaria; \n5 WOS:000209536100003 Bulgarian Acad Sci, Inst Biodivers & Ecosyst ... \n\n Country City Country_Type Institution \n1 China Hong Kong China BGI HK Ltd \n2 United Kingdom London Other Nat Hist Museum \n3 Bulgaria Sofia EU Pensoft Publishers \n4 Bulgaria Sofia EU Nat Hist Museum \n5 Bulgaria Rees EU Bulgarian Acad Sci ",
"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>UT (Unique WOS ID)</th>\n <th>Address</th>\n <th>Country</th>\n <th>City</th>\n <th>Country_Type</th>\n <th>Institution</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>1</th>\n <td>WOS:000209536100003</td>\n <td>BGI HK Ltd, GigaSci, Tai Po, Hong Kong, Peopl...</td>\n <td>China</td>\n <td>Hong Kong</td>\n <td>China</td>\n <td>BGI HK Ltd</td>\n </tr>\n <tr>\n <th>2</th>\n <td>WOS:000209536100003</td>\n <td>Nat Hist Museum, London SW7 5BD, England;</td>\n <td>United Kingdom</td>\n <td>London</td>\n <td>Other</td>\n <td>Nat Hist Museum</td>\n </tr>\n <tr>\n <th>3</th>\n <td>WOS:000209536100003</td>\n <td>Pensoft Publishers, Sofia, Bulgaria;</td>\n <td>Bulgaria</td>\n <td>Sofia</td>\n <td>EU</td>\n <td>Pensoft Publishers</td>\n </tr>\n <tr>\n <th>4</th>\n <td>WOS:000209536100003</td>\n <td>Nat Hist Museum, Natl Museum, Sofia, Bulgaria;</td>\n <td>Bulgaria</td>\n <td>Sofia</td>\n <td>EU</td>\n <td>Nat Hist Museum</td>\n </tr>\n <tr>\n <th>5</th>\n <td>WOS:000209536100003</td>\n <td>Bulgarian Acad Sci, Inst Biodivers &amp; Ecosyst ...</td>\n <td>Bulgaria</td>\n <td>Rees</td>\n <td>EU</td>\n <td>Bulgarian Acad Sci</td>\n </tr>\n </tbody>\n</table>\n</div>"
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
2 years ago
}
],
"source": [
2 years ago
"univ_locations = locations[[record_col,\"Address\",\"Country\",\"City\",\"Country_Type\"]].copy()\n",
"univ_locations[\"Institution\"] = univ_locations[\"Address\"].apply(lambda x: x.split(\",\")[0])\n",
"univ_locations.head()"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": "Country\nChina 21063\nUnited States 5913\nGermany 4179\nItaly 3195\nFrance 2767\n ... \nFaroe Islands 1\nHonduras 1\nVatican 1\nMacedonia 1\nJamaica 1\nName: count, Length: 137, dtype: int64"
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
2 years ago
],
2 years ago
"source": [
"locations[\"Country\"].value_counts()"
]
2 years ago
},
{
"cell_type": "code",
2 years ago
"execution_count": 12,
"metadata": {},
2 years ago
"outputs": [
{
"data": {
2 years ago
"text/plain": "Country_Type\nEU 21228\nChina 21063\nOther 20404\nName: count, dtype: int64"
2 years ago
},
2 years ago
"execution_count": 12,
2 years ago
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
2 years ago
"locations[\"Country_Type\"].value_counts()"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": " UT (Unique WOS ID) Country Country_Type Author_name \n0 WOS:000209536100003 Bulgaria EU Stoev, Pavel \\\n1 WOS:000209536100003 Bulgaria EU Penev, Lyubomir \n2 WOS:000209536100003 Bulgaria EU Stoev, Pavel \n3 WOS:000209536100003 Bulgaria EU Penev, Lyubomir \n4 WOS:000209536100003 China China Edmunds, Scott C. \n... ... ... ... ... \n173441 WOS:000947693400001 China China Peng, Sihua \n173442 WOS:000947693400001 China China Shen, Zhehan \n173443 WOS:000947693400001 China China Shen, Zhehan \n173444 WOS:000947693400001 China China Liu, Taigang \n173445 WOS:000947693400001 Spain EU Jiang, Linhua \n\n author_str_id \n0 stoevpavel \n1 penevlyubomir \n2 stoevpavel \n3 penevlyubomir \n4 edmundsscottc \n... ... \n173441 pengsihua \n173442 shenzhehan \n173443 shenzhehan \n173444 liutaigang \n173445 jianglinhua \n\n[173446 rows x 5 columns]",
"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>UT (Unique WOS ID)</th>\n <th>Country</th>\n <th>Country_Type</th>\n <th>Author_name</th>\n <th>author_str_id</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>WOS:000209536100003</td>\n <td>Bulgaria</td>\n <td>EU</td>\n <td>Stoev, Pavel</td>\n <td>stoevpavel</td>\n </tr>\n <tr>\n <th>1</th>\n <td>WOS:000209536100003</td>\n <td>Bulgaria</td>\n <td>EU</td>\n <td>Penev, Lyubomir</td>\n <td>penevlyubomir</td>\n </tr>\n <tr>\n <th>2</th>\n <td>WOS:000209536100003</td>\n <td>Bulgaria</td>\n <td>EU</td>\n <td>Stoev, Pavel</td>\n <td>stoevpavel</td>\n </tr>\n <tr>\n <th>3</th>\n <td>WOS:000209536100003</td>\n <td>Bulgaria</td>\n <td>EU</td>\n <td>Penev, Lyubomir</td>\n <td>penevlyubomir</td>\n </tr>\n <tr>\n <th>4</th>\n <td>WOS:000209536100003</td>\n <td>China</td>\n <td>China</td>\n <td>Edmunds, Scott C.</td>\n <td>edmundsscottc</td>\n </tr>\n <tr>\n <th>...</th>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n </tr>\n <tr>\n <th>173441</th>\n <td>WOS:000947693400001</td>\n <td>China</td>\n <td>China</td>\n <td>Peng, Sihua</td>\n <td>pengsihua</td>\n </tr>\n <tr>\n <th>173442</th>\n <td>WOS:000947693400001</td>\n <td>China</td>\n <td>China</td>\n <td>Shen, Zhehan</td>\n <td>shenzhehan</td>\n </tr>\n <tr>\n <th>173443</th>\n <td>WOS:000947693400001</td>\n <td>China</td>\n <td>China</td>\n <td>Shen, Zhehan</td>\n <td>shenzhehan</td>\n </tr>\n <tr>\n <th>173444</th>\n <td>WOS:000947693400001</td>\n <td>China</td>\n <td>China</td>\n <td>Liu, Taigang</td>\n <td>liutaigang</td>\n </tr>\n <tr>\n <th>173445</th>\n <td>WOS:000947693400001</td>\n <td>Spain</td>\n <td>EU</td>\n <td>Jiang, Linhua</td>\n <td>jianglinhua</td>\n </tr>\n </tbody>\n</table>\n<p>173446 rows × 5 columns</p>\n</div>"
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
2 years ago
],
2 years ago
"source": [
"author_locations = locations.groupby([record_col,\"Country\",\"Country_Type\"])[\"Authors_of_address\"].apply(lambda x: x.str.split(';')).explode().reset_index().drop(columns=\"level_3\")\n",
"author_locations[\"Author_name\"] = author_locations[\"Authors_of_address\"].str.strip()\n",
"author_locations = author_locations.drop(columns=\"Authors_of_address\")\n",
"author_locations[\"author_str_id\"] = author_locations[\"Author_name\"].apply(lambda x:''.join(filter(str.isalnum, x.lower())))\n",
"author_locations"
]
2 years ago
},
{
"cell_type": "code",
2 years ago
"execution_count": 14,
"metadata": {},
2 years ago
"outputs": [
{
2 years ago
"data": {
"text/plain": "8925"
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
2 years ago
}
],
"source": [
2 years ago
"author_primary_region = author_locations.sort_values(by=\"Country_Type\").drop_duplicates(subset=[record_col,\"author_str_id\"])\n",
"# author_primary_region\n",
"\n",
"china=author_primary_region[author_primary_region[\"Country_Type\"]==\"China\"][record_col].unique()\n",
"eu=author_primary_region[author_primary_region[\"Country_Type\"]==\"EU\"][record_col].unique()\n",
"\n",
"len(wos[((wos[record_col].isin(china))\n",
" &\n",
" (wos[record_col].isin(eu)))])"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": "9889"
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
2 years ago
],
2 years ago
"source": [
"len(wos)"
]
2 years ago
},
{
"cell_type": "code",
2 years ago
"execution_count": 16,
"metadata": {},
"outputs": [],
"source": [
"affiliations = wos.groupby(record_col)[\"Affiliations\"].apply(lambda x: x.str.split(';')).explode().reset_index().drop(columns=\"level_1\")\n",
"# affiliations[affiliations[\"Affiliations\"].str.lower().str.contains(\"chinese academy\", na=False, regex=True)][\"Affiliations\"].value_counts()\n",
"affiliations[\"Affiliations\"] = affiliations[\"Affiliations\"].str.strip().str.upper().fillna(\"UNKNOWN\")\n",
"affiliations = affiliations.drop_duplicates()"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
2 years ago
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
2 years ago
"76485 72581\n"
2 years ago
]
2 years ago
}
],
"source": [
"aff_ = wos.groupby(record_col)[\"Affiliations\"].apply(lambda x: x.str.split(';')).explode().reset_index().drop(columns=\"level_1\")\n",
"loc_ = wos.groupby(record_col)[\"Addresses\"].apply(lambda x: x.str.split('[')).explode().reset_index().drop(columns=\"level_1\")\n",
"print(len(aff_),len(loc_))"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
2 years ago
{
2 years ago
"data": {
"text/plain": "[['IDAHO'],\n ['ICREA'],\n ['CEA'],\n ['AGROPARISTECH'],\n ['LENOVO'],\n ['RIKEN'],\n ['MICROSOFT'],\n ['GLAXOSMITHKLINE'],\n ['UNICANCER'],\n ['INRIA'],\n ['CIBERESP'],\n ['SINOPEC'],\n ['PHILIPS'],\n ['CIRAD'],\n ['VITO'],\n ['IMEC'],\n ['ILLUMINA'],\n ['EURECOM'],\n ['BAIDU'],\n ['CIBEREHD'],\n ['UNKNOWN'],\n ['BAYCREST'],\n ['NOVARTIS'],\n ['ITER'],\n ['PELIN'],\n ['INRAE'],\n ['ASTRAZENECA'],\n ['ERICSSON'],\n ['IDIBAPS'],\n ['CGIAR'],\n ['UNILEVER'],\n ['GENENTECH'],\n ['TENCENT'],\n ['NICTA'],\n ['QUALCOMM'],\n ['INESC-ID'],\n ['CIBERES'],\n ['ALCATEL-LUCENT'],\n ['TEAGASC'],\n ['ABB'],\n ['HEWLETT-PACKARD'],\n ['AT&T'],\n ['RIGSHOSPITALET'],\n ['FORTISS'],\n ['AMAZON.COM'],\n ['BASF'],\n ['BOSCH'],\n ['CIBERSAM'],\n ['EURATOM'],\n ['UNINETTUNO'],\n ['E-ON'],\n ['DELPHI'],\n ['BIOGEN'],\n ['SAMSUNG'],\n ['INTERDIGITAL'],\n ['SYNGENTA'],\n ['CIBERONC'],\n ['IRTA'],\n ['MICA'],\n ['MEDTRONIC'],\n ['IFREMER'],\n ['DELTARES'],\n ['PROFIL'],\n ['SANOFI-AVENTIS'],\n ['REGENERON'],\n ['YUTONG'],\n ['CIBERBBN'],\n ['KAKAO'],\n ['DNV'],\n ['SCHLUMBERGER'],\n ['ITALFARMACO'],\n ['CYBERNETICA'],\n ['ZTE'],\n ['NAVER'],\n ['VOLVO'],\n ['CHANGHONG'],\n ['CINTECX'],\n ['VINUNIVERSITY'],\n ['SERVIER'],\n ['CIBERCV'],\n ['IMELDAZIEKENHUIS'],\n ['DIAKONESSENHUIS'],\n ['ADVENTHEALTH'],\n ['ALLIANCE'],\n ['AUDENCIA'],\n ['SINTEF'],\n ['SAP'],\n ['ELEKTA'],\n ['ELSEVIER'],\n ['CIBEROBN'],\n ['PFIZER'],\n ['ABBVIE'],\n ['NAVARRABIOMED'],\n ['BYD'],\n ['INSPUR'],\n ['CIBERNED'],\n ['SHANDONG', 'UNIVERSITY'],\n ['HEBEI', 'UNIVERSITY'],\n ['BOGAZICI', 'UNIVERSITY'],\n ['DOGUS', 'UNIVERSITY'],\n ['GAZIANTEP', 'UNIVERSITY'],\n ['ANKARA', 'UNIVERSITY'],\n ['DUMLUPINAR', 'UNIVERSITY'],\n ['GAZI', 'UNIVERSITY'],\n ['BOSTON', 'UNIVERSITY'],\n ['BRANDEIS', 'UNIVERSITY'],\n ['CARLETON', 'UNIVERSITY'],\n ['NANJING', 'UNIVERSITY'],\n ['COLUMBIA', 'UNIVERSITY'],\n ['HELMHOLTZ', 'ASSOCIATION'],\n ['DUKE', 'UNIVERSITY'],\n ['HAMPTON', 'UNIVERSITY'],\n ['HARVARD', 'UNIVERSITY'],\n ['KOBE', 'UNIVERSITY'],\n ['KYOTO', 'UNIVERSITY'],\n ['LANCASTER', 'UNIVERSITY'],\n ['SORBONNE', 'UNIVERSITE'],\n ['LUND', 'UNIVERSITY'],\n ['AIX-MARSEILLE', 'UNIVERSITE'],\n ['MCGILL', 'UNIVERSITY'],\n ['NAGOYA', 'UNIVERSITY'],\n ['OKAYAMA', 'UNIVERSITY'],\n ['OSAKA', 'UNIVERSITY'],\n ['RITSUMEIKAN', 'UNIVERSITY'],\n ['SHINSHU', 'UNIVERSITY'],\n ['UNIVERSITAT', 'SIEGEN'],\n ['STANFORD', 'UNIVERSITY'],\n ['STOCKHOLM', 'UNIVERSITY'],\n ['TUFTS', 'UNIVERSITY'],\n ['UPPSALA', 'UNIVERSITY'],\n ['WASEDA', 'UNIVERSITY'],\n ['YALE', 'UNIVERSITY'],\n ['HIROSHIMA', 'UNIVERSITY'],\n ['MANHATTAN', 'COLLEGE'],\n ['JAGIELLONIAN', 'UNIVERSITY'],\n ['FUDAN', 'UNIVERSITY'],\n ['YANTAI', 'UNIVERSITY'],\n ['UNIVERSITY', 'OSNABRUCK'],\n ['PEKING', 'UNIVERSITY'],\n ['TSINGHUA', 'UNIVERSITY'],\n ['SYRACUSE', 'UNIVERSITY'],\n ['ZHEJIANG', 'UNIVERSITY'],\n ['MCMASTER', 'UNIVERSITY'],\n ['ETH', 'ZURICH'],\n ['TUSCIA', 'UNIVERSITY'],\n ['LISHUI', 'UNIVERSITY'],\n ['LEGEND', 'HOLDINGS'],\n ['WUHAN', 'UNIVERSITY'],\n ['GHENT', 'UNIVERSITY'],\n ['SHANGHAI', 'UNIVERSITY'],\n ['JILIN', 'UNIVERSITY'],\n ['ULSTER', 'UNIVERSITY'],\n ['JIANGNAN', 'UNIVERSITY'],\n ['KU', 'LEUVEN'],\n ['HOCHSCHULE', 'AALEN'],\n ['SHAOYANG', 'UNIVERSITY'],\n ['HUNAN', 'UNIVERSITY'],\n ['KYUSHU', 'UNIVERSITY'],\n ['TONGJI', 'UNIVERSITY'],\n ['TAMPERE', 'UNIVERSITY'],\n ['AALTO', 'UNIVERSITY'],\n ['OBUDA', 'UNIVERSITY'],\n ['PANJAB', 'UNIVERSITY'],\n ['KOREA', 'UNIVERSITY'],\n ['VILNIUS', 'UNIVERSITY'],\n ['CHULALONGKORN', 'UNIVERSITY'],\n ['CUKUROVA', 'UNIVERSITY'],\n ['BRUNEL', 'UNIVERSITY'],\n ['BAYLOR', 'UNIVERSITY'],\n ['BROWN', 'UNIVERSITY'],\n ['CORNELL', 'UNIVERSITY'],\n ['FAIRFIELD', 'UNIVERSITY'],\n ['NORTHEASTERN', 'UNIVERSITY'],\n ['NORTHWESTERN', 'UNIVERSITY'],\n ['PRINCETON', 'UNIVERSITY'],\n ['PURDUE', 'UNIVERSITY'],\n ['RICE', 'UNIVERSITY'],\n ['ROCKEFELLER', 'UNIVERSITY'],\n ['VANDERBILT', 'UNIVERSITY'],\n ['CAIRO', 'UNIVERSITY'],\n ['FAYOUM', 'UNIVERSITY'],\n ['HELWAN', 'UNIVERSITY'],\n ['SHIRAZ', 'UNIVERSITY'],\n ['GAZIOSMANPASA', 'UNIVERSITY'],\n ['ADIYAMAN', 'UNIVERSITY'],\n ['MERSIN', '
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"unique_inst = sorted([i.split(\" \") for i in list(affiliations[\"Affiliations\"].unique())], key=len)\n",
"# unique_inst = [[''.join(filter(str.isalnum, i)) for i in i_list] for i_list in unique_inst]\n",
"unique_inst = [[i.strip(\",\").strip(\"(\").strip(\")\") for i in i_list] for i_list in unique_inst]\n",
"unique_inst"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [],
"source": [
"def institution_chunk_norris(text):\n",
" for i in unique_inst:\n",
" text_split=text.split(\" \")\n",
" text_split=[i.strip(\",\").strip(\"(\").strip(\")\") for i in text_split]\n",
" overlap = all(token in text_split for token in i)\n",
" if overlap:\n",
" return (\" \".join(i))\n",
" return \"ERROR\""
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [],
"source": [
"affiliations[\"Affiliations_merged\"] = affiliations[\"Affiliations\"].apply(lambda x: institution_chunk_norris(x))"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": "Affiliations\nCHINESE ACADEMY OF SCIENCES 1188\nUDICE-FRENCH RESEARCH UNIVERSITIES 647\nCENTRE NATIONAL DE LA RECHERCHE SCIENTIFIQUE (CNRS) 640\nHELMHOLTZ ASSOCIATION 427\nUNIVERSITY OF CHINESE ACADEMY OF SCIENCES, CAS 411\n ... \nIMT NORD EUROPE 1\nSANGMYUNG UNIVERSITY 1\nINDIANA UNIVERSITY PURDUE UNIVERSITY FORT WAYNE 1\nJAHANGIRNAGAR UNIVERSITY 1\nSAINT JAMES'S UNIVERSITY HOSPITAL 1\nName: count, Length: 4884, dtype: int64"
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
2 years ago
}
],
"source": [
2 years ago
"affiliations[\"Affiliations\"].value_counts()"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": "Affiliations_merged\nCHINESE ACADEMY OF SCIENCES 1725\nNANJING UNIVERSITY 737\nSHANGHAI UNIVERSITY 667\nUDICE-FRENCH RESEARCH UNIVERSITIES 647\nCENTRE NATIONAL DE LA RECHERCHE SCIENTIFIQUE CNRS 640\n ... \nULVAC INC. 1\nNATIONAL METROLOGY INSTITUTE OF JAPAN 1\nSHEFFIELD HALLAM UNIVERSITY 1\nGLOBAL INSTITUTE FOR WATER SECURITY 1\nSAINT JAMES'S UNIVERSITY HOSPITAL 1\nName: count, Length: 4241, dtype: int64"
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
2 years ago
],
2 years ago
"source": [
"affiliations[\"Affiliations_merged\"].value_counts()"
]
2 years ago
},
{
"cell_type": "code",
2 years ago
"execution_count": 23,
"metadata": {},
2 years ago
"outputs": [
{
2 years ago
"data": {
"text/plain": "Empty DataFrame\nColumns: [UT (Unique WOS ID), Affiliations, Affiliations_merged]\nIndex: []",
"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>UT (Unique WOS ID)</th>\n <th>Affiliations</th>\n <th>Affiliations_merged</th>\n </tr>\n </thead>\n <tbody>\n </tbody>\n</table>\n</div>"
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"affiliations[affiliations[\"Affiliations_merged\"]==\"ERROR\"]"
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {},
"outputs": [],
"source": [
"from nltk.metrics import edit_distance\n",
"from nltk.metrics import edit_distance_align\n",
"#results = df.apply(lambda x: edit_distance(x[\"column1\"], x[\"column2\"]), axis=1)"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [],
"source": [
"affiliations = affiliations.merge(univ_locations, on=record_col)"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [
2 years ago
{
"data": {
2 years ago
"text/plain": " UT (Unique WOS ID) Affiliations \n0 WOS:000209536100003 NATURAL HISTORY MUSEUM LONDON \\\n1 WOS:000209536100003 NATURAL HISTORY MUSEUM LONDON \n2 WOS:000209536100003 NATURAL HISTORY MUSEUM LONDON \n3 WOS:000209536100003 NATURAL HISTORY MUSEUM LONDON \n4 WOS:000209536100003 NATURAL HISTORY MUSEUM LONDON \n\n Affiliations_merged \n0 NATURAL HISTORY MUSEUM LONDON \\\n1 NATURAL HISTORY MUSEUM LONDON \n2 NATURAL HISTORY MUSEUM LONDON \n3 NATURAL HISTORY MUSEUM LONDON \n4 NATURAL HISTORY MUSEUM LONDON \n\n Address Country \n0 BGI HK Ltd, GigaSci, Tai Po, Hong Kong, Peopl... China \\\n1 Nat Hist Museum, London SW7 5BD, England; United Kingdom \n2 Pensoft Publishers, Sofia, Bulgaria; Bulgaria \n3 Nat Hist Museum, Natl Museum, Sofia, Bulgaria; Bulgaria \n4 Bulgarian Acad Sci, Inst Biodivers & Ecosyst ... Bulgaria \n\n City Country_Type Institution levehnstein \n0 Hong Kong China BGI HK LTD 24 \n1 London Other NAT HIST MUSEUM 14 \n2 Sofia EU PENSOFT PUBLISHERS 25 \n3 Sofia EU NAT HIST MUSEUM 14 \n4 Rees EU BULGARIAN ACAD SCI 25 ",
"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>UT (Unique WOS ID)</th>\n <th>Affiliations</th>\n <th>Affiliations_merged</th>\n <th>Address</th>\n <th>Country</th>\n <th>City</th>\n <th>Country_Type</th>\n <th>Institution</th>\n <th>levehnstein</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>WOS:000209536100003</td>\n <td>NATURAL HISTORY MUSEUM LONDON</td>\n <td>NATURAL HISTORY MUSEUM LONDON</td>\n <td>BGI HK Ltd, GigaSci, Tai Po, Hong Kong, Peopl...</td>\n <td>China</td>\n <td>Hong Kong</td>\n <td>China</td>\n <td>BGI HK LTD</td>\n <td>24</td>\n </tr>\n <tr>\n <th>1</th>\n <td>WOS:000209536100003</td>\n <td>NATURAL HISTORY MUSEUM LONDON</td>\n <td>NATURAL HISTORY MUSEUM LONDON</td>\n <td>Nat Hist Museum, London SW7 5BD, England;</td>\n <td>United Kingdom</td>\n <td>London</td>\n <td>Other</td>\n <td>NAT HIST MUSEUM</td>\n <td>14</td>\n </tr>\n <tr>\n <th>2</th>\n <td>WOS:000209536100003</td>\n <td>NATURAL HISTORY MUSEUM LONDON</td>\n <td>NATURAL HISTORY MUSEUM LONDON</td>\n <td>Pensoft Publishers, Sofia, Bulgaria;</td>\n <td>Bulgaria</td>\n <td>Sofia</td>\n <td>EU</td>\n <td>PENSOFT PUBLISHERS</td>\n <td>25</td>\n </tr>\n <tr>\n <th>3</th>\n <td>WOS:000209536100003</td>\n <td>NATURAL HISTORY MUSEUM LONDON</td>\n <td>NATURAL HISTORY MUSEUM LONDON</td>\n <td>Nat Hist Museum, Natl Museum, Sofia, Bulgaria;</td>\n <td>Bulgaria</td>\n <td>Sofia</td>\n <td>EU</td>\n <td>NAT HIST MUSEUM</td>\n <td>14</td>\n </tr>\n <tr>\n <th>4</th>\n <td>WOS:000209536100003</td>\n <td>NATURAL HISTORY MUSEUM LONDON</td>\n <td>NATURAL HISTORY MUSEUM LONDON</td>\n <td>Bulgarian Acad Sci, Inst Biodivers &amp; Ecosyst ...</td>\n <td>Bulgaria</td>\n <td>Rees</td>\n <td>EU</td>\n <td>BULGARIAN ACAD SCI</td>\n <td>25</td>\n </tr>\n </tbody>\n</table>\n</div>"
2 years ago
},
2 years ago
"execution_count": 26,
2 years ago
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
2 years ago
"affiliations[\"Affiliations\"] = affiliations[\"Affiliations\"].str.upper().str.strip()\n",
"affiliations[\"Institution\"] = affiliations[\"Institution\"].str.upper().str.strip()\n",
"\n",
"affiliations[\"levehnstein\"] = affiliations.apply(\n",
" lambda x: edit_distance(x[\"Affiliations\"], x[\"Institution\"]), axis=1)\n",
"affiliations.head()"
]
},
{
"cell_type": "code",
"execution_count": 71,
"outputs": [],
"source": [
"def tok_overlap(lon_str, short_str):\n",
" l,s = lon_str.split(\" \"), short_str.split(\" \")\n",
" # create a pairwise distance matrix using NumPy\n",
" distance_matrix = np.fromfunction(np.vectorize(lambda i, j: edit_distance(l[int(i)], s[int(j)])), shape=(len(l), len(s)))\n",
" distance_frame = pd.DataFrame(data=distance_matrix, columns=s, index=l)\n",
"\n",
" return min(distance_frame.min().sum(),distance_frame.T.min().sum())\n",
"\n",
"# lon=(\"UNIVERSITY\",\"AMSTERDAM\",\"TECHNICAL\", \"LOCAL\")\n",
"# sho=(\"UNIV\",\"AMSTER\",\"TECH\",\"LOCAL\")\n",
"# tok_overlap(lon_str=\" \".join(lon),short_str=\" \".join(sho)).min().sum()"
2 years ago
],
"metadata": {
"collapsed": false
}
},
{
"cell_type": "code",
2 years ago
"execution_count": 62,
2 years ago
"outputs": [
{
2 years ago
"data": {
"text/plain": "(4, 3)"
},
"execution_count": 62,
"metadata": {},
"output_type": "execute_result"
2 years ago
}
],
"source": [
2 years ago
"tok_overlap(lon_str=\" \".join(l),short_str=\" \".join(s)).shape"
2 years ago
],
"metadata": {
"collapsed": false
}
2 years ago
},
{
"cell_type": "code",
1 year ago
"execution_count": 72,
"outputs": [
{
"data": {
"text/plain": " UT (Unique WOS ID) Affiliations \n0 WOS:000209536100003 NATURAL HISTORY MUSEUM LONDON \\\n1 WOS:000209536100003 NATURAL HISTORY MUSEUM LONDON \n2 WOS:000209536100003 NATURAL HISTORY MUSEUM LONDON \n3 WOS:000209536100003 NATURAL HISTORY MUSEUM LONDON \n4 WOS:000209536100003 NATURAL HISTORY MUSEUM LONDON \n\n Affiliations_merged \n0 NATURAL HISTORY MUSEUM LONDON \\\n1 NATURAL HISTORY MUSEUM LONDON \n2 NATURAL HISTORY MUSEUM LONDON \n3 NATURAL HISTORY MUSEUM LONDON \n4 NATURAL HISTORY MUSEUM LONDON \n\n Address Country \n0 BGI HK Ltd, GigaSci, Tai Po, Hong Kong, Peopl... China \\\n1 Nat Hist Museum, London SW7 5BD, England; United Kingdom \n2 Pensoft Publishers, Sofia, Bulgaria; Bulgaria \n3 Nat Hist Museum, Natl Museum, Sofia, Bulgaria; Bulgaria \n4 Bulgarian Acad Sci, Inst Biodivers & Ecosyst ... Bulgaria \n\n City Country_Type Institution levehnstein token_overlap \n0 Hong Kong China BGI HK LTD 24 16 \n1 London Other NAT HIST MUSEUM 14 7 \n2 Sofia EU PENSOFT PUBLISHERS 25 12 \n3 Sofia EU NAT HIST MUSEUM 14 7 \n4 Rees EU BULGARIAN ACAD SCI 25 17 ",
"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>UT (Unique WOS ID)</th>\n <th>Affiliations</th>\n <th>Affiliations_merged</th>\n <th>Address</th>\n <th>Country</th>\n <th>City</th>\n <th>Country_Type</th>\n <th>Institution</th>\n <th>levehnstein</th>\n <th>token_overlap</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>WOS:000209536100003</td>\n <td>NATURAL HISTORY MUSEUM LONDON</td>\n <td>NATURAL HISTORY MUSEUM LONDON</td>\n <td>BGI HK Ltd, GigaSci, Tai Po, Hong Kong, Peopl...</td>\n <td>China</td>\n <td>Hong Kong</td>\n <td>China</td>\n <td>BGI HK LTD</td>\n <td>24</td>\n <td>16</td>\n </tr>\n <tr>\n <th>1</th>\n <td>WOS:000209536100003</td>\n <td>NATURAL HISTORY MUSEUM LONDON</td>\n <td>NATURAL HISTORY MUSEUM LONDON</td>\n <td>Nat Hist Museum, London SW7 5BD, England;</td>\n <td>United Kingdom</td>\n <td>London</td>\n <td>Other</td>\n <td>NAT HIST MUSEUM</td>\n <td>14</td>\n <td>7</td>\n </tr>\n <tr>\n <th>2</th>\n <td>WOS:000209536100003</td>\n <td>NATURAL HISTORY MUSEUM LONDON</td>\n <td>NATURAL HISTORY MUSEUM LONDON</td>\n <td>Pensoft Publishers, Sofia, Bulgaria;</td>\n <td>Bulgaria</td>\n <td>Sofia</td>\n <td>EU</td>\n <td>PENSOFT PUBLISHERS</td>\n <td>25</td>\n <td>12</td>\n </tr>\n <tr>\n <th>3</th>\n <td>WOS:000209536100003</td>\n <td>NATURAL HISTORY MUSEUM LONDON</td>\n <td>NATURAL HISTORY MUSEUM LONDON</td>\n <td>Nat Hist Museum, Natl Museum, Sofia, Bulgaria;</td>\n <td>Bulgaria</td>\n <td>Sofia</td>\n <td>EU</td>\n <td>NAT HIST MUSEUM</td>\n <td>14</td>\n <td>7</td>\n </tr>\n <tr>\n <th>4</th>\n <td>WOS:000209536100003</td>\n <td>NATURAL HISTORY MUSEUM LONDON</td>\n <td>NATURAL HISTORY MUSEUM LONDON</td>\n <td>Bulgarian Acad Sci, Inst Biodivers &amp; Ecosyst ...</td>\n <td>Bulgaria</td>\n <td>Rees</td>\n <td>EU</td>\n <td>BULGARIAN ACAD SCI</td>\n <td>25</td>\n <td>17</td>\n </tr>\n </tbody>\n</table>\n</div>"
},
"execution_count": 72,
"metadata": {},
"output_type": "execute_result"
}
],
2 years ago
"source": [
"affiliations[\"token_overlap\"] = affiliations.apply(\n",
" lambda x: tok_overlap(x[\"Affiliations\"], x[\"Institution\"]), axis=1)\n",
"affiliations.head()"
],
"metadata": {
1 year ago
"collapsed": false
}
},
{
"cell_type": "code",
"execution_count": 73,
"outputs": [
{
"data": {
"text/plain": " UT (Unique WOS ID) Affiliations \n2430154 WOS:000947693400001 UNIVERSITAT POLITECNICA DE VALENCIA \\\n2430132 WOS:000947693400001 SHANGHAITECH UNIVERSITY \n2430139 WOS:000947693400001 SHANGHAI OCEAN UNIVERSITY \n2430146 WOS:000947693400001 SHANGHAI JIAO TONG UNIVERSITY \n2430125 WOS:000947693400001 HUZHOU UNIVERSITY \n... ... ... \n43 WOS:000301090100061 BIRKBECK UNIVERSITY LONDON \n13 WOS:000297893800037 UNIVERSIDAD POLITECNICA DE MADRID \n11 WOS:000297893800037 BEIJING INSTITUTE OF TECHNOLOGY \n1 WOS:000209536100003 NATURAL HISTORY MUSEUM LONDON \n9 WOS:000209536100003 BULGARIAN ACADEMY OF SCIENCES \n\n Affiliations_merged \n2430154 UNIVERSITAT POLITECNICA DE VALENCIA \\\n2430132 SHANGHAITECH UNIVERSITY \n2430139 SHANGHAI UNIVERSITY \n2430146 SHANGHAI UNIVERSITY \n2430125 HUZHOU UNIVERSITY \n... ... \n43 BIRKBECK UNIVERSITY LONDON \n13 UNIVERSIDAD POLITECNICA DE MADRID \n11 BEIJING INSTITUTE OF TECHNOLOGY \n1 NATURAL HISTORY MUSEUM LONDON \n9 BULGARIAN ACADEMY OF SCIENCES \n\n Address Country \n2430154 Univ Politecn Valencia, European Inst Innovat... Spain \\\n2430132 ShanghaiTech Univ, Shanghai Inst Adv Immunoch... China \n2430139 Shanghai Ocean Univ, Coll Fisheries & Life Sc... China \n2430146 Shanghai Jiao Tong Univ, Ruijin Hosp, Sch Med... China \n2430125 Huzhou Univ, Sch Informat Engn, Huzhou 313000... China \n... ... ... \n43 Birkbeck Coll London, Sch Psychol, London, En... United Kingdom \n13 UPM, Ctr Elect Ind, Madrid 28006, Spain Spain \n11 UPM, Ctr Elect Ind, Madrid 28006, Spain Spain \n1 Nat Hist Museum, London SW7 5BD, England; United Kingdom \n9 Bulgarian Acad Sci, Inst Biodivers & Ecosyst ... Bulgaria \n\n City Country_Type Institution levehnstein \n2430154 Valencia EU UNIV POLITECN VALENCIA 13 \\\n2430132 Shanghai China SHANGHAITECH UNIV 6 \n2430139 Shanghai China SHANGHAI OCEAN UNIV 6 \n2430146 Meda China SHANGHAI JIAO TONG UNIV 6 \n2430125 Huzhou China HUZHOU UNIV 6 \n... ... ... ... ... \n43 London Other BIRKBECK COLL LONDON 10 \n13 Madrid EU UPM 30 \n11 Madrid EU UPM 30 \n1 London Other NAT HIST MUSEUM 14 \n9 Rees EU BULGARIAN ACAD SCI 11 \n\n token_overlap \n2430154 7 \n2430132 6 \n2430139 5 \n2430146 4 \n2430125 5 \n... ... \n43 5 \n13 3 \n11 3 \n1 7 \n9 6 \n\n[63590 rows x 10 columns]",
"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>UT (Unique WOS ID)</th>\n <th>Affiliations</th>\n <th>Affiliations_merged</th>\n <th>Address</th>\n <th>Country</th>\n <th>City</th>\n <th>Country_Type</th>\n <th>Institution</th>\n <th>levehnstein</th>\n <th>token_overlap</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>2430154</th>\n <td>WOS:000947693400001</td>\n <td>UNIVERSITAT POLITECNICA DE VALENCIA</td>\n <td>UNIVERSITAT POLITECNICA DE VALENCIA</td>\n <td>Univ Politecn Valencia, European Inst Innovat...</td>\n <td>Spain</td>\n <td>Valencia</td>\n <td>EU</td>\n <td>UNIV POLITECN VALENCIA</td>\n <td>13</td>\n <td>7</td>\n </tr>\n <tr>\n <th>2430132</th>\n <td>WOS:000947693400001</td>\n <td>SHANGHAITECH UNIVERSITY</td>\n <td>SHANGHAITECH UNIVERSITY</td>\n <td>ShanghaiTech Univ, Shanghai Inst Adv Immunoch...</td>\n <td>China</td>\n <td>Shanghai</td>\n <td>China</td>\n <td>SHANGHAITECH UNIV</td>\n <td>6</td>\n <td>6</td>\n </tr>\n <tr>\n <th>2430139</th>\n <td>WOS:000947693400001</td>\n <td>SHANGHAI OCEAN UNIVERSITY</td>\n <td>SHANGHAI UNIVERSITY</td>\n <td>Shanghai Ocean Univ, Coll Fisheries &amp; Life Sc...</td>\n <td>China</td>\n <td>Shanghai</td>\n <td>China</td>\n <td>SHANGHAI OCEAN UNIV</td>\n <td>6</td>\n <td>5</td>\n </tr>\n <tr>\n <th>2430146</th>\n <td>WOS:000947693400001</td>\n <td>SHANGHAI JIAO TONG UNIVERSITY</td>\n <td>SHANGHAI UNIVERSITY</td>\n <td>Shanghai Jiao Tong Univ, Ruijin Hosp, Sch Med...</td>\n <td>China</td>\n <td>Meda</td>\n <td>China</td>\n <td>SHANGHAI JIAO TONG UNIV</td>\n <td>6</td>\n <td>4</td>\n </tr>\n <tr>\n <th>2430125</th>\n <td>WOS:000947693400001</td>\n <td>HUZHOU UNIVERSITY</td>\n <td>HUZHOU UNIVERSITY</td>\n <td>Huzhou Univ, Sch Informat Engn, Huzhou 313000...</td>\n <td>China</td>\n <td>Huzhou</td>\n <td>China</td>\n <td>HUZHOU UNIV</td>\n <td>6</td>\n <td>5</td>\n </tr>\n <tr>\n <th>...</th>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n </tr>\n <tr>\n <th>43</th>\n <td>WOS:000301090100061</td>\n <td>BIRKBECK UNIVERSITY LONDON</td>\n <td>BIRKBECK UNIVERSITY LONDON</td>\n <td>Birkbeck Coll London, Sch Psychol, London, En...</td>\n <td>United Kingdom</td>\n <td>London</td>\n <td>Other</td>\n <td>BIRKBECK COLL LONDON</td>\n <td>10</td>\n <td>5</td>\n </tr>\n <tr>\n <th>13</th>\n <td>WOS:000297893800037</td>\n <td>UNIVERSIDAD POLITECNICA DE MADRID</td>\n <td>UNIVERSIDAD POLITECNICA DE MADRID</td>\n <td>UPM, Ctr Elect Ind, Madrid 28006, Spain</td>\n <td>Spain</td>\n <td>Madrid</td>\n <td>EU</td>\n <td>UPM</td>\n <td>30</td>\n <td>3</td>\n </tr>\n <tr>\n <th>11</th>\n <td>WOS:000297893800037</td>\n <td>BEIJING INSTITUTE OF TECHNOLOGY</td>\n <td>BEIJING INSTITUTE OF TECHNOLOGY</td>\n <td>UPM, Ctr Elect Ind, Madrid 28006, Spain</td>\n <td>Spain</td>\n <td>Madrid</td>\n <td>EU</td>\n <td>UPM</td>\n <td>30</td>\n <td>3</td>\n </tr>\n <tr>\n <th>1</th>\n <td>WOS:000209536100003</td>\n <td>NATURAL HISTORY MUSEUM LONDON</td>\n <td>NATURAL HISTORY MUSEUM LONDON</td>\n <td>Nat Hist Museum, London SW7 5BD, England;</td>\n <td>United Kingdom<
},
"execution_count": 73,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"affiliations.sort_values(by=[record_col,\"Affiliations\",\"token_overlap\"], ascending=[False,False,True]).drop_duplicates(subset=[record_col,\"Affiliations\"])"
],
"metadata": {
"collapsed": false
}
},
{
"cell_type": "code",
"execution_count": 80,
"outputs": [
{
"data": {
"text/plain": "Affiliations\n(ADVENTHEALTH) CENTRAL FLORIDA DIVISION CHARITE\n1 DECEMBRIE 1918 UNIVERSITY ALBA IULIA 1 DECEMBRIE 1918 UNIV ALBA IULIA\nA*STAR - BIOINFORMATICS INSTITUTE (BII) ASTAR\nA*STAR - GENOME INSTITUTE OF SINGAPORE (GIS) UNIV COPENHAGEN\nA*STAR - INSTITUTE FOR INFOCOMM RESEARCH (I2R) ASTAR\n ... \nZTE ZTE CORP\nZUNYI MEDICAL UNIVERSITY [JINAN UNIV, NCI, SANOFI]\nZURICH CENTER INTEGRATIVE HUMAN PHYSIOLOGY (ZIHP) UNIV ZURICH\nZURICH UNIVERSITY OF APPLIED SCIENCES [IRD, SAS, UCL]\nZUSE INSTITUTE BERLIN ZUSE INST BERLIN\nName: Institution, Length: 4884, dtype: object"
},
"execution_count": 80,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"helper = affiliations.sort_values(by=[\"Affiliations\",\"token_overlap\"], ascending=[False,True]).drop_duplicates(subset=[record_col,\"Affiliations\"])\n",
"afh = helper[[\"Affiliations\",\"Institution\",\"Country\"]]\n",
"afh.groupby(\"Affiliations\")[\"Institution\"].agg(pd.Series.mode)"
],
"metadata": {
"collapsed": false
}
},
{
"cell_type": "code",
"execution_count": 82,
"outputs": [
{
"data": {
"text/plain": "Affiliations\n(ADVENTHEALTH) CENTRAL FLORIDA DIVISION Germany\n1 DECEMBRIE 1918 UNIVERSITY ALBA IULIA Romania\nA*STAR - BIOINFORMATICS INSTITUTE (BII) Singapore\nA*STAR - GENOME INSTITUTE OF SINGAPORE (GIS) Denmark\nA*STAR - INSTITUTE FOR INFOCOMM RESEARCH (I2R) Singapore\n ... \nZTE China\nZUNYI MEDICAL UNIVERSITY United States\nZURICH CENTER INTEGRATIVE HUMAN PHYSIOLOGY (ZIHP) Switzerland\nZURICH UNIVERSITY OF APPLIED SCIENCES [France, United Kingdom, United States]\nZUSE INSTITUTE BERLIN Germany\nName: Country, Length: 4884, dtype: object"
},
"execution_count": 82,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"afh.groupby(\"Affiliations\")[\"Country\"].agg(pd.Series.mode)"
],
"metadata": {
"collapsed": false
}
},
{
"cell_type": "code",
"execution_count": 92,
"outputs": [],
"source": [
"helper1 = affiliations.sort_values(by=[\"Affiliations\",\"token_overlap\"], ascending=[False,True]).drop_duplicates(subset=[record_col,\"Affiliations\"])\n",
"afh1 = helper1[[\"Affiliations\",\"Institution\",\"City\",\"Country\",\"Country_Type\"]]\n",
"mode1_i = afh1.groupby(\"Affiliations\")[\"Institution\"].apply(pd.Series.mode).reset_index()\n",
"mode1_c = afh1.groupby(\"Affiliations\")[\"Country\"].apply(pd.Series.mode).reset_index()\n",
"mode1_city = afh1.groupby(\"Affiliations\")[\"City\"].apply(pd.Series.mode).reset_index()\n",
"mode1_type = afh1.groupby(\"Affiliations\")[\"Country_Type\"].apply(pd.Series.mode).reset_index()\n",
"\n",
"helper2 = affiliations.sort_values(by=[\"Affiliations\",\"levehnstein\"], ascending=[False,True]).drop_duplicates(subset=[record_col,\"Affiliations\"])\n",
"afh2 = helper2[[\"Affiliations\",\"Institution\",\"City\",\"Country\",\"Country_Type\"]]\n",
"mode2_i = afh2.groupby(\"Affiliations\")[\"Institution\"].apply(pd.Series.mode).reset_index()\n",
"mode2_c = afh2.groupby(\"Affiliations\")[\"Country\"].apply(pd.Series.mode).reset_index()\n",
"mode2_city = afh2.groupby(\"Affiliations\")[\"City\"].apply(pd.Series.mode).reset_index()\n",
"mode2_type = afh2.groupby(\"Affiliations\")[\"Country_Type\"].apply(pd.Series.mode).reset_index()\n",
"\n",
"mode_i = pd.concat([mode1_i,mode2_i],ignore_index=True)[[\"Affiliations\",\"Institution\"]].groupby(\"Affiliations\")[\"Institution\"].agg(\n",
" lambda x: pd.Series.mode(x)[0])\n",
"mode_c = pd.concat([mode1_c,mode2_c],ignore_index=True)[[\"Affiliations\",\"Country\"]].groupby(\"Affiliations\")[\"Country\"].agg(\n",
" lambda x: pd.Series.mode(x)[0])\n",
"mode_city = pd.concat([mode1_city,mode2_city],ignore_index=True)[[\"Affiliations\",\"City\"]].groupby(\"Affiliations\")[\"City\"].agg(\n",
" lambda x: pd.Series.mode(x)[0])\n",
"mode_type = pd.concat([mode1_type,mode2_type],ignore_index=True)[[\"Affiliations\",\"Country_Type\"]].groupby(\"Affiliations\")[\"Country_Type\"].agg(\n",
" lambda x: pd.Series.mode(x)[0])"
],
"metadata": {
"collapsed": false
}
},
{
"cell_type": "code",
"execution_count": 99,
"outputs": [
{
"data": {
"text/plain": " Affiliations \n0 (ADVENTHEALTH) CENTRAL FLORIDA DIVISION \\\n1 1 DECEMBRIE 1918 UNIVERSITY ALBA IULIA \n2 A*STAR - BIOINFORMATICS INSTITUTE (BII) \n3 A*STAR - GENOME INSTITUTE OF SINGAPORE (GIS) \n4 A*STAR - INSTITUTE FOR INFOCOMM RESEARCH (I2R) \n... ... \n4795 ZTE \n4796 ZUNYI MEDICAL UNIVERSITY \n4797 ZURICH CENTER INTEGRATIVE HUMAN PHYSIOLOGY (ZIHP) \n4798 ZURICH UNIVERSITY OF APPLIED SCIENCES \n4799 ZUSE INSTITUTE BERLIN \n\n Institution (short name from address) Country_candidate City_candidate \n0 CHARITE Canada Berlin \\\n1 1 DECEMBRIE 1918 UNIV ALBA IULIA Romania Alba Iulia \n2 ASTAR China Jinan \n3 AGCY SCI TECHNOL & RES Denmark Copenhagen \n4 ASTAR Singapore Rees \n... ... ... ... \n4795 ZTE CORP China Shenzhen \n4796 JINAN UNIV China Bethesda \n4797 NATL CTR EXCELLENCE YOUTH MENTAL HLTH Switzerland Zürich \n4798 IRD France Cary \n4799 ZUSE INST BERLIN Germany Berlin \n\n Country_type_candidate \n0 EU \n1 EU \n2 China \n3 EU \n4 Other \n... ... \n4795 China \n4796 China \n4797 Other \n4798 Other \n4799 EU \n\n[4800 rows x 5 columns]",
"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>Affiliations</th>\n <th>Institution (short name from address)</th>\n <th>Country_candidate</th>\n <th>City_candidate</th>\n <th>Country_type_candidate</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>(ADVENTHEALTH) CENTRAL FLORIDA DIVISION</td>\n <td>CHARITE</td>\n <td>Canada</td>\n <td>Berlin</td>\n <td>EU</td>\n </tr>\n <tr>\n <th>1</th>\n <td>1 DECEMBRIE 1918 UNIVERSITY ALBA IULIA</td>\n <td>1 DECEMBRIE 1918 UNIV ALBA IULIA</td>\n <td>Romania</td>\n <td>Alba Iulia</td>\n <td>EU</td>\n </tr>\n <tr>\n <th>2</th>\n <td>A*STAR - BIOINFORMATICS INSTITUTE (BII)</td>\n <td>ASTAR</td>\n <td>China</td>\n <td>Jinan</td>\n <td>China</td>\n </tr>\n <tr>\n <th>3</th>\n <td>A*STAR - GENOME INSTITUTE OF SINGAPORE (GIS)</td>\n <td>AGCY SCI TECHNOL &amp; RES</td>\n <td>Denmark</td>\n <td>Copenhagen</td>\n <td>EU</td>\n </tr>\n <tr>\n <th>4</th>\n <td>A*STAR - INSTITUTE FOR INFOCOMM RESEARCH (I2R)</td>\n <td>ASTAR</td>\n <td>Singapore</td>\n <td>Rees</td>\n <td>Other</td>\n </tr>\n <tr>\n <th>...</th>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n </tr>\n <tr>\n <th>4795</th>\n <td>ZTE</td>\n <td>ZTE CORP</td>\n <td>China</td>\n <td>Shenzhen</td>\n <td>China</td>\n </tr>\n <tr>\n <th>4796</th>\n <td>ZUNYI MEDICAL UNIVERSITY</td>\n <td>JINAN UNIV</td>\n <td>China</td>\n <td>Bethesda</td>\n <td>China</td>\n </tr>\n <tr>\n <th>4797</th>\n <td>ZURICH CENTER INTEGRATIVE HUMAN PHYSIOLOGY (ZIHP)</td>\n <td>NATL CTR EXCELLENCE YOUTH MENTAL HLTH</td>\n <td>Switzerland</td>\n <td>Zürich</td>\n <td>Other</td>\n </tr>\n <tr>\n <th>4798</th>\n <td>ZURICH UNIVERSITY OF APPLIED SCIENCES</td>\n <td>IRD</td>\n <td>France</td>\n <td>Cary</td>\n <td>Other</td>\n </tr>\n <tr>\n <th>4799</th>\n <td>ZUSE INSTITUTE BERLIN</td>\n <td>ZUSE INST BERLIN</td>\n <td>Germany</td>\n <td>Berlin</td>\n <td>EU</td>\n </tr>\n </tbody>\n</table>\n<p>4800 rows × 5 columns</p>\n</div>"
},
"execution_count": 99,
"metadata": {},
"output_type": "execute_result"
2 years ago
}
1 year ago
],
"source": [
"from functools import reduce\n",
"dfs = [mode_i, mode_c, mode_city, mode_type]\n",
"mode_final = reduce(lambda left,right: pd.merge(left,right,on='Affiliations'), dfs)\n",
"mode_final = mode_final.reset_index()\n",
"mode_final.columns = [\"Affiliations\",\"Institution (short name from address)\",\"Country_candidate\",\"City_candidate\",\"Country_type_candidate\"]\n",
"mode_final"
],
"metadata": {
"collapsed": false
2 years ago
}
},
{
"cell_type": "code",
"execution_count": 40,
"outputs": [
{
"data": {
"text/plain": " Affiliations \n1873185 (ADVENTHEALTH) CENTRAL FLORIDA DIVISION \\\n1873299 (ADVENTHEALTH) CENTRAL FLORIDA DIVISION \n1873346 (ADVENTHEALTH) CENTRAL FLORIDA DIVISION \n1873394 (ADVENTHEALTH) CENTRAL FLORIDA DIVISION \n1873170 (ADVENTHEALTH) CENTRAL FLORIDA DIVISION \n... ... \n715405 ZUSE INSTITUTE BERLIN \n1548143 ZUSE INSTITUTE BERLIN \n715403 ZUSE INSTITUTE BERLIN \n1548154 ZUSE INSTITUTE BERLIN \n715409 ZUSE INSTITUTE BERLIN \n\n Institution levehnstein \n1873185 ST JOSEPHS HLTH CARE LONDON 28 \n1873299 ATHENS NAVAL & VET HOSP 28 \n1873346 ASST VALCAMONICA OSPED ESINE 28 \n1873394 ASST VALTELLINA & ALTO LARIO 28 \n1873170 FUNDACAO CTR MED CAMPINAS 29 \n... ... ... \n715405 CARL VON OSSIETZKY UNIV OLDENBURG 25 \n1548143 CHONGQING UNIV POSTS & TELECOMMUN 26 \n715403 GERMAN CTR NEURODEGENRAT DIS DZNE 27 \n1548154 UNIV KLINIKUM SCHLESWIG HOLSTEIN KIEL 30 \n715409 INESC TEC INST ENGN SISTEMAS & COMP TECNOL & CIEN 35 \n\n[773544 rows x 3 columns]",
"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>Affiliations</th>\n <th>Institution</th>\n <th>levehnstein</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>1873185</th>\n <td>(ADVENTHEALTH) CENTRAL FLORIDA DIVISION</td>\n <td>ST JOSEPHS HLTH CARE LONDON</td>\n <td>28</td>\n </tr>\n <tr>\n <th>1873299</th>\n <td>(ADVENTHEALTH) CENTRAL FLORIDA DIVISION</td>\n <td>ATHENS NAVAL &amp; VET HOSP</td>\n <td>28</td>\n </tr>\n <tr>\n <th>1873346</th>\n <td>(ADVENTHEALTH) CENTRAL FLORIDA DIVISION</td>\n <td>ASST VALCAMONICA OSPED ESINE</td>\n <td>28</td>\n </tr>\n <tr>\n <th>1873394</th>\n <td>(ADVENTHEALTH) CENTRAL FLORIDA DIVISION</td>\n <td>ASST VALTELLINA &amp; ALTO LARIO</td>\n <td>28</td>\n </tr>\n <tr>\n <th>1873170</th>\n <td>(ADVENTHEALTH) CENTRAL FLORIDA DIVISION</td>\n <td>FUNDACAO CTR MED CAMPINAS</td>\n <td>29</td>\n </tr>\n <tr>\n <th>...</th>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n </tr>\n <tr>\n <th>715405</th>\n <td>ZUSE INSTITUTE BERLIN</td>\n <td>CARL VON OSSIETZKY UNIV OLDENBURG</td>\n <td>25</td>\n </tr>\n <tr>\n <th>1548143</th>\n <td>ZUSE INSTITUTE BERLIN</td>\n <td>CHONGQING UNIV POSTS &amp; TELECOMMUN</td>\n <td>26</td>\n </tr>\n <tr>\n <th>715403</th>\n <td>ZUSE INSTITUTE BERLIN</td>\n <td>GERMAN CTR NEURODEGENRAT DIS DZNE</td>\n <td>27</td>\n </tr>\n <tr>\n <th>1548154</th>\n <td>ZUSE INSTITUTE BERLIN</td>\n <td>UNIV KLINIKUM SCHLESWIG HOLSTEIN KIEL</td>\n <td>30</td>\n </tr>\n <tr>\n <th>715409</th>\n <td>ZUSE INSTITUTE BERLIN</td>\n <td>INESC TEC INST ENGN SISTEMAS &amp; COMP TECNOL &amp; CIEN</td>\n <td>35</td>\n </tr>\n </tbody>\n</table>\n<p>773544 rows × 3 columns</p>\n</div>"
},
"execution_count": 40,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"aff_lookup = affiliations[[\"Affiliations\",\"Institution\",\"levehnstein\"]].drop_duplicates().sort_values(by=[\"Affiliations\",\"levehnstein\"],ascending=[True,True])\n",
"aff_lookup"
],
"metadata": {
"collapsed": false
}
},
{
"cell_type": "code",
"execution_count": 42,
"outputs": [
{
"data": {
"text/plain": "[['THERESIENKRANKENHAUS'],\n ['CHARITE'],\n ['SALAMAH'],\n ['ASTAR'],\n ['INSERM'],\n ['CNRS'],\n ['MIT'],\n ['CNPQ'],\n ['UNICEN'],\n ['IRCCS'],\n ['NEI'],\n ['UCL'],\n ['UESTC'],\n ['SOVECTRON'],\n ['NTENT'],\n ['IEEE'],\n ['QMUL'],\n ['LCA'],\n ['CALTECH'],\n ['EUROFUSION'],\n ['LIWFUSION'],\n ['CIEMAT'],\n ['UNED'],\n ['ZALANDO'],\n ['VIIT'],\n ['CUNY'],\n ['KIIT'],\n ['USTC'],\n ['ASIPP'],\n ['ORISE'],\n ['IET'],\n ['AAIA'],\n ['TRAP'],\n ['CSIC'],\n ['ESAC'],\n ['ESTEC'],\n ['SISSA'],\n ['CERN'],\n ['IRFM'],\n ['NOKIA'],\n ['BUPT'],\n ['JET'],\n ['NIH'],\n ['MICROSOFT'],\n ['METU'],\n ['RIKEN'],\n ['QST'],\n ['DIFFER'],\n ['CEFCA'],\n ['ULL'],\n ['INFN'],\n ['IUCAA'],\n ['BCS'],\n ['KTH'],\n ['CRPP'],\n ['CEA'],\n ['ULB'],\n ['CCFE'],\n ['COMPX'],\n ['HKUST'],\n ['UNSW'],\n ['IEEC'],\n ['AMAZON'],\n ['IPSL'],\n ['IRD'],\n ['RAS'],\n ['CIRAD'],\n ['CREAF'],\n ['NYU'],\n ['EPFL'],\n ['UPMC'],\n ['UAM'],\n ['NTNU'],\n ['ABBVIE'],\n ['GLAXOSMITHKLINE'],\n ['BELANGER-CHAMPAGNE'],\n ['AHARROUCHE'],\n ['BAHMANI'],\n ['COUTINHO'],\n ['ICREA'],\n ['BELLOMO'],\n ['AKESSON'],\n ['UCAS'],\n ['LPTPM'],\n ['CINDRO'],\n ['AKATSUKA'],\n ['AHMADOV'],\n ['DESY'],\n ['AOUN'],\n ['IN2P3'],\n ['IFAE'],\n ['CHEN'],\n ['AOKI'],\n ['AAD'],\n ['KEK'],\n ['FIAS'],\n ['HBNI'],\n ['CAS'],\n ['GRANDITUDE'],\n ['CSIRO'],\n ['NHGRI'],\n ['NPR'],\n ['ACECR'],\n ['MRC'],\n ['ORYGEN'],\n ['NEUROSKETCH'],\n ['JANCSITECH'],\n ['CNR'],\n ['BAINBRIDGE'],\n ['NICPB'],\n ['NIKITENKO'],\n ['IISER'],\n ['IPN'],\n ['BELL'],\n ['PATH'],\n ['WHO'],\n ['CHALEARN'],\n ['4PARADIGM'],\n ['CORNELL'],\n ['INRIA'],\n ['ANU'],\n ['USC'],\n ['CMU'],\n ['UIUC'],\n ['EMORY'],\n ['ABDULLIN'],\n ['ACOSTA'],\n ['CUMALAT'],\n ['AMIN'],\n ['BRANSON'],\n ['BELYAEV'],\n ['ETH'],\n ['NSU'],\n ['NTU'],\n ['COUBEZ'],\n ['INPP'],\n ['OEAW'],\n ['GAPPS'],\n ['TNO'],\n ['MEDTRONIC'],\n ['METEOSWISS'],\n ['ASTRON'],\n ['INAF'],\n ['ESA'],\n ['IFPU'],\n ['INTERDIGITAL'],\n ['QCAT'],\n ['AETHERAI'],\n ['AGRESEARCH'],\n ['ARS'],\n ['CICAPS'],\n ['INRA'],\n ['AGROPARISTECH'],\n ['AGROSCOPE'],\n ['UAB'],\n ['MAGELLIUM'],\n ['IFREMER'],\n ['AIRBUS'],\n ['EUMETSAT'],\n ['CINVESTAV'],\n ['AREEO'],\n ['NOVELTIS'],\n ['NERSC'],\n ['IRRCS'],\n ['ISRO'],\n ['CNES'],\n ['JAMSTEC'],\n ['CIMA'],\n ['UNAM'],\n ['SOCIB'],\n ['CLS'],\n ['PAS'],\n ['OCEANDATALAB'],\n ['LLC'],\n ['NIKHEF'],\n ['TIFR'],\n ['CAFPE'],\n ['ECMWF'],\n ['SATOC'],\n ['NOAA'],\n ['CPRM'],\n ['SHOM'],\n ['DAIM'],\n ['UTM'],\n ['NIA'],\n ['POSTECH'],\n ['DBRAIN'],\n ['GIANTAI'],\n ['ISCAS'],\n ['GOOGLE'],\n ['INTEL'],\n ['SOARTECH'],\n ['NNAISENSE'],\n ['OOSTO'],\n ['HUMINTEC'],\n ['CAPSS'],\n ['ISS'],\n ['JINR'],\n ['AMU'],\n ['HIP'],\n ['IKERBASQUE'],\n ['TRIUMF'],\n ['SNOLAB'],\n ['TUNL'],\n ['NASU'],\n ['ZILLOW'],\n ['OICR'],\n ['NCI'],\n ['DOCBOT'],\n ['PRIZE4LIFE'],\n ['LINKEDIN'],\n ['NVIDIA'],\n ['SONATRACH'],\n ['NPC'],\n ['SIMATS'],\n ['CAPSBE'],\n ['CCNU'],\n ['IIT'],\n ['URCA'],\n ['SOUNDCLOUD'],\n ['LINEA'],\n ['OPROJECT'],\n ['ELSEVIER'],\n ['LSST'],\n ['SMARTMORE'],\n ['JRC'],\n ['CASTELLDEFELS'],\n ['NASA'],\n ['AREU'],\n ['CERIST'],\n ['INSIGHTS2TECHINFO'],\n ['ERICSSON'],\n ['INICSA'],\n ['PSYCHIAT'],\n ['UNICAMILLUS'],\n ['ULTROMICS'],\n ['ISSSTE'],\n ['INCMNSZ'],\n ['TQEH'],\n ['PATHAI'],\n ['WITSEE'],\n ['HOSAIO'],\n ['INNSZ'],\n ['MSGSU'],\n ['EMBL'],\n ['NIMH'],\n ['UCLA'],\n ['HUAWEI'],\n ['HUST'],\n ['OMRF'],\n ['UMCU'],\n ['PTB'],\n ['UMCL'],\n ['TUM'],\n ['UNC'],\n ['UVSQ'],\n ['PSL'],\n ['CAML'],\n ['CMC'],\n ['UMC'],\n ['GRCC'],\n ['IRIT'],\n ['IRISA'],\n ['OSUR'],\n ['UOC'],\n ['ASTRAZENECA'],\n ['BAYER'],\n ['GALIXIR'],\n ['BEIERSDORF'],\n ['AT&T'],\n ['IST'],\n ['MILA'],\n ['ACCENTURE'],\n ['1QBIT'],\n ['UGA'],\n ['UBL'],\n ['UIB'],\n ['IAE'],\n ['INAIL'],\n ['JARA'],\n ['CIBERSAM'],\n ['IDIBAPS'],\n ['QUALCOMM'],\n ['NICTA'],\n ['IAC'],\n ['BYTEDANCE'],\n ['BBC'],\n ['NUMENTA'],\n ['OROBIX'],\n ['VHIR'],\n ['INAOE'],\n ['BIST'],\n ['EURECAT'],\n ['UB'],\n ['PAB'],\n ['FAU'],\n ['ICISE'],\n ['BAIDU'],\n ['EURECOM'],\n ['BUITEMS'],\n ['BHU'],\n ['DNANEXUS'],\n ['RESIST'],\n ['I
},
"execution_count": 42,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"aff_lookup_levehnstein = aff_lookup.copy()\n",
"aff_lookup_overlap = aff_lookup.copy()\n",
"inst_short = sorted([i.split(\" \") for i in list(aff_lookup_overlap[\"Institution\"].unique())], key=len)\n",
"inst_short"
],
"metadata": {
"collapsed": false
}
},
{
"cell_type": "code",
"execution_count": 41,
"outputs": [
{
"data": {
"text/plain": " Affiliations \n1873185 (ADVENTHEALTH) CENTRAL FLORIDA DIVISION \\\n1939932 1 DECEMBRIE 1918 UNIVERSITY ALBA IULIA \n933680 A*STAR - BIOINFORMATICS INSTITUTE (BII) \n2257766 A*STAR - GENOME INSTITUTE OF SINGAPORE (GIS) \n2364292 A*STAR - INSTITUTE FOR INFOCOMM RESEARCH (I2R) \n... ... \n1523750 ZTE \n2032613 ZUNYI MEDICAL UNIVERSITY \n476604 ZURICH CENTER INTEGRATIVE HUMAN PHYSIOLOGY (ZIHP) \n975211 ZURICH UNIVERSITY OF APPLIED SCIENCES \n715406 ZUSE INSTITUTE BERLIN \n\n Institution levehnstein \n1873185 ST JOSEPHS HLTH CARE LONDON 28 \n1939932 1 DECEMBRIE 1918 UNIV ALBA IULIA 6 \n933680 SHANDONG NORMAL UNIV 29 \n2257766 AGCY SCI TECHNOL & RES 34 \n2364292 INST INFOCOMM RES I2R 25 \n... ... ... \n1523750 ZTE CORP 5 \n2032613 ZUNYI MED UNIV 10 \n476604 SWISS FED INST TECHNOL ZURICH 36 \n975211 ZURICH UNIV APPL SCI ZHAW 17 \n715406 ZUSE INST BERLIN 5 \n\n[4884 rows x 3 columns]",
"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>Affiliations</th>\n <th>Institution</th>\n <th>levehnstein</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>1873185</th>\n <td>(ADVENTHEALTH) CENTRAL FLORIDA DIVISION</td>\n <td>ST JOSEPHS HLTH CARE LONDON</td>\n <td>28</td>\n </tr>\n <tr>\n <th>1939932</th>\n <td>1 DECEMBRIE 1918 UNIVERSITY ALBA IULIA</td>\n <td>1 DECEMBRIE 1918 UNIV ALBA IULIA</td>\n <td>6</td>\n </tr>\n <tr>\n <th>933680</th>\n <td>A*STAR - BIOINFORMATICS INSTITUTE (BII)</td>\n <td>SHANDONG NORMAL UNIV</td>\n <td>29</td>\n </tr>\n <tr>\n <th>2257766</th>\n <td>A*STAR - GENOME INSTITUTE OF SINGAPORE (GIS)</td>\n <td>AGCY SCI TECHNOL &amp; RES</td>\n <td>34</td>\n </tr>\n <tr>\n <th>2364292</th>\n <td>A*STAR - INSTITUTE FOR INFOCOMM RESEARCH (I2R)</td>\n <td>INST INFOCOMM RES I2R</td>\n <td>25</td>\n </tr>\n <tr>\n <th>...</th>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n </tr>\n <tr>\n <th>1523750</th>\n <td>ZTE</td>\n <td>ZTE CORP</td>\n <td>5</td>\n </tr>\n <tr>\n <th>2032613</th>\n <td>ZUNYI MEDICAL UNIVERSITY</td>\n <td>ZUNYI MED UNIV</td>\n <td>10</td>\n </tr>\n <tr>\n <th>476604</th>\n <td>ZURICH CENTER INTEGRATIVE HUMAN PHYSIOLOGY (ZIHP)</td>\n <td>SWISS FED INST TECHNOL ZURICH</td>\n <td>36</td>\n </tr>\n <tr>\n <th>975211</th>\n <td>ZURICH UNIVERSITY OF APPLIED SCIENCES</td>\n <td>ZURICH UNIV APPL SCI ZHAW</td>\n <td>17</td>\n </tr>\n <tr>\n <th>715406</th>\n <td>ZUSE INSTITUTE BERLIN</td>\n <td>ZUSE INST BERLIN</td>\n <td>5</td>\n </tr>\n </tbody>\n</table>\n<p>4884 rows × 3 columns</p>\n</div>"
},
"execution_count": 41,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"aff_lookup.drop_duplicates(subset=\"Affiliations\")"
],
"metadata": {
"collapsed": false
}
},
{
"cell_type": "code",
"execution_count": 39,
"outputs": [
{
"ename": "KeyboardInterrupt",
"evalue": "",
"output_type": "error",
"traceback": [
"\u001B[1;31m---------------------------------------------------------------------------\u001B[0m",
"\u001B[1;31mKeyboardInterrupt\u001B[0m Traceback (most recent call last)",
"Cell \u001B[1;32mIn[39], line 9\u001B[0m\n\u001B[0;32m 4\u001B[0m aff_lookup \u001B[38;5;241m=\u001B[39m aff_m\u001B[38;5;241m.\u001B[39mmerge(inst_m, how\u001B[38;5;241m=\u001B[39m\u001B[38;5;124m'\u001B[39m\u001B[38;5;124mcross\u001B[39m\u001B[38;5;124m'\u001B[39m)\n\u001B[0;32m 6\u001B[0m \u001B[38;5;66;03m# aff_lookup[\"levehnstein\"] = aff_lookup.apply(\u001B[39;00m\n\u001B[0;32m 7\u001B[0m \u001B[38;5;66;03m# lambda x: edit_distance(x[\"Affiliations\"], x[\"Institution\"]), axis=1)\u001B[39;00m\n\u001B[1;32m----> 9\u001B[0m aff_lookup\u001B[38;5;241m.\u001B[39massign(distance\u001B[38;5;241m=\u001B[39m[\u001B[38;5;241m*\u001B[39m\u001B[38;5;28mmap\u001B[39m(edit_distance, aff_lookup\u001B[38;5;241m.\u001B[39mAffiliations, aff_lookup\u001B[38;5;241m.\u001B[39mInstitution)])\n",
"File \u001B[1;32m~\\.conda\\envs\\MOME_BIGDATA\\lib\\site-packages\\nltk\\metrics\\distance.py:111\u001B[0m, in \u001B[0;36medit_distance\u001B[1;34m(s1, s2, substitution_cost, transpositions)\u001B[0m\n\u001B[0;32m 109\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m s1[i \u001B[38;5;241m-\u001B[39m \u001B[38;5;241m1\u001B[39m] \u001B[38;5;241m==\u001B[39m s2[j \u001B[38;5;241m-\u001B[39m \u001B[38;5;241m1\u001B[39m]:\n\u001B[0;32m 110\u001B[0m last_right_buf \u001B[38;5;241m=\u001B[39m j\n\u001B[1;32m--> 111\u001B[0m \u001B[43m_edit_dist_step\u001B[49m\u001B[43m(\u001B[49m\n\u001B[0;32m 112\u001B[0m \u001B[43m \u001B[49m\u001B[43mlev\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 113\u001B[0m \u001B[43m \u001B[49m\u001B[43mi\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 114\u001B[0m \u001B[43m \u001B[49m\u001B[43mj\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 115\u001B[0m \u001B[43m \u001B[49m\u001B[43ms1\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 116\u001B[0m \u001B[43m \u001B[49m\u001B[43ms2\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 117\u001B[0m \u001B[43m \u001B[49m\u001B[43mlast_left\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 118\u001B[0m \u001B[43m \u001B[49m\u001B[43mlast_right\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 119\u001B[0m \u001B[43m \u001B[49m\u001B[43msubstitution_cost\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43msubstitution_cost\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 120\u001B[0m \u001B[43m \u001B[49m\u001B[43mtranspositions\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mtranspositions\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 121\u001B[0m \u001B[43m \u001B[49m\u001B[43m)\u001B[49m\n\u001B[0;32m 122\u001B[0m last_left_t[s1[i \u001B[38;5;241m-\u001B[39m \u001B[38;5;241m1\u001B[39m]] \u001B[38;5;241m=\u001B[39m i\n\u001B[0;32m 123\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m lev[len1][len2]\n",
"File \u001B[1;32m~\\.conda\\envs\\MOME_BIGDATA\\lib\\site-packages\\nltk\\metrics\\distance.py:52\u001B[0m, in \u001B[0;36m_edit_dist_step\u001B[1;34m(lev, i, j, s1, s2, last_left, last_right, substitution_cost, transpositions)\u001B[0m\n\u001B[0;32m 50\u001B[0m b \u001B[38;5;241m=\u001B[39m lev[i][j \u001B[38;5;241m-\u001B[39m \u001B[38;5;241m1\u001B[39m] \u001B[38;5;241m+\u001B[39m \u001B[38;5;241m1\u001B[39m\n\u001B[0;32m 51\u001B[0m \u001B[38;5;66;03m# substitution\u001B[39;00m\n\u001B[1;32m---> 52\u001B[0m c \u001B[38;5;241m=\u001B[39m \u001B[43mlev\u001B[49m\u001B[43m[\u001B[49m\u001B[43mi\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;241;43m-\u001B[39;49m\u001B[43m \u001B[49m\u001B[38;5;241;43m1\u001B[39;49m\u001B[43m]\u001B[49m[j \u001B[38;5;241m-\u001B[39m \u001B[38;5;241m1\u001B[39m] \u001B[38;5;241m+\u001B[39m (substitution_cost \u001B[38;5;28;01mif\u001B[39;00m c1 \u001B[38;5;241m!=\u001B[39m c2 \u001B[38;5;28;01melse\u001B[39;00m \u001B[38;5;241m0\u001B[39m)\n\u001B[0;32m 54\u001B[0m \u001B[38;5;66;03m# transposition\u001B[39;00m\n\u001B[0;32m 55\u001B[0m d \u001B[38;5;241m=\u001B[39m c \u001B[38;5;241m+\u001B[39m \u001B[38;5;241m1\u001B[39m \u001B[38;5;66;03m# never picked by default\u001B[39;00m\n",
"\u001B[1;31mKeyboardInterrupt\u001B[0m: "
]
}
],
"source": [
"# aff_m = pd.DataFrame(affiliations[\"Affiliations\"].unique(), columns=[\"Affiliations\"])\n",
"# inst_m = pd.DataFrame(affiliations[[\"Institution\",\"Country_Type\",\"Country\",\"City\"]].drop_duplicates(),columns=[\"Institution\",\"Country_Type\",\"Country\",\"City\"])\n",
"#\n",
"# aff_lookup = aff_m.merge(inst_m, how='cross')\n",
"#\n",
"# # aff_lookup[\"levehnstein\"] = aff_lookup.apply(\n",
"# # lambda x: edit_distance(x[\"Affiliations\"], x[\"Institution\"]), axis=1)\n",
"#\n",
"# aff_lookup.assign(distance=[*map(edit_distance, aff_lookup.Affiliations, aff_lookup.Institution)])"
],
"metadata": {
"collapsed": false
}
},
{
"cell_type": "code",
"execution_count": 27,
"outputs": [
{
"data": {
"text/plain": "<Axes: ylabel='Frequency'>"
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"text/plain": "<Figure size 640x480 with 1 Axes>",
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAj0AAAGsCAYAAAA2QxZ6AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAsLElEQVR4nO3de3gU9b3H8c9uQi4SU0OAVFDxgtwChJAIovGGBYOSA2KxiApewYcCeuhTIVghCIhBi1rxKNjGouClKGApN0XU4wGFY5Bg4CRNRCAVKwsNImxIDDvnD2TrGpBkMslk+b1fz8PzML+d+e2XL0P2w8zsjMeyLEsAAACnOa/bBQAAADQGQg8AADACoQcAABiB0AMAAIxA6AEAAEYg9AAAACMQegAAgBEIPQAAwAiEHgAAYARjQ09VVZUGDhyojRs31nqbTZs2adCgQUpJSdHNN9+soqKiBqwQAAA4ycjQU1lZqQkTJqikpKTW25SVlenee+9Vv3799NZbb6ljx44aM2aMqqqqGrBSAADgFONCT2lpqW6++Wbt3r27TtstXLhQ3bt319ixY3X++edr8uTJ8nq92rFjRwNVCgAAnGRc6Nm0aZN69+6t119/vcZrn3zyiYYMGaLu3bsrKytLa9asCdmuf//+weXY2FitXbtWnTp1apS6AQBA/US6XUBjGz58+AnHfT6fRo8erf/8z//UFVdcoS1btmjSpElKTExUenq6ysrKFBMTo/Hjx+uTTz5R+/btNWXKFLVv376R/wQAAMAO4470nMyiRYt02WWX6bbbblO7du00aNAg/epXv9KCBQskSX6/X0888YQuueQSvfDCCzr77LN1xx136PDhwy5XDgAAasO4Iz0ns2PHDr333ntKTU0Njn333Xe64IILJEkRERHq27evbr/9dknS9OnTdfXVV2vdunXKyspypWYAAFB7hJ7vVVdXKysrS/fdd1/IeGTksRa1atUqGIAkKSoqSm3bttVXX33VqHUCAAB7OL31vQsuuEC7du1Su3btgr/effddLV++XJLUo0cPFRcXB9evqqpSWVmZzjnnHLdKBgAAdUDo+d7w4cNVWFioJ598Ujt37tTy5cs1Z84ctWnTRpI0cuRIrVmzRq+88op27typRx55RNHR0br66qvdLRwAANSKx7Isy+0i3NKxY0e99NJL6t27tyRpw4YNeuKJ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
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"affiliations[\"levehnstein\"].plot(kind=\"hist\")"
],
"metadata": {
"collapsed": false
}
},
1 year ago
{
"cell_type": "code",
"execution_count": 74,
"outputs": [
{
"data": {
"text/plain": "<Axes: ylabel='Frequency'>"
},
"execution_count": 74,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"text/plain": "<Figure size 640x480 with 1 Axes>",
"image/png": "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
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"affiliations[\"token_overlap\"].plot(kind=\"hist\")"
],
"metadata": {
"collapsed": false
}
},
2 years ago
{
"cell_type": "code",
"execution_count": 29,
"outputs": [
{
"data": {
"text/plain": " UT (Unique WOS ID) \n136998 WOS:000321029900001 \\\n136999 WOS:000321029900001 \n137000 WOS:000321029900001 \n137001 WOS:000321029900001 \n137002 WOS:000321029900001 \n... ... \n2426115 WOS:000934156000001 \n2426116 WOS:000934156000001 \n2426117 WOS:000934156000001 \n2426118 WOS:000934156000001 \n2426119 WOS:000934156000001 \n\n Affiliations \n136998 AGENCY FOR SCIENCE TECHNOLOGY & RESEARCH (A*STAR) \\\n136999 AGENCY FOR SCIENCE TECHNOLOGY & RESEARCH (A*STAR) \n137000 AGENCY FOR SCIENCE TECHNOLOGY & RESEARCH (A*STAR) \n137001 AGENCY FOR SCIENCE TECHNOLOGY & RESEARCH (A*STAR) \n137002 A*STAR - BIOINFORMATICS INSTITUTE (BII) \n... ... \n2426115 A*STAR - INSTITUTE OF HIGH PERFORMANCE COMPUTI... \n2426116 A*STAR - INSTITUTE OF HIGH PERFORMANCE COMPUTI... \n2426117 A*STAR - INSTITUTE OF HIGH PERFORMANCE COMPUTI... \n2426118 A*STAR - INSTITUTE OF HIGH PERFORMANCE COMPUTI... \n2426119 A*STAR - INSTITUTE OF HIGH PERFORMANCE COMPUTI... \n\n Affiliations_merged \n136998 AGENCY FOR SCIENCE TECHNOLOGY & RESEARCH A*STAR \\\n136999 AGENCY FOR SCIENCE TECHNOLOGY & RESEARCH A*STAR \n137000 AGENCY FOR SCIENCE TECHNOLOGY & RESEARCH A*STAR \n137001 AGENCY FOR SCIENCE TECHNOLOGY & RESEARCH A*STAR \n137002 A*STAR - BIOINFORMATICS INSTITUTE BII \n... ... \n2426115 A*STAR - INSTITUTE OF HIGH PERFORMANCE COMPUTI... \n2426116 A*STAR - INSTITUTE OF HIGH PERFORMANCE COMPUTI... \n2426117 A*STAR - INSTITUTE OF HIGH PERFORMANCE COMPUTI... \n2426118 A*STAR - INSTITUTE OF HIGH PERFORMANCE COMPUTI... \n2426119 A*STAR - INSTITUTE OF HIGH PERFORMANCE COMPUTI... \n\n Address Country \n136998 Univ Oulu, Ctr Machine Vis Res, SF-90100 Oulu... Finland \\\n136999 Univ Calif Santa Barbara, Dept Comp Sci, Sant... United States \n137000 Chinese Acad Sci, NLPR, Inst Automat, Beijing... China \n137001 Natl Univ Singapore, Bioinformat Inst, A STAR... Singapore \n137002 Univ Oulu, Ctr Machine Vis Res, SF-90100 Oulu... Finland \n... ... ... \n2426115 Chinese Acad Sci, Ningbo Inst Mat Technol & E... China \n2426116 Univ N Carolina, Dept Radiol, Chapel Hill, NC... United States \n2426117 Univ Cambridge, DAMTP, Cambridge CB2 1TN, Eng... United Kingdom \n2426118 Univ Leeds, Computat Med & Royal Acad, Leeds ... United Kingdom \n2426119 Katholieke Univ Leuven, B-3000 Leuven, Belgium Belgium \n\n City Country_Type Institution levehnstein \n136998 Oulu EU UNIV OULU 45 \n136999 Santa Barbara Other UNIV CALIF SANTA BARBARA 37 \n137000 Beijing China CHINESE ACAD SCI 40 \n137001 Singapore Other NATL UNIV SINGAPORE 41 \n137002 Oulu EU UNIV OULU 35 \n... ... ... ... ... \n2426115 Beijing China CHINESE ACAD SCI 47 \n2426116 Carolina Other UNIV N CAROLINA 47 \n2426117 Cambridge Other UNIV CAMBRIDGE 48 \n2426118 Leeds Other UNIV LEEDS 50 \n2426119 Leuven EU KATHOLIEKE UNIV LEUVEN 45 \n\n[711 rows x 9 columns]",
"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>UT (Unique WOS ID)</th>\n <th>Affiliations</th>\n <th>Affiliations_merged</th>\n <th>Address</th>\n <th>Country</th>\n <th>City</th>\n <th>Country_Type</th>\n <th>Institution</th>\n <th>levehnstein</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>136998</th>\n <td>WOS:000321029900001</td>\n <td>AGENCY FOR SCIENCE TECHNOLOGY &amp; RESEARCH (A*STAR)</td>\n <td>AGENCY FOR SCIENCE TECHNOLOGY &amp; RESEARCH A*STAR</td>\n <td>Univ Oulu, Ctr Machine Vis Res, SF-90100 Oulu...</td>\n <td>Finland</td>\n <td>Oulu</td>\n <td>EU</td>\n <td>UNIV OULU</td>\n <td>45</td>\n </tr>\n <tr>\n <th>136999</th>\n <td>WOS:000321029900001</td>\n <td>AGENCY FOR SCIENCE TECHNOLOGY &amp; RESEARCH (A*STAR)</td>\n <td>AGENCY FOR SCIENCE TECHNOLOGY &amp; RESEARCH A*STAR</td>\n <td>Univ Calif Santa Barbara, Dept Comp Sci, Sant...</td>\n <td>United States</td>\n <td>Santa Barbara</td>\n <td>Other</td>\n <td>UNIV CALIF SANTA BARBARA</td>\n <td>37</td>\n </tr>\n <tr>\n <th>137000</th>\n <td>WOS:000321029900001</td>\n <td>AGENCY FOR SCIENCE TECHNOLOGY &amp; RESEARCH (A*STAR)</td>\n <td>AGENCY FOR SCIENCE TECHNOLOGY &amp; RESEARCH A*STAR</td>\n <td>Chinese Acad Sci, NLPR, Inst Automat, Beijing...</td>\n <td>China</td>\n <td>Beijing</td>\n <td>China</td>\n <td>CHINESE ACAD SCI</td>\n <td>40</td>\n </tr>\n <tr>\n <th>137001</th>\n <td>WOS:000321029900001</td>\n <td>AGENCY FOR SCIENCE TECHNOLOGY &amp; RESEARCH (A*STAR)</td>\n <td>AGENCY FOR SCIENCE TECHNOLOGY &amp; RESEARCH A*STAR</td>\n <td>Natl Univ Singapore, Bioinformat Inst, A STAR...</td>\n <td>Singapore</td>\n <td>Singapore</td>\n <td>Other</td>\n <td>NATL UNIV SINGAPORE</td>\n <td>41</td>\n </tr>\n <tr>\n <th>137002</th>\n <td>WOS:000321029900001</td>\n <td>A*STAR - BIOINFORMATICS INSTITUTE (BII)</td>\n <td>A*STAR - BIOINFORMATICS INSTITUTE BII</td>\n <td>Univ Oulu, Ctr Machine Vis Res, SF-90100 Oulu...</td>\n <td>Finland</td>\n <td>Oulu</td>\n <td>EU</td>\n <td>UNIV OULU</td>\n <td>35</td>\n </tr>\n <tr>\n <th>...</th>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n </tr>\n <tr>\n <th>2426115</th>\n <td>WOS:000934156000001</td>\n <td>A*STAR - INSTITUTE OF HIGH PERFORMANCE COMPUTI...</td>\n <td>A*STAR - INSTITUTE OF HIGH PERFORMANCE COMPUTI...</td>\n <td>Chinese Acad Sci, Ningbo Inst Mat Technol &amp; E...</td>\n <td>China</td>\n <td>Beijing</td>\n <td>China</td>\n <td>CHINESE ACAD SCI</td>\n <td>47</td>\n </tr>\n <tr>\n <th>2426116</th>\n <td>WOS:000934156000001</td>\n <td>A*STAR - INSTITUTE OF HIGH PERFORMANCE COMPUTI...</td>\n <td>A*STAR - INSTITUTE OF HIGH PERFORMANCE COMPUTI...</td>\n <td>Univ N Carolina, Dept Radiol, Chapel Hill, NC...</td>\n <td>United States</td>\n <td>Carolina</td>\n <td>Other</td>\n <td>UNIV N CAROLINA</td>\n <td>47</td>\n </tr>\n <tr>\n <th>2426117</th>\n <td>WOS:000934156000001</td>\n <td>A*STAR - INSTITUTE OF HIGH PERFORMANCE COMPUTI...</td>\n <td>A*STAR - INSTITUTE OF HIGH PERFORMANCE COMPUTI...</td>\n <td>Univ Cambridge, DAMTP, Cambridge CB2 1TN, Eng...</td>\n <td>United Kingdom</td>\n <td>Cambridge</td>\n <td>Other</td>\n <td>UNIV CAMBRIDGE</td>\n <td>48</td>\n </tr
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"affiliations[affiliations[\"Affiliations\"].str.contains(\"A*STAR\",regex=False)]"
],
"metadata": {
"collapsed": false
}
},
{
"cell_type": "code",
"execution_count": 133,
"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>UT (Unique WOS ID)</th>\n",
" <th>Affiliations</th>\n",
" <th>Affiliations_merged</th>\n",
" <th>Address</th>\n",
" <th>Country</th>\n",
" <th>City</th>\n",
" <th>Country_Type</th>\n",
" <th>Institution</th>\n",
" <th>levehnstein</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>2430154</th>\n",
" <td>WOS:000947693400001</td>\n",
" <td>UNIVERSITAT POLITECNICA DE VALENCIA</td>\n",
" <td>UNIVERSITAT POLITECNICA DE VALENCIA</td>\n",
" <td>Univ Politecn Valencia, European Inst Innovat...</td>\n",
" <td>Spain</td>\n",
" <td>Valencia</td>\n",
" <td>EU</td>\n",
" <td>UNIV POLITECN VALENCIA</td>\n",
" <td>13</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2430132</th>\n",
" <td>WOS:000947693400001</td>\n",
" <td>SHANGHAITECH UNIVERSITY</td>\n",
" <td>SHANGHAITECH UNIVERSITY</td>\n",
" <td>ShanghaiTech Univ, Shanghai Inst Adv Immunoch...</td>\n",
" <td>China</td>\n",
" <td>Shanghai</td>\n",
" <td>China</td>\n",
" <td>SHANGHAITECH UNIV</td>\n",
" <td>6</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2430139</th>\n",
" <td>WOS:000947693400001</td>\n",
" <td>SHANGHAI OCEAN UNIVERSITY</td>\n",
" <td>SHANGHAI UNIVERSITY</td>\n",
" <td>Shanghai Ocean Univ, Coll Fisheries &amp; Life Sc...</td>\n",
" <td>China</td>\n",
" <td>Shanghai</td>\n",
" <td>China</td>\n",
" <td>SHANGHAI OCEAN UNIV</td>\n",
" <td>6</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2430146</th>\n",
" <td>WOS:000947693400001</td>\n",
" <td>SHANGHAI JIAO TONG UNIVERSITY</td>\n",
" <td>SHANGHAI UNIVERSITY</td>\n",
" <td>Shanghai Jiao Tong Univ, Ruijin Hosp, Sch Med...</td>\n",
" <td>China</td>\n",
" <td>Meda</td>\n",
" <td>China</td>\n",
" <td>SHANGHAI JIAO TONG UNIV</td>\n",
" <td>6</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2430125</th>\n",
" <td>WOS:000947693400001</td>\n",
" <td>HUZHOU UNIVERSITY</td>\n",
" <td>HUZHOU UNIVERSITY</td>\n",
" <td>Huzhou Univ, Sch Informat Engn, Huzhou 313000...</td>\n",
" <td>China</td>\n",
" <td>Huzhou</td>\n",
" <td>China</td>\n",
" <td>HUZHOU UNIV</td>\n",
" <td>6</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2430113</th>\n",
" <td>WOS:000946746700001</td>\n",
" <td>SUZHOU UNIVERSITY OF SCIENCE &amp; TECHNOLOGY</td>\n",
" <td>SUZHOU UNIVERSITY OF SCIENCE &amp; TECHNOLOGY</td>\n",
" <td>Suzhou Univ Sci &amp; Technol, Sch Elect &amp; Inform...</td>\n",
" <td>China</td>\n",
" <td>Suzhou</td>\n",
" <td>China</td>\n",
" <td>SUZHOU UNIV SCI &amp; TECHNOL</td>\n",
" <td>16</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2430118</th>\n",
" <td>WOS:000946746700001</td>\n",
" <td>POLYTECHNIC UNIVERSITY OF MILAN</td>\n",
" <td>UNIVERSITY OF MILAN</td>\n",
" <td>Politecn Milan, Dept Mech Engn, Milan, Italy;</td>\n",
" <td>Italy</td>\n",
" <td>Milano</td>\n",
" <td>EU</td>\n",
" <td>POLITECN MILAN</td>\n",
" <td>18</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2430123</th>\n",
" <td>WOS:000946746700001</td>\n",
" <td>HONG KONG POLYTECHNIC UNIVERSITY</td>\n",
" <td>HONG KONG POLYTECHNIC UNIVERSITY</td>\n",
" <td>Hong Kong Polytech Univ, Dept Comp, Hong Kong...</td>\n",
" <td>China</td>\n",
" <td>Hong Kong</td>\n",
" <td>China</td>\n",
" <td>HONG KONG POLYTECH UNIV</td>\n",
" <td>9</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2430111</th>\n",
" <td>WOS:000945297300001</td>\n",
" <td>UNIVERSITY OF PANNONIA</td>\n",
" <td>UNIVERSITY OF PANNONIA</td>\n",
" <td>Univ Pannonia, Dept Elect Engn &amp; Informat Sys...</td>\n",
" <td>Hungary</td>\n",
" <td>Veszprém</td>\n",
" <td>EU</td>\n",
" <td>UNIV PANNONIA</td>\n",
" <td>9</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2430107</th>\n",
" <td>WOS:000945297300001</td>\n",
" <td>SHENYANG UNIVERSITY OF TECHNOLOGY</td>\n",
" <td>SHENYANG UNIVERSITY</td>\n",
" <td>Shenyang Univ Technol, Sch Elect Engn, Dept B...</td>\n",
" <td>China</td>\n",
" <td>Shenyang</td>\n",
" <td>China</td>\n",
" <td>SHENYANG UNIV TECHNOL</td>\n",
" <td>12</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" UT (Unique WOS ID) Affiliations \n",
"2430154 WOS:000947693400001 UNIVERSITAT POLITECNICA DE VALENCIA \\\n",
"2430132 WOS:000947693400001 SHANGHAITECH UNIVERSITY \n",
"2430139 WOS:000947693400001 SHANGHAI OCEAN UNIVERSITY \n",
"2430146 WOS:000947693400001 SHANGHAI JIAO TONG UNIVERSITY \n",
"2430125 WOS:000947693400001 HUZHOU UNIVERSITY \n",
"2430113 WOS:000946746700001 SUZHOU UNIVERSITY OF SCIENCE & TECHNOLOGY \n",
"2430118 WOS:000946746700001 POLYTECHNIC UNIVERSITY OF MILAN \n",
"2430123 WOS:000946746700001 HONG KONG POLYTECHNIC UNIVERSITY \n",
"2430111 WOS:000945297300001 UNIVERSITY OF PANNONIA \n",
"2430107 WOS:000945297300001 SHENYANG UNIVERSITY OF TECHNOLOGY \n",
"\n",
" Affiliations_merged \n",
"2430154 UNIVERSITAT POLITECNICA DE VALENCIA \\\n",
"2430132 SHANGHAITECH UNIVERSITY \n",
"2430139 SHANGHAI UNIVERSITY \n",
"2430146 SHANGHAI UNIVERSITY \n",
"2430125 HUZHOU UNIVERSITY \n",
"2430113 SUZHOU UNIVERSITY OF SCIENCE & TECHNOLOGY \n",
"2430118 UNIVERSITY OF MILAN \n",
"2430123 HONG KONG POLYTECHNIC UNIVERSITY \n",
"2430111 UNIVERSITY OF PANNONIA \n",
"2430107 SHENYANG UNIVERSITY \n",
"\n",
" Address Country \n",
"2430154 Univ Politecn Valencia, European Inst Innovat... Spain \\\n",
"2430132 ShanghaiTech Univ, Shanghai Inst Adv Immunoch... China \n",
"2430139 Shanghai Ocean Univ, Coll Fisheries & Life Sc... China \n",
"2430146 Shanghai Jiao Tong Univ, Ruijin Hosp, Sch Med... China \n",
"2430125 Huzhou Univ, Sch Informat Engn, Huzhou 313000... China \n",
"2430113 Suzhou Univ Sci & Technol, Sch Elect & Inform... China \n",
"2430118 Politecn Milan, Dept Mech Engn, Milan, Italy; Italy \n",
"2430123 Hong Kong Polytech Univ, Dept Comp, Hong Kong... China \n",
"2430111 Univ Pannonia, Dept Elect Engn & Informat Sys... Hungary \n",
"2430107 Shenyang Univ Technol, Sch Elect Engn, Dept B... China \n",
"\n",
" City Country_Type Institution levehnstein \n",
"2430154 Valencia EU UNIV POLITECN VALENCIA 13 \n",
"2430132 Shanghai China SHANGHAITECH UNIV 6 \n",
"2430139 Shanghai China SHANGHAI OCEAN UNIV 6 \n",
"2430146 Meda China SHANGHAI JIAO TONG UNIV 6 \n",
"2430125 Huzhou China HUZHOU UNIV 6 \n",
"2430113 Suzhou China SUZHOU UNIV SCI & TECHNOL 16 \n",
"2430118 Milano EU POLITECN MILAN 18 \n",
"2430123 Hong Kong China HONG KONG POLYTECH UNIV 9 \n",
"2430111 Veszprém EU UNIV PANNONIA 9 \n",
"2430107 Shenyang China SHENYANG UNIV TECHNOL 12 "
]
},
"execution_count": 133,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"affiliations = affiliations.sort_values(by=[record_col,\"Affiliations\",\"levehnstein\"], ascending=[False,False,True])\n",
"affiliations_merge = affiliations.drop_duplicates(subset=[record_col,\"Affiliations\"])\n",
"affiliations_merge.head(10)"
]
},
{
"cell_type": "code",
"execution_count": 91,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"WoS Categories\n",
" Engineering, Electrical & Electronic 1703\n",
"Computer Science, Artificial Intelligence 1366\n",
"Computer Science, Information Systems 973\n",
" Telecommunications 834\n",
" Imaging Science & Photographic Technology 762\n",
" ... \n",
" Crystallography 1\n",
"Mining & Mineral Processing 1\n",
" Art 1\n",
"Archaeology 1\n",
"Physics, Mathematical 1\n",
"Name: count, Length: 379, dtype: int64"
]
},
"execution_count": 91,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"wos_cat = wos.groupby(record_col)[\"WoS Categories\"].apply(lambda x: x.str.split(';')).explode().reset_index().drop(columns=\"level_1\")\n",
"wos_cat[\"WoS Categories\"].value_counts()"
]
},
{
"cell_type": "code",
"execution_count": 92,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Research Areas\n",
"Engineering 3740\n",
"Computer Science 3466\n",
"Telecommunications 888\n",
"Imaging Science & Photographic Technology 779\n",
"Remote Sensing 716\n",
" ... \n",
"Otorhinolaryngology 1\n",
"Medical Ethics 1\n",
"Anesthesiology 1\n",
"Biomedical Social Sciences 1\n",
"History & Philosophy of Science 1\n",
"Name: count, Length: 141, dtype: int64"
]
},
"execution_count": 92,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"wos_areas = wos.groupby(record_col)[\"Research Areas\"].apply(lambda x: x.str.split(';')).explode().reset_index().drop(columns=\"level_1\")\n",
"wos_areas[\"Research Areas\"] = wos_areas[\"Research Areas\"].str.strip()\n",
"wos_areas[\"Research Areas\"].value_counts()"
]
},
{
"cell_type": "code",
"execution_count": 93,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Research Areas\n",
"Engineering 3740\n",
"Computer Science 3466\n",
"Telecommunications 888\n",
"Imaging Science & Photographic Technology 779\n",
"Remote Sensing 716\n",
" ... \n",
"Otorhinolaryngology 1\n",
"Medical Ethics 1\n",
"Anesthesiology 1\n",
"Biomedical Social Sciences 1\n",
"History & Philosophy of Science 1\n",
"Name: count, Length: 141, dtype: int64"
]
},
"execution_count": 93,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"wos_areas[\"Research Areas\"].value_counts()"
]
},
{
"cell_type": "code",
"execution_count": 94,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['Domain_English', 'Field_English', 'SubField_English']"
]
},
"execution_count": 94,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"[c for c in wos.columns if \"_English\" in c]"
]
},
{
"cell_type": "code",
"execution_count": 95,
"metadata": {},
"outputs": [],
"source": [
"import seaborn as sns\n",
"from matplotlib.ticker import MaxNLocator\n",
"import math"
]
},
{
"cell_type": "code",
"execution_count": 96,
"metadata": {},
"outputs": [],
"source": [
"wos = wos[((wos[\"Publication Year\"]<2023) & (~wos['Domain_English'].isna()))]\n",
"\n",
"metrix_levels = [c for c in wos.columns if \"_English\" in c]\n",
"for m in metrix_levels:\n",
" wos[m] = wos[m].replace({\"article-level classification\":\"Miscellaneous\"})\n"
]
},
{
"cell_type": "code",
"execution_count": 97,
"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>Publication Type</th>\n",
" <th>Authors</th>\n",
" <th>Book Authors</th>\n",
" <th>Book Editors</th>\n",
" <th>Book Group Authors</th>\n",
" <th>Author Full Names</th>\n",
" <th>Book Author Full Names</th>\n",
" <th>Group Authors</th>\n",
" <th>Article Title</th>\n",
" <th>Source Title</th>\n",
" <th>...</th>\n",
" <th>Web of Science Record</th>\n",
" <th>issn_var</th>\n",
" <th>issn</th>\n",
" <th>Domain_English</th>\n",
" <th>Field_English</th>\n",
" <th>SubField_English</th>\n",
" <th>2.00 SEQ</th>\n",
" <th>Source_title</th>\n",
" <th>srcid</th>\n",
" <th>issn_type</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>J</td>\n",
" <td>Salucci, M; Arrebola, M; Shan, T; Li, MK</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Salucci, Marco; Arrebola, Manuel; Shan, Tao; L...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Artificial Intelligence: New Frontiers in Real...</td>\n",
" <td>IEEE TRANSACTIONS ON ANTENNAS AND PROPAGATION</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>issn</td>\n",
" <td>0018926x</td>\n",
" <td>Applied Sciences</td>\n",
" <td>Information &amp; Communication Technologies</td>\n",
" <td>Networking &amp; Telecommunications</td>\n",
" <td>37</td>\n",
" <td>IEEE Transactions on Antennas and Propagation</td>\n",
" <td>1.733700e+04</td>\n",
" <td>issn1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9714</th>\n",
" <td>J</td>\n",
" <td>Huang, Y; Fu, ZT; Franzke, CLE</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Huang, Yu; Fu, Zuntao; Franzke, Christian L. E.</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Detecting causality from time series in a mach...</td>\n",
" <td>CHAOS</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>issn</td>\n",
" <td>10541500</td>\n",
" <td>Natural Sciences</td>\n",
" <td>Physics &amp; Astronomy</td>\n",
" <td>Fluids &amp; Plasmas</td>\n",
" <td>170</td>\n",
" <td>Chaos</td>\n",
" <td>2.743000e+04</td>\n",
" <td>issn2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9697</th>\n",
" <td>J</td>\n",
" <td>Feng, DC; Cetiner, B; Kakavand, MRA; Taciroglu, E</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Feng, De-Cheng; Cetiner, Barbaros; Kakavand, M...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Data-Driven Approach to Predict the Plastic Hi...</td>\n",
" <td>JOURNAL OF STRUCTURAL ENGINEERING</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>issn</td>\n",
" <td>07339445</td>\n",
" <td>Applied Sciences</td>\n",
" <td>Engineering</td>\n",
" <td>Civil Engineering</td>\n",
" <td>23</td>\n",
" <td>Journal of Structural Engineering (United States)</td>\n",
" <td>1.630500e+04</td>\n",
" <td>issn1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9699</th>\n",
" <td>J</td>\n",
" <td>Zhao, YL; Dong, S; Jiang, FY; Soares, CG</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Zhao, Yuliang; Dong, Sheng; Jiang, Fengyuan; G...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>System Reliability Analysis of an Offshore Jac...</td>\n",
" <td>JOURNAL OF OCEAN UNIVERSITY OF CHINA</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>issn</td>\n",
" <td>16725182</td>\n",
" <td>Applied Sciences</td>\n",
" <td>Agriculture, Fisheries &amp; Forestry</td>\n",
" <td>Fisheries</td>\n",
" <td>3</td>\n",
" <td>Journal of Ocean University of China</td>\n",
" <td>6.100153e+09</td>\n",
" <td>issn2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9701</th>\n",
" <td>J</td>\n",
" <td>Li, XH; Yang, DK; Yang, JS; Zheng, G; Han, GQ;...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Li, Xiaohui; Yang, Dongkai; Yang, Jingsong; Zh...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Analysis of coastal wind speed retrieval from ...</td>\n",
" <td>REMOTE SENSING OF ENVIRONMENT</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>issn</td>\n",
" <td>00344257</td>\n",
" <td>Applied Sciences</td>\n",
" <td>Engineering</td>\n",
" <td>Geological &amp; Geomatics Engineering</td>\n",
" <td>26</td>\n",
" <td>Remote Sensing of Environment</td>\n",
" <td>1.250300e+04</td>\n",
" <td>issn1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3066</th>\n",
" <td>J</td>\n",
" <td>He, Q; Zha, C; Song, W; Hao, ZZ; Du, YL; Liott...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>He, Qi; Zha, Cheng; Song, Wei; Hao, Zengzhou; ...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Improved Particle Swarm Optimization for Sea S...</td>\n",
" <td>ENERGIES</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>eissn</td>\n",
" <td>19961073</td>\n",
" <td>Applied Sciences</td>\n",
" <td>Enabling &amp; Strategic Technologies</td>\n",
" <td>Energy</td>\n",
" <td>14</td>\n",
" <td>Energies</td>\n",
" <td>6.293200e+04</td>\n",
" <td>issn1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5097</th>\n",
" <td>J</td>\n",
" <td>Hasan, MM; Popp, J; Olah, J</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Hasan, Md Morshadul; Popp, Jozsef; Olah, Judit</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Current landscape and influence of big data on...</td>\n",
" <td>JOURNAL OF BIG DATA</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>eissn</td>\n",
" <td>21961115</td>\n",
" <td>Applied Sciences</td>\n",
" <td>Information &amp; Communication Technologies</td>\n",
" <td>Artificial Intelligence &amp; Image Processing</td>\n",
" <td>31</td>\n",
" <td>Journal of Big Data</td>\n",
" <td>2.110079e+10</td>\n",
" <td>issn1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11369</th>\n",
" <td>J</td>\n",
" <td>Li, Y; Cheng, G; Pang, YS; Kuai, M</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Li, Yong; Cheng, Gang; Pang, Yusong; Kuai, Moshen</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Planetary Gear Fault Diagnosis via Feature Ima...</td>\n",
" <td>SENSORS</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>eissn</td>\n",
" <td>14248220</td>\n",
" <td>Natural Sciences</td>\n",
" <td>Chemistry</td>\n",
" <td>Analytical Chemistry</td>\n",
" <td>149</td>\n",
" <td>Sensors (Switzerland)</td>\n",
" <td>1.301240e+05</td>\n",
" <td>issn1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11368</th>\n",
" <td>J</td>\n",
" <td>Zeng, R; Rossiter, DG; Zhang, JP; Cai, K; Gao,...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Zeng, Rong; Rossiter, David G.; Zhang, Jiapeng...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>How Well Can Reflectance Spectroscopy Allocate...</td>\n",
" <td>AGRONOMY-BASEL</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>eissn</td>\n",
" <td>20734395</td>\n",
" <td>Natural Sciences</td>\n",
" <td>Biology</td>\n",
" <td>Plant Biology &amp; Botany</td>\n",
" <td>147</td>\n",
" <td>Agronomy</td>\n",
" <td>2.110045e+10</td>\n",
" <td>issn1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11362</th>\n",
" <td>J</td>\n",
" <td>Jia, Y; Jin, SG; Savi, P; Gao, Y; Tang, J; Che...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Jia, Yan; Jin, Shuanggen; Savi, Patrizia; Gao,...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>GNSS-R Soil Moisture Retrieval Based on a XGbo...</td>\n",
" <td>REMOTE SENSING</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>eissn</td>\n",
" <td>20724292</td>\n",
" <td>Applied Sciences</td>\n",
" <td>Engineering</td>\n",
" <td>Geological &amp; Geomatics Engineering</td>\n",
" <td>26</td>\n",
" <td>Remote Sensing</td>\n",
" <td>8.643000e+04</td>\n",
" <td>issn1</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>8592 rows × 81 columns</p>\n",
"</div>"
],
"text/plain": [
" Publication Type Authors \n",
"0 J Salucci, M; Arrebola, M; Shan, T; Li, MK \\\n",
"9714 J Huang, Y; Fu, ZT; Franzke, CLE \n",
"9697 J Feng, DC; Cetiner, B; Kakavand, MRA; Taciroglu, E \n",
"9699 J Zhao, YL; Dong, S; Jiang, FY; Soares, CG \n",
"9701 J Li, XH; Yang, DK; Yang, JS; Zheng, G; Han, GQ;... \n",
"... ... ... \n",
"3066 J He, Q; Zha, C; Song, W; Hao, ZZ; Du, YL; Liott... \n",
"5097 J Hasan, MM; Popp, J; Olah, J \n",
"11369 J Li, Y; Cheng, G; Pang, YS; Kuai, M \n",
"11368 J Zeng, R; Rossiter, DG; Zhang, JP; Cai, K; Gao,... \n",
"11362 J Jia, Y; Jin, SG; Savi, P; Gao, Y; Tang, J; Che... \n",
"\n",
" Book Authors Book Editors Book Group Authors \n",
"0 NaN NaN NaN \\\n",
"9714 NaN NaN NaN \n",
"9697 NaN NaN NaN \n",
"9699 NaN NaN NaN \n",
"9701 NaN NaN NaN \n",
"... ... ... ... \n",
"3066 NaN NaN NaN \n",
"5097 NaN NaN NaN \n",
"11369 NaN NaN NaN \n",
"11368 NaN NaN NaN \n",
"11362 NaN NaN NaN \n",
"\n",
" Author Full Names \n",
"0 Salucci, Marco; Arrebola, Manuel; Shan, Tao; L... \\\n",
"9714 Huang, Yu; Fu, Zuntao; Franzke, Christian L. E. \n",
"9697 Feng, De-Cheng; Cetiner, Barbaros; Kakavand, M... \n",
"9699 Zhao, Yuliang; Dong, Sheng; Jiang, Fengyuan; G... \n",
"9701 Li, Xiaohui; Yang, Dongkai; Yang, Jingsong; Zh... \n",
"... ... \n",
"3066 He, Qi; Zha, Cheng; Song, Wei; Hao, Zengzhou; ... \n",
"5097 Hasan, Md Morshadul; Popp, Jozsef; Olah, Judit \n",
"11369 Li, Yong; Cheng, Gang; Pang, Yusong; Kuai, Moshen \n",
"11368 Zeng, Rong; Rossiter, David G.; Zhang, Jiapeng... \n",
"11362 Jia, Yan; Jin, Shuanggen; Savi, Patrizia; Gao,... \n",
"\n",
" Book Author Full Names Group Authors \n",
"0 NaN NaN \\\n",
"9714 NaN NaN \n",
"9697 NaN NaN \n",
"9699 NaN NaN \n",
"9701 NaN NaN \n",
"... ... ... \n",
"3066 NaN NaN \n",
"5097 NaN NaN \n",
"11369 NaN NaN \n",
"11368 NaN NaN \n",
"11362 NaN NaN \n",
"\n",
" Article Title \n",
"0 Artificial Intelligence: New Frontiers in Real... \\\n",
"9714 Detecting causality from time series in a mach... \n",
"9697 Data-Driven Approach to Predict the Plastic Hi... \n",
"9699 System Reliability Analysis of an Offshore Jac... \n",
"9701 Analysis of coastal wind speed retrieval from ... \n",
"... ... \n",
"3066 Improved Particle Swarm Optimization for Sea S... \n",
"5097 Current landscape and influence of big data on... \n",
"11369 Planetary Gear Fault Diagnosis via Feature Ima... \n",
"11368 How Well Can Reflectance Spectroscopy Allocate... \n",
"11362 GNSS-R Soil Moisture Retrieval Based on a XGbo... \n",
"\n",
" Source Title ... \n",
"0 IEEE TRANSACTIONS ON ANTENNAS AND PROPAGATION ... \\\n",
"9714 CHAOS ... \n",
"9697 JOURNAL OF STRUCTURAL ENGINEERING ... \n",
"9699 JOURNAL OF OCEAN UNIVERSITY OF CHINA ... \n",
"9701 REMOTE SENSING OF ENVIRONMENT ... \n",
"... ... ... \n",
"3066 ENERGIES ... \n",
"5097 JOURNAL OF BIG DATA ... \n",
"11369 SENSORS ... \n",
"11368 AGRONOMY-BASEL ... \n",
"11362 REMOTE SENSING ... \n",
"\n",
" Web of Science Record issn_var issn Domain_English \n",
"0 0 issn 0018926x Applied Sciences \\\n",
"9714 0 issn 10541500 Natural Sciences \n",
"9697 0 issn 07339445 Applied Sciences \n",
"9699 0 issn 16725182 Applied Sciences \n",
"9701 0 issn 00344257 Applied Sciences \n",
"... ... ... ... ... \n",
"3066 0 eissn 19961073 Applied Sciences \n",
"5097 0 eissn 21961115 Applied Sciences \n",
"11369 0 eissn 14248220 Natural Sciences \n",
"11368 0 eissn 20734395 Natural Sciences \n",
"11362 0 eissn 20724292 Applied Sciences \n",
"\n",
" Field_English \n",
"0 Information & Communication Technologies \\\n",
"9714 Physics & Astronomy \n",
"9697 Engineering \n",
"9699 Agriculture, Fisheries & Forestry \n",
"9701 Engineering \n",
"... ... \n",
"3066 Enabling & Strategic Technologies \n",
"5097 Information & Communication Technologies \n",
"11369 Chemistry \n",
"11368 Biology \n",
"11362 Engineering \n",
"\n",
" SubField_English 2.00 SEQ \n",
"0 Networking & Telecommunications 37 \\\n",
"9714 Fluids & Plasmas 170 \n",
"9697 Civil Engineering 23 \n",
"9699 Fisheries 3 \n",
"9701 Geological & Geomatics Engineering 26 \n",
"... ... ... \n",
"3066 Energy 14 \n",
"5097 Artificial Intelligence & Image Processing 31 \n",
"11369 Analytical Chemistry 149 \n",
"11368 Plant Biology & Botany 147 \n",
"11362 Geological & Geomatics Engineering 26 \n",
"\n",
" Source_title srcid \n",
"0 IEEE Transactions on Antennas and Propagation 1.733700e+04 \\\n",
"9714 Chaos 2.743000e+04 \n",
"9697 Journal of Structural Engineering (United States) 1.630500e+04 \n",
"9699 Journal of Ocean University of China 6.100153e+09 \n",
"9701 Remote Sensing of Environment 1.250300e+04 \n",
"... ... ... \n",
"3066 Energies 6.293200e+04 \n",
"5097 Journal of Big Data 2.110079e+10 \n",
"11369 Sensors (Switzerland) 1.301240e+05 \n",
"11368 Agronomy 2.110045e+10 \n",
"11362 Remote Sensing 8.643000e+04 \n",
"\n",
" issn_type \n",
"0 issn1 \n",
"9714 issn2 \n",
"9697 issn1 \n",
"9699 issn2 \n",
"9701 issn1 \n",
"... ... \n",
"3066 issn1 \n",
"5097 issn1 \n",
"11369 issn1 \n",
"11368 issn1 \n",
"11362 issn1 \n",
"\n",
"[8592 rows x 81 columns]"
]
},
"execution_count": 97,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"wos"
]
},
{
"cell_type": "code",
"execution_count": 98,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['Domain_English', 'Field_English', 'SubField_English']"
]
},
"execution_count": 98,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"metrix_levels"
]
},
{
"cell_type": "code",
1 year ago
"execution_count": 101,
2 years ago
"metadata": {},
"outputs": [],
"source": [
1 year ago
"outdir=\"wos_processed_data\""
]
},
{
"cell_type": "code",
"execution_count": 134,
"outputs": [],
"source": [
2 years ago
"os.makedirs(outdir, exist_ok=True)\n",
"\n",
"wos.to_excel(f\"{outdir}/wos_processed.xlsx\", index=False)\n",
"\n",
"locations.drop(columns=\"Addresses\").to_excel(f\"{outdir}/wos_addresses.xlsx\", index=False)\n",
"\n",
"affiliations_merge.to_excel(f\"{outdir}/wos_affiliations.xlsx\", index=False)\n",
"\n",
"author_locations.to_excel(f\"{outdir}/wos_author_locations.xlsx\", index=False)\n",
"\n",
1 year ago
"univ_locations.to_excel(f\"{outdir}/wos_univ_locations.xlsx\", index=False)\n",
"mode_final.to_excel(f\"{outdir}/wos_univ_locations_v2.xlsx\", index=False)"
],
"metadata": {
"collapsed": false
}
2 years ago
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Domain"
]
},
{
"cell_type": "code",
"execution_count": 31,
"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>Domain_English</th>\n",
" <th>UT (Unique WOS ID)</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>Applied Sciences</td>\n",
" <td>5379</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>Natural Sciences</td>\n",
" <td>1649</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>Health Sciences</td>\n",
" <td>1106</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>Economic &amp; Social Sciences</td>\n",
" <td>289</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>Miscellaneous</td>\n",
" <td>156</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>Arts &amp; Humanities</td>\n",
" <td>13</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Domain_English UT (Unique WOS ID)\n",
"0 Applied Sciences 5379\n",
"5 Natural Sciences 1649\n",
"3 Health Sciences 1106\n",
"2 Economic & Social Sciences 289\n",
"4 Miscellaneous 156\n",
"1 Arts & Humanities 13"
]
},
"execution_count": 31,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"group = 'Domain_English'\n",
"data = wos.groupby(group, as_index=False)[record_col].nunique().sort_values(ascending=False, by=record_col)\n",
"data"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<Axes: xlabel='UT (Unique WOS ID)', ylabel='Domain_English'>"
]
},
"execution_count": 32,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAuIAAAGwCAYAAADsTQBeAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABcDElEQVR4nO3de3zP9f//8ft7Yyc7M5uxmWHMbHImMYdpk0RJyGmhUiTlnJyPKYWOioxPPqSS5BTGkDM15+aQU6X4OGxGxuz1+8PP++vdNraZXszterm8Lpe9X6/n6/l6vJ6f9dn9/fR8v94WwzAMAQAAAPhX2ZldAAAAAPAgIogDAAAAJiCIAwAAACYgiAMAAAAmIIgDAAAAJiCIAwAAACYgiAMAAAAmKGR2AQCylpGRoT/++ENubm6yWCxmlwMAAHLAMAxduHBB/v7+srO79Zw3QRy4R/3xxx8KCAgwuwwAAJAHJ06cUKlSpW7ZhiAO3KPc3NwkXf8P2d3d3eRqAABATqSkpCggIMD6d/xWCOLAPerGchR3d3eCOAAA95mcLCvlw5oAAACACQjiAAAAgAkI4gAAAIAJWCMO3OMavDlX9o7OZpcBAECBsuPtzmaXwIw4AAAAYAaCOAAAAGACgjgAAABgAoI4AAAAYAKCOAAAAGACgjgAAABgAoI4AAAAYAKCOAAAAGACgjgAAABgAoI4AAAAYAKCOAAAAGACgjgAAABgAoI4AAAAYAKCOAAAAGACgjgAAABgAoI4AAAAYAKCOAAAAGACgjgAAABgAoI4AAAAYAKCODIZMWKEHnroIevr2NhYtWrV6o76TEhIkMVi0fnz5++on1vJjzoBAAD+LQTx+8ymTZtkb2+v5s2b/2vXnDJliuLi4u76dXbu3KknnnhCxYsXl5OTk4KCgtS2bVudOnUqR+f/W3UCAADkB4L4fWbGjBl65ZVXtG7dOv3xxx//yjU9PDzk6el5V69x+vRpNWnSRN7e3vrhhx+0f/9+zZw5U/7+/rp48eI9UycAAEB+IYjfR1JTU/Xll1/qpZdeUvPmzTPN/t5Y/rFkyRJFRETIyclJderU0Z49e6xt4uLi5OnpqYULF6p8+fJycnJSdHS0Tpw4ke11/7nkIyMjQ+PHj1eZMmXk7OysKlWq6Ouvv7Y5Z+nSpQoJCZGzs7MaNWqko0eP3vLeNmzYoOTkZE2fPl1Vq1ZVmTJl1KhRI7333nsqU6aMtd3evXv1+OOPy93dXW5ubqpfv74OHz6cpzpvjFd8fLxq1KghFxcXPfzww0pKSrKp7fvvv1fNmjXl5OSkYsWK6cknn7QeS0tLU79+/VSyZEkVKVJEtWvXVkJCgvX4sWPH1KJFC3l5ealIkSIKCwvT0qVLbzkWAADgwUAQv4/Mnz9fFStWVIUKFdSxY0d9/vnnMgwjU7v+/ftr0qRJ2rZtm3x8fNSiRQtdvXrVevzSpUsaO3asZs+erQ0bNuj8+fNq165djusYP368Zs+erU8++UR79+7Va6+9po4dO2rt2rWSpBMnTuipp55SixYtlJiYqO7du2vQoEG37NPPz0/p6en69ttvs7wnSfr999/VoEEDOTo6avXq1dqxY4e6du2q9PT0PNV5w5AhQzRp0iRt375dhQoVUteuXa3HlixZoieffFKPPfaYfv75Z8XHx6tWrVrW47169dKmTZs0b9487dq1S23atFFMTIwOHjwoSerZs6fS0tK0bt067d69W2+99ZZcXV2zrDctLU0pKSk2GwAAKLgKmV0Acm7GjBnq2LGjJCkmJkbJyclau3atGjZsaNNu+PDhatq0qSRp1qxZKlWqlL799ls988wzkqSrV6/qgw8+UO3ata1tQkNDtXXrVpuQmZW0tDSNGzdOq1atUt26dSVJwcHB+vHHHzVt2jRFRkbq448/VtmyZTVp0iRJUoUKFawhNDt16tTRG2+8oWeffVY9evRQrVq11LhxY3Xu3Fm+vr6SpA8//FAeHh6aN2+eChcuLEkKCQnJc503jB071vp60KBBat68uS5fviwnJyeNHTtW7dq108iRI63tq1SpIkk6fvy4Zs6cqePHj8vf31+S1K9fPy1fvlwzZ87UuHHjdPz4cbVu3Vrh4eHWGrIzfvx4m+sAAICCjRnx+0RSUpK2bt2q9u3bS5IKFSqktm3basaMGZna3giekuTt7a0KFSpo//791n2FChVSzZo1ra8rVqwoT09PmzbZOXTokC5duqSmTZvK1dXVus2ePdu6RGT//v3WkJ9VTdkZO3as/vzzT33yyScKCwvTJ598oooVK2r37t2SpMTERNWvX98awu+0zhsiIiKsP5coUUKSrB8QTUxMVJMmTbK8xu7du3Xt2jWFhITYXGPt2rXWa/Tu3VtjxoxRvXr1NHz4cO3atSvbmgcPHqzk5GTrdqvlQgAA4P7HjPh9YsaMGUpPT7fOvEqSYRhydHTUBx98IA8Pj3+ljtTUVEnXl2yULFnS5pijo+Md91+0aFG1adNGbdq00bhx41S1alW98847mjVrlpydne9KnTcHe4vFIun6+nJJt7xmamqq7O3ttWPHDtnb29scu7H8pHv37oqOjtaSJUu0YsUKjR8/XpMmTdIrr7ySqT9HR8d8GUMAAHB/YEb8PpCenq7Zs2dr0qRJSkxMtG47d+6Uv7+/5s6da9N+8+bN1p/PnTunAwcOKDQ01Ka/7du3W18nJSXp/PnzNm2yU6lSJTk6Our48eMqV66czRYQECBJ1mUu2dWUUw4ODipbtqz1qSkRERFav369zXr3O6kzJyIiIhQfH5/lsapVq+ratWs6depUpmv4+flZ2wUEBKhHjx5asGCB+vbtq88++yzH1wcAAAUXM+L3gcWLF+vcuXPq1q1bppnv1q1ba8aMGerRo4d136hRo1S0aFH5+vpqyJAhKlasmM3TRAoXLqxXXnlFU6dOVaFChdSrVy/VqVPntuvDJcnNzU39+vXTa6+9poyMDD3yyCNKTk7Whg0b5O7uri5duqhHjx6aNGmS+vfvr+7du2vHjh23fb734sWLNW/ePLVr104hISEyDEPff/+9li5dqpkzZ0q6/sHI999/X+3atdPgwYPl4eGhzZs3q1atWqpQoUKu68yJ4cOHq0mTJipbtqzatWun9PR0LV26VAMHDlRISIg6dOigzp07a9KkSapatapOnz6t+Ph4RUREqHnz5urTp4+aNWumkJAQnTt3TmvWrMnRGx4AAFDwMSN+H5gxY4aioqKyXH7SunVrbd++3Wbt8YQJE/Tqq6+qevXq+vPPP/X999/LwcHBetzFxUUDBw7Us88+q3r16snV1VVffvlljusZPXq0hg4dqvHjxys0NFQxMTFasmSJ9TGDgYGB+uabb7Rw4UJVqVJFn3zyicaNG3fLPitVqiQXFxf17dtXDz30kOrUqaP58+dr+vTp6tSpk6Try1ZWr16t1NRURUZGqnr16vrss8+yXTN+uzpzomHDhvrqq6+0aNEiPfTQQ2rcuLHNbP/MmTPVuXNn9e3bVxUqVFCrVq20bds2BQYGSpKuXbumnj17Wq8fEhKijz76KMfXBwAABZfFyO5ZcbjvJCQkqFGjRjp37ly2X2wTFxenPn363NWvmkf+SElJkYeHh6q88onsHXO+Ph4AANzejrc735V+b/z9Tk5Olru7+y3bMiMOAAAAmIAgDgAAAJiAIF6ANGzYUIZhZLssRbr+NfAsSwEAADAfQRwAAAAwAUEcAAAAMAFBHAAAADABQRwAAAAwAUEcAAAAMAFBHAAAADABQRwAAAAwAUEcAAAAMAFBHAAAADABQRwAAAAwAUEcAAAAMAFBHAAAADABQRwAAAAwAUEcAAAAMAFBHAAAADBBIbMLAHBr68a0l7u7u9llAACAfMaMOAAAAGACgjgAAABgAoI4AAAAYAKCOAAAAGACgjgAAABgAoI4AAAAYAKCOAAAAGACgjgAAABgAoI4AAAAYAKCOAAAAGACgjgAAABggkJmFwDg1k5MqCM3J3uzy8B9KnDYbrNLAABkgxlxAAAAwAQEcQAAAMAEBHEAAADABARxAAAAwAQ
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"sns.barplot(data, x=record_col, y=group)"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {},
"outputs": [],
"source": [
"# group = ['Publication Year','Domain_English']\n",
"# data = wos.groupby(group, as_index=False)[record_col].nunique().sort_values(ascending=False, by=group+[record_col])\n",
"# data"
]
},
{
"cell_type": "code",
"execution_count": 34,
"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>Publication Year</th>\n",
" <th>Domain_English</th>\n",
" <th>UT (Unique WOS ID)</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>65</th>\n",
" <td>2022.0</td>\n",
" <td>Natural Sciences</td>\n",
" <td>524</td>\n",
" </tr>\n",
" <tr>\n",
" <th>64</th>\n",
" <td>2022.0</td>\n",
" <td>Miscellaneous</td>\n",
" <td>41</td>\n",
" </tr>\n",
" <tr>\n",
" <th>63</th>\n",
" <td>2022.0</td>\n",
" <td>Health Sciences</td>\n",
" <td>368</td>\n",
" </tr>\n",
" <tr>\n",
" <th>62</th>\n",
" <td>2022.0</td>\n",
" <td>Economic &amp; Social Sciences</td>\n",
" <td>106</td>\n",
" </tr>\n",
" <tr>\n",
" <th>61</th>\n",
" <td>2022.0</td>\n",
" <td>Arts &amp; Humanities</td>\n",
" <td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>2012.0</td>\n",
" <td>Miscellaneous</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>2012.0</td>\n",
" <td>Health Sciences</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>2012.0</td>\n",
" <td>Economic &amp; Social Sciences</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>2012.0</td>\n",
" <td>Arts &amp; Humanities</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>2012.0</td>\n",
" <td>Applied Sciences</td>\n",
" <td>21</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>66 rows × 3 columns</p>\n",
"</div>"
],
"text/plain": [
" Publication Year Domain_English UT (Unique WOS ID)\n",
"65 2022.0 Natural Sciences 524\n",
"64 2022.0 Miscellaneous 41\n",
"63 2022.0 Health Sciences 368\n",
"62 2022.0 Economic & Social Sciences 106\n",
"61 2022.0 Arts & Humanities 4\n",
".. ... ... ...\n",
"4 2012.0 Miscellaneous 3\n",
"3 2012.0 Health Sciences 2\n",
"2 2012.0 Economic & Social Sciences 0\n",
"1 2012.0 Arts & Humanities 0\n",
"0 2012.0 Applied Sciences 21\n",
"\n",
"[66 rows x 3 columns]"
]
},
"execution_count": 34,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"group = ['Publication Year','Domain_English']\n",
"data = wos.groupby(group)[record_col].nunique().unstack(fill_value=0).stack().reset_index().rename(columns={0:record_col}).sort_values(ascending=False, by=group+[record_col])\n",
"data"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.legend.Legend at 0x1909ff98d30>"
]
},
"execution_count": 35,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"g=sns.lineplot(data.sort_values(ascending=True, by=group[-1]),y=record_col,x=group[0], hue=group[-1])\n",
"g.set(xticks=list(range(2012,2022+1,2)))\n",
"g.legend(title=None)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Field"
]
},
{
"cell_type": "code",
"execution_count": 65,
"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>Publication Year</th>\n",
" <th>Domain_English</th>\n",
" <th>Field_English</th>\n",
" <th>UT (Unique WOS ID)</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>176</th>\n",
" <td>2022.0</td>\n",
" <td>Natural Sciences</td>\n",
" <td>Physics &amp; Astronomy</td>\n",
" <td>205</td>\n",
" </tr>\n",
" <tr>\n",
" <th>175</th>\n",
" <td>2022.0</td>\n",
" <td>Natural Sciences</td>\n",
" <td>Mathematics &amp; Statistics</td>\n",
" <td>61</td>\n",
" </tr>\n",
" <tr>\n",
" <th>174</th>\n",
" <td>2022.0</td>\n",
" <td>Natural Sciences</td>\n",
" <td>Earth &amp; Environmental Sciences</td>\n",
" <td>134</td>\n",
" </tr>\n",
" <tr>\n",
" <th>173</th>\n",
" <td>2022.0</td>\n",
" <td>Natural Sciences</td>\n",
" <td>Chemistry</td>\n",
" <td>81</td>\n",
" </tr>\n",
" <tr>\n",
" <th>172</th>\n",
" <td>2022.0</td>\n",
" <td>Natural Sciences</td>\n",
" <td>Biology</td>\n",
" <td>43</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>2012.0</td>\n",
" <td>Miscellaneous</td>\n",
" <td>Miscellaneous</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>2012.0</td>\n",
" <td>Health Sciences</td>\n",
" <td>Clinical Medicine</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>2012.0</td>\n",
" <td>Applied Sciences</td>\n",
" <td>Information &amp; Communication Technologies</td>\n",
" <td>14</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>2012.0</td>\n",
" <td>Applied Sciences</td>\n",
" <td>Engineering</td>\n",
" <td>5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>2012.0</td>\n",
" <td>Applied Sciences</td>\n",
" <td>Agriculture, Fisheries &amp; Forestry</td>\n",
" <td>2</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>177 rows × 4 columns</p>\n",
"</div>"
],
"text/plain": [
" Publication Year Domain_English \n",
"176 2022.0 Natural Sciences \\\n",
"175 2022.0 Natural Sciences \n",
"174 2022.0 Natural Sciences \n",
"173 2022.0 Natural Sciences \n",
"172 2022.0 Natural Sciences \n",
".. ... ... \n",
"4 2012.0 Miscellaneous \n",
"3 2012.0 Health Sciences \n",
"2 2012.0 Applied Sciences \n",
"1 2012.0 Applied Sciences \n",
"0 2012.0 Applied Sciences \n",
"\n",
" Field_English UT (Unique WOS ID) \n",
"176 Physics & Astronomy 205 \n",
"175 Mathematics & Statistics 61 \n",
"174 Earth & Environmental Sciences 134 \n",
"173 Chemistry 81 \n",
"172 Biology 43 \n",
".. ... ... \n",
"4 Miscellaneous 3 \n",
"3 Clinical Medicine 2 \n",
"2 Information & Communication Technologies 14 \n",
"1 Engineering 5 \n",
"0 Agriculture, Fisheries & Forestry 2 \n",
"\n",
"[177 rows x 4 columns]"
]
},
"execution_count": 65,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"group = ['Publication Year',\"Domain_English\",'Field_English']\n",
"data = wos.groupby(group, as_index=False)[record_col].nunique().sort_values(ascending=False, by=group+[record_col])\n",
"data"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {},
"outputs": [],
"source": [
"# g = sns.FacetGrid(data, col=\"Domain_English\", col_wrap=3, height=5)\n",
"# g.map_dataframe(sns.lineplot,x=group[0],y=record_col,hue=group[-1])\n",
"# g.set_titles(col_template=\"{col_name}\")\n",
"# g.set(xticks=list(range(2012,2022+1,2)))\n",
"# # g.add_legend()"
]
},
{
"cell_type": "code",
"execution_count": 66,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import matplotlib.pyplot as plt\n",
"for cat in sorted(data[group[-2]].unique()):\n",
" sub_data = data[data[group[-2]]==cat]\n",
" sub_data = sub_data.complete({group[0]:range(int(data[group[0]].min()), int(data[group[0]].max()) + 1)}\n",
" ,group[-1],fill_value=0)\n",
" g=sns.lineplot(sub_data.sort_values(ascending=True, by=group[-1]),y=record_col,x=group[0], hue=group[-1])\n",
" g.set(xticks=list(range(2012,2022+1,2)))\n",
" g.legend(title=None)\n",
" g.set_title(cat)\n",
" g.yaxis.set_major_locator(MaxNLocator(integer=True))\n",
" plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# SubField"
]
},
{
"cell_type": "code",
"execution_count": 68,
"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>Publication Year</th>\n",
" <th>Domain_English</th>\n",
" <th>Field_English</th>\n",
" <th>SubField_English</th>\n",
" <th>UT (Unique WOS ID)</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>774</th>\n",
" <td>2022.0</td>\n",
" <td>Natural Sciences</td>\n",
" <td>Physics &amp; Astronomy</td>\n",
" <td>Optics</td>\n",
" <td>56</td>\n",
" </tr>\n",
" <tr>\n",
" <th>773</th>\n",
" <td>2022.0</td>\n",
" <td>Natural Sciences</td>\n",
" <td>Physics &amp; Astronomy</td>\n",
" <td>Nuclear &amp; Particle Physics</td>\n",
" <td>28</td>\n",
" </tr>\n",
" <tr>\n",
" <th>772</th>\n",
" <td>2022.0</td>\n",
" <td>Natural Sciences</td>\n",
" <td>Physics &amp; Astronomy</td>\n",
" <td>Mathematical Physics</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>771</th>\n",
" <td>2022.0</td>\n",
" <td>Natural Sciences</td>\n",
" <td>Physics &amp; Astronomy</td>\n",
" <td>General Physics</td>\n",
" <td>14</td>\n",
" </tr>\n",
" <tr>\n",
" <th>770</th>\n",
" <td>2022.0</td>\n",
" <td>Natural Sciences</td>\n",
" <td>Physics &amp; Astronomy</td>\n",
" <td>Fluids &amp; Plasmas</td>\n",
" <td>21</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>2012.0</td>\n",
" <td>Applied Sciences</td>\n",
" <td>Information &amp; Communication Technologies</td>\n",
" <td>Artificial Intelligence &amp; Image Processing</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>2012.0</td>\n",
" <td>Applied Sciences</td>\n",
" <td>Engineering</td>\n",
" <td>Mechanical Engineering &amp; Transports</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>2012.0</td>\n",
" <td>Applied Sciences</td>\n",
" <td>Engineering</td>\n",
" <td>Industrial Engineering &amp; Automation</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>2012.0</td>\n",
" <td>Applied Sciences</td>\n",
" <td>Engineering</td>\n",
" <td>Geological &amp; Geomatics Engineering</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>2012.0</td>\n",
" <td>Applied Sciences</td>\n",
" <td>Agriculture, Fisheries &amp; Forestry</td>\n",
" <td>Food Science</td>\n",
" <td>2</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>775 rows × 5 columns</p>\n",
"</div>"
],
"text/plain": [
" Publication Year Domain_English \n",
"774 2022.0 Natural Sciences \\\n",
"773 2022.0 Natural Sciences \n",
"772 2022.0 Natural Sciences \n",
"771 2022.0 Natural Sciences \n",
"770 2022.0 Natural Sciences \n",
".. ... ... \n",
"4 2012.0 Applied Sciences \n",
"3 2012.0 Applied Sciences \n",
"2 2012.0 Applied Sciences \n",
"1 2012.0 Applied Sciences \n",
"0 2012.0 Applied Sciences \n",
"\n",
" Field_English \n",
"774 Physics & Astronomy \\\n",
"773 Physics & Astronomy \n",
"772 Physics & Astronomy \n",
"771 Physics & Astronomy \n",
"770 Physics & Astronomy \n",
".. ... \n",
"4 Information & Communication Technologies \n",
"3 Engineering \n",
"2 Engineering \n",
"1 Engineering \n",
"0 Agriculture, Fisheries & Forestry \n",
"\n",
" SubField_English UT (Unique WOS ID) \n",
"774 Optics 56 \n",
"773 Nuclear & Particle Physics 28 \n",
"772 Mathematical Physics 2 \n",
"771 General Physics 14 \n",
"770 Fluids & Plasmas 21 \n",
".. ... ... \n",
"4 Artificial Intelligence & Image Processing 10 \n",
"3 Mechanical Engineering & Transports 1 \n",
"2 Industrial Engineering & Automation 3 \n",
"1 Geological & Geomatics Engineering 1 \n",
"0 Food Science 2 \n",
"\n",
"[775 rows x 5 columns]"
]
},
"execution_count": 68,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"group = ['Publication Year',\"Domain_English\",'Field_English',\"SubField_English\"]\n",
"data = wos.groupby(group, as_index=False)[record_col].nunique().sort_values(ascending=False, by=group+[record_col])\n",
"data"
]
},
{
"cell_type": "code",
"execution_count": 69,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA1QAAAHHCAYAAAC4DBmZAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAADAyUlEQVR4nOzdd1yV9f//8cdh76UioCwFEZyZI0eOtI87bWllKakts/GxXP2yTCvT0qxM+7ZQS5s2LS13Re49cIsTxAWIyDzX7w/ifCLQQIHDeN5vt3Orc13v67pe5wLP4XXe7/frbTIMw0BERERERERKzMbaAYiIiIiIiFRWSqhERERERESukRIqERERERGRa6SESkRERERE5BopoRIREREREblGSqhERERERESukRIqERERERGRa6SESkRERERE5BopoRIREREREblGSqhExCpMJhMTJ04s8XGrV6/GZDKxevXqUo9JREREpKSUUIlIqZk7dy4mk6nAw9fXly5durBkyRJrhyciIiJS6uysHYCIVD2TJk0iNDQUwzA4ffo0c+fOpVevXvz444/06dMHgMuXL2Nnp7cgERERqdz014yIlLqePXvSsmVLy/Nhw4ZRu3ZtPvvsM0tC5eTkZK3wREREREqNhvyJSJnz8vLC2dm5QI9UUXOotm7dSs+ePfHw8MDNzY2uXbuybt26Yl3jq6++4sYbb8TZ2ZmaNWty//33c/LkySLbRUVF4eTkROPGjfn222+Jjo4mJCQEAMMwCAkJoV+/foWOzcjIwNPTk0ceeaT4L15ERESqNCVUIlLqUlJSOHv2LGfOnGH37t089thjpKWlcf/991/xmN27d3PzzTezfft2xowZw4QJEzhy5AidO3dm/fr1V73e3LlzGTBgALa2tkyZMoWHHnqIb775hg4dOpCcnGxp99NPPzFw4EDs7e2ZMmUKd9xxB8OGDWPz5s2WNiaTifvvv58lS5Zw/vz5Atf58ccfSU1NverrEBERkepFQ/5EpNR169atwHNHR0c+/vhjbr311ise8/zzz5Odnc0ff/xBvXr1ABg8eDARERGMGTOGNWvWFHlcdnY2Y8eOpXHjxvz222+WoYQdOnSgT58+vPnmm7z00ksAjB8/njp16hAbG4ubmxsAXbt2pXPnzgQHB1vOOXjwYF555RW+/PJLHn30Ucv2Tz/9lJCQEDp06HANd0VERESqIvVQiUipe/fdd1m2bBnLli3j008/pUuXLgwfPpxvvvmmyPa5ubn8+uuv9O/f35JMAfj7+3Pffffxxx9/kJqaWuSxmzZtIikpiREjRhSYl9W7d28aNmzITz/9BMCpU6fYuXMngwcPtiRTAJ06daJJkyYFztmgQQPatGnDggULLNvOnz/PkiVLGDRoECaTqeQ3RURERKokJVQiUupat25Nt27d6NatG4MGDeKnn34iKiqKkSNHkpWVVaj9mTNnSE9PJyIiotC+yMhIzGYzx48fL/JaR48eBSjy2IYNG1r25/83LCysULuitg0ePJjY2FjLcV999RXZ2dk88MADV3rZIiIiUg0poRKRMmdjY0OXLl1ISEjgwIED1g6nWO655x7s7e0tvVSffvopLVu2LDJxExERkepLCZWIlIucnBwA0tLSCu2rVasWLi4u7Nu3r9C+vXv3YmNjQ2BgYJHnzZ/7VNSx+/bts+zP/+/BgwcLtStqm4+PD71792bBggUcPXqU2NhY9U6JiIhIIUqoRKTMZWdn8+uvv+Lg4EBkZGSh/ba2tvznP//h+++/Jz4+3rL99OnTLFy4kA4dOuDh4VHkuVu2bImvry/vvfcemZmZlu1LliwhLi6O3r17AxAQEEDjxo2ZP39+gaRuzZo17Ny5s8hzP/DAA+zZs4fRo0dja2vLPffccy0vX0RERKowVfkTkVK3ZMkS9u7dC0BSUhILFy7kwIEDjBs37oqJ0csvv8yyZcvo0KEDI0aMwM7Ojv/7v/8jMzOTadOmXfFa9vb2TJ06lQcffJBOnTpx7733cvr0ad566y1CQkL473//a2n76quv0q9fP9q3b8+DDz7IhQsXmDVrFo0bNy6y56x3797UqFGDr776ip49e+Lr63udd0ZERESqGiVUIlLqXnjhBcv/Ozk50bBhQ+bMmXPVBXEbNWrE77//zvjx45kyZQpms5k2bdrw6aef0qZNm6teLzo6GhcXF1577TXGjh2Lq6srt99+O1OnTsXLy8vSrm/fvnz22WdMnDiRcePGER4ezty5c5k3bx67d+8udF4HBwcGDhzI7NmzNdxPREREimQyDMOwdhAiItbUvHlzatWqxbJlywrt++9//8tHH31EYmIiLi4uVohOREREKjLNoRKRaiM7O9tSHCPf6tWr2b59O507dy7UPiMjg08//ZQ777xTyZSIiIgUSUP+RKTaOHnyJN26deP+++8nICCAvXv38t577+Hn58ejjz5qaZeUlMTy5cv5+uuvOXfuHE899ZQVoxYREZGKTAmViFQb3t7e3HjjjXz44YecOXMGV1dXevfuzWuvvUaNGjUs7fbs2cOgQYPw9fXl7bffpnnz5tYLWkRERCo0zaESERERERG5RppDJSIiIiIico2UUImIiIiIiFyjKj+Hymw2c+rUKdzd3TGZTNYOR0RERIrBMAwuXrxIQEAANjZl+/2v2WwmKyurTK8hIpWLvb09tra2xWpb5ROqU6dOERgYaO0wRERE5BocP36cunXrltn5s7KyOHLkCGazucyuISKVk5eXF35+fv/aKVPlEyp3d3cg7w3Zw8PDytGIiIhIcaSmphIYGGj5HC8LhmGQkJCAra0tgYGBZd4TJiKVg2EYpKenk5SUBIC/v/9V21f5hCo/o/Tw8FBCJSIiUsmU5XD9nJwc0tPTCQgI0OLdIlKAs7MzkLc2pa+v71WH/+mrGBEREamWcnNzAXBwcLByJCJSEeV/0ZKdnX3VdkqoREREpFpT0SoRKUpx3xuUUImIiIiIiFwjJVQiIiIiUkBISAgzZ860dhgilYISKhEREZFKJjo6GpPJVOjRo0cPa4cmUu1U+Sp/IiIiIlVRjx49iImJKbDN0dHRStGIVF/qoRIRERGphBwdHfHz8yvw8Pb2BiA5OZlHHnmE2rVr4+TkROPGjVm8eLHl2EWLFtGoUSMcHR0JCQlh+vTpV73WsWPH6NevH25ubnh4eDBgwABOnz5doM3LL7+Mr68v7u7uDB8+nHHjxtG8eXMAfvvtN+zt7UlMTCxwzNNPP83NN99cCndDxHrUQyUiIiJC3mKel7NzrXJtZ3vbUqs2aDab6dmzJxcvXuTTTz+lfv367Nmzx7KOzubNmxkwYAATJ05k4MCB/Pnnn4wYMYIaNWoQHR1d5Pnyk6k1a9aQk5PD448/zsCBA1m9ejUACxYs4JVXXmH27Nm0b9+ezz//nOnTpxMaGgpAx44dqVevHp988gmjR48G8kpRL1iwgGnTppXK6xaxFiVUIiIiIsDl7FyiXvjFKtfeM6k7Lg4l+7Ns8eLFuLm5Fdj23HPP0bJlSzZs2EBcXBwNGjQAoF69epY2M2bMoGvXrkyYMAGABg0asGfPHl5//fUiE6oVK1awc+dOjhw5QmBgIADz58+nUaNGbNy4kVatWvHOO+8wbNgwHnzwQQBeeOEFfv31V9LS0iznGTZsGDExMZaE6scffyQjI4MBAwaU6HWLVDQa8iciIiJSCXXp0oVt27YVeDz66KNs27aNunXrWpKpf4qLi6N9+/YFtrVv354DBw5YFjv+Z/vAwEBLMgUQFRWFl5cXcXFxAOzbt4/WrVsXOO6fz6Ojozl48CDr1q0DYO7cuQwYMABXV9eSv3iRCkQ9VCIiIiLkDbvbM6m71a5dUq6uroSFhRU+l7NzaYRU6nx9fenbty8xMTGEhoayZMkSy5BBkcpMCZWIiIgIYDKZSjzsriJq2rQpJ06cYP/+/UX2UkVGRhIbG1tgW2xsLA0aNLDMs/pn++PHj3P8+HFLL9WePXtITk4mKioKgIiICDZu3MjgwYMtx23cuLHQuYYPH869995L3bp1qV+/fqGeMpHKqPK
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA4wAAAHHCAYAAAD0ytYkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAADkRklEQVR4nOzdd1gU1/s28HvpHQRBehMURBSssUSsATWIXdEo9iT2qLH8Yo89GmvsETW2xBpjDSJqJBYs2EBFBDEKYgMEabLn/YOX+boCuii4ovfnuvaKe+bMmWdmJ7APZ845MiGEABEREREREdEr1FQdABEREREREX2YmDASERERERFRkZgwEhERERERUZGYMBIREREREVGRmDASERERERFRkZgwEhERERERUZGYMBIREREREVGRmDASERERERFRkZgwEhERERERUZGYMBKV0NSpUyGTyfDo0aM31nV0dESfPn2k98eOHYNMJsOxY8fKLkAqEzKZDFOnTlV1GCWyfv16yGQynDt37r0fOz4+HjKZDOvXry/T47z6/xgRERGVLiaMVC4VfBEu7nX69GlVh/jB2r9/P+rWrQt9fX1YWVmhU6dOiIqKKlEb8fHx6Nu3LypXrgwdHR1YWlqiSZMmmDJlikK95cuXl1nCEBUVhalTpyI+Pr5M2i8Lffr0ee19W/BiAkREREQfCg1VB0D0LqZPnw4nJ6dC5S4uLiqI5s2aNGmCzMxMaGlpqeT4ERERCAgIgIeHB+bNm4e0tDTs27cPERERqFatmlJt3Lp1C3Xr1oWuri769esHR0dHJCYm4sKFC5g7dy6mTZsm1V2+fDkqVqxYJglQVFQUpk2bhqZNm8LR0bHU239VZmYmNDTe7Ufm119/jZYtW0rv4+LiMHnyZAwaNAiff/65VF65cuV3Os6n5MaNG1BT498+iYiIygoTRirXWrdujTp16qg6DKWpqalBR0dHZcffsWMH5HI5/v77b1SqVAkAMGHCBGRnZyvdxsKFC5Geno7IyEg4ODgobEtOTn7r2DIyMqCvr//W+5e10vjcGjRogAYNGkjvz507h8mTJ6NBgwb46quv3rn9T5G2traqQyAiIvqo8c+y9FErGEc1f/58rF69GpUrV4a2tjbq1q2LiIgIhbqXL19Gnz594OzsLD1m2a9fPzx+/LjIth89eoSuXbvCyMgIZmZmGDFiBLKysl4bT1FjGJs2bYrq1asjKioKzZo1g56eHmxsbDBv3rxC+9+5cwft2rWDvr4+LCws8N133+Hw4cNKj4ssriemJF+6Y2NjYWtrWyhZBAALCwvp346Ojrh27RqOHz8uPWrZtGlTAP97pPj48eMYPHgwLCwsYGtrK53j4MGDUbVqVejq6sLMzAxdunRRePR0/fr16NKlCwCgWbNmUvsvX4ODBw/i888/h76+PgwNDdG2bVtcu3atUMzbt29HtWrVoKOjg+rVq2P37t3o06dPoV7LosYw3rt3D/3794e1tTW0tbXh5OSEb7/9Fjk5OUpfz6KcOXMGfn5+MDY2hp6eHnx8fBAeHl6onrLHz87OxqhRo2Bubg59fX106NABDx8+VKjj6OiIL7/8EidPnkS9evWgo6MDZ2dnbNy4sdBxb9++jS5dusDU1BR6enr47LPPsH//fqXO7ejRo9LnYmJigoCAAERHRxeqd+zYMdSpUwc6OjqoXLkyVq1aJY0ffjXuV3uwU1JSMHLkSNjZ2UFbWxsuLi6YO3cu5HK5Qr1t27ahdu3aMDQ0hJGRETw9PbF48WKlzoOIiOhTwR5GKtdSU1MLTT4jk8lgZmamULZlyxY8e/YMX3/9NWQyGebNm4eOHTvi9u3b0NTUBACEhITg9u3b6Nu3LywtLXHt2jWsXr0a165dw+nTpwt9Ue3atSscHR0xe/ZsnD59GkuWLMHTp0+L/IL9Jk+fPoWfnx86duyIrl27YseOHRg3bhw8PT3RunVrAPk9cM2bN0diYiJGjBgBS0tLbNmyBWFhYUofp1evXpg/fz6+++47bN68udA5KcPBwQFHjhzB0aNH0bx582LrLVq0CMOGDYOBgQF++OEHAJB6NQsMHjwY5ubmmDx5MjIyMgDkPzb777//onv37rC1tUV8fDxWrFiBpk2bIioqCnp6emjSpAmGDx+OJUuW4P/+7//g7u4OANJ/f/vtNwQFBcHX1xdz587F8+fPsWLFCjRu3BgXL16UksH9+/ejW7du8PT0xOzZs/H06VP0798fNjY2b7wO9+/fR7169ZCSkoJBgwbBzc0N9+7dw44dO/D8+fO3fuz46NGjaN26NWrXro0pU6ZATU0NwcHBaN68Of755x/Uq1evxMcfNmwYKlSogClTpiA+Ph6LFi3C0KFD8fvvvysc+9atW+jcuTP69++PoKAgrFu3Dn369EHt2rXh4eEBAHjw4AEaNmyI58+fY/jw4TAzM8OGDRvQrl077NixAx06dCj23I4cOYLWrVvD2dkZU6dORWZmJpYuXYpGjRrhwoUL0udy8eJF+Pn5wcrKCtOmTUNeXh6mT58Oc3PzN16/58+fw8fHB/fu3cPXX38Ne3t7/Pvvv5gwYQISExOxaNEiAPn/vwcGBqJFixaYO3cuACA6Ohrh4eEYMWKE0p8XERHRR08QlUPBwcECQJEvbW1tqV5cXJwAIMzMzMSTJ0+k8j///FMAEH/99ZdU9vz580LH2bp1qwAgTpw4IZVNmTJFABDt2rVTqDt48GABQFy6dEkqc3BwEEFBQdL7sLAwAUCEhYVJZT4+PgKA2Lhxo1SWnZ0tLC0tRadOnaSyBQsWCABiz549UllmZqZwc3Mr1GZx9uzZI/T09IS6uroYNWrUG+sX5erVq0JXV1cAEF5eXmLEiBFiz549IiMjo1BdDw8P4ePjU6i84PNr3LixePHihcK2oj6HU6dOFbpG27dvL/K8nz17JkxMTMTAgQMVypOSkoSxsbFCuaenp7C1tRXPnj2Tyo4dOyYACAcHB4X9AYgpU6ZI73v37i3U1NREREREoXjlcnmhsqJEREQIACI4OFjaz9XVVfj6+iq08fz5c+Hk5CRatWpVouMXXOeWLVsqtPfdd98JdXV1kZKSIpU5ODgUuteTk5OFtra2GD16tFQ2cuRIAUD8888/UtmzZ8+Ek5OTcHR0FHl5eUKI//2/V3BuQgjh5eUlLCwsxOPHj6WyS5cuCTU1NdG7d2+pzN/fX+jp6Yl79+5JZTExMUJDQ0O8+mvr1f/HfvzxR6Gvry9u3rypUG/8+PFCXV1dJCQkCCGEGDFihDAyMip0/xEREZEiPpJK5dovv/yCkJAQhdfBgwcL1evWrRsqVKggvS+YYOT27dtSma6urvTvrKwsPHr0CJ999hkA4MKFC4XaHDJkiML7YcOGAQAOHDhQ4vMwMDBQGMOmpaWFevXqKcR36NAh2NjYoF27dlKZjo4OBg4cqNQxzp07h65du2LevHlYsWIFfv7550KPWPr6+ipMvlIUDw8PREZG4quvvkJ8fDwWL16M9u3bo1KlSlizZo1SsRQYOHAg1NXVFcpe/hxyc3Px+PFjuLi4wMTEpMjP4VUhISFISUlBYGAgHj16JL3U1dVRv359qUf2/v37uHLlCnr37g0DAwNpfx8fH3h6er72GHK5HHv27IG/v3+RY2jfpucWACIjIxETE4MePXrg8ePHUuwZGRlo0aIFTpw4AblcXuLjDxo0SKHs888/R15eHu7cuaNQr1q1agqfv7m5OapWrapwHx44cAD16tVD48aNpTIDAwMMGjQI8fHxxc64m5iYiMjISPTp0wempqZSeY0aNdCqVSvp/5u8vDwcOXIE7du3h7W1tVTPxcVF6m1/ne3bt+Pzzz9HhQoVFD7/li1bIi8vDydOnAAAmJiYICMjAyEhIW9sk4iI6FPGR1KpXKtXr55Sk97Y29srvC9IHp8+fSqVPXnyBNOmTcO2bdsKTd6SmppaqE1XV1eF95UrV4aamtpbLfNga2tb6Et+hQoVcPnyZen9nTt3ULly5UL1lJ0RduLEiXB1dZUS3QcPHmDSpEkwNjbGd999BwC4du0aunf
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAzQAAAHHCAYAAABp6x3pAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAACVC0lEQVR4nOzdd3zV9fXH8dfNTXKzJ9lkgLJBUBSLtiAWxFm0WilVGeIWlaJWqQNx71VXf5ahrbWu1omDomBFFAFxsWcgZED2Hvd+f39c7oWYwU1yZ/J+Ph55mHzvd5z7pU1ycs73fEyGYRiIiIiIiIgEoCBfByAiIiIiItJZSmhERERERCRgKaEREREREZGApYRGREREREQClhIaEREREREJWEpoREREREQkYCmhERERERGRgKWERkREREREApYSGhERERERCVhKaER6iJycHKZPn+7rMJoxmUzcddddHjn3rl27MJlMLF682CPnd7ef//ssX74ck8nE8uXLfRaTiIhIIFBCIxKAFi9ejMlkYs2aNa2+fsoppzB06NAuX2fJkiUeSzj8ya5du5gxYwZHHXUUYWFhpKamMmbMGObNm9dsv+eeey5gEiQREZGeItjXAYiId2zevJmgoI79DWPJkiU8++yzHktqamtrCQ727behbdu2ccIJJxAeHs6ll15KTk4O+fn5rFu3joceeoj58+c7933uuefo1auXVypdY8aMoba2ltDQUI9fS0REJJApoRHpISwWi69DAMBms9HQ0EBYWBhhYWG+DocnnniCqqoq1q9fT3Z2drPXioqKfBQVBAUF+cX9ERER8XdqORPpIX7+jEZjYyPz58+nX79+hIWFkZiYyC9/+UuWLl0KwPTp03n22WcB+7Mujg+H6upqbrzxRjIzM7FYLAwYMIBHH30UwzCaXddkMjFr1ixeeeUVhgwZgsVi4aOPPnK+9vPqT15eHjNnziQ9PR2LxUKfPn24+uqraWhoAKCkpISbbrqJYcOGERUVRUxMDGeccQbfffddp+7L9u3b6d27d4tkBiA5ObnZ/fvpp59YsWKF816ccsopANx1113N7o2DozVw165dzm2GYXDvvffSu3dvIiIiGDduHD/99FOLY9t6hubrr7/m9NNPJzY2loiICMaOHcvKlSub7VNZWcns2bPJycnBYrGQnJzMhAkTWLduXQfujIiISGBQhUYkgJWXl3PgwIEW2xsbG4947F133cUDDzzAZZddxqhRo6ioqGDNmjWsW7eOCRMmcOWVV7Jv3z6WLl3K3//+92bHGobBb37zGz777DNmzpzJiBEj+Pjjj7n55pvJy8vjiSeeaLb/p59+yuuvv86sWbPo1asXOTk5rca0b98+Ro0aRVlZGVdccQUDBw4kLy+PN998k5qaGkJDQ9mxYwdvv/02v/vd7+jTpw+FhYX89a9/ZezYsWzYsIH09HTXbyCQnZ3Nf//7Xz799FNOPfXUNvd78sknue6664iKiuK2224DICUlpUPXArjzzju59957OfPMMznzzDNZt24dp512mjNha8+nn37KGWecwciRI5k3bx5BQUEsWrSIU089lf/973+MGjUKgKuuuoo333yTWbNmMXjwYIqLi/niiy/YuHEjxx13XIdjFhER8WuGiAScRYsWGUC7H0OGDGl2THZ2tjFt2jTn18OHDzfOOuusdq9z7bXXGq19m3j77bcNwLj33nubbb/gggsMk8lkbNu2zbkNMIKCgoyffvqpxXkAY968ec6vp06dagQFBRnffPNNi31tNpthGIZRV1dnWK3WZq/t3LnTsFgsxt13391sG2AsWrSo3ff4448/GuHh4QZgjBgxwrjhhhuMt99+26iurm6x75AhQ4yxY8e22D5v3rxW75Pj32nnzp2GYRhGUVGRERoaapx11lnO92MYhvHnP//ZAJr9+3z22WcGYHz22WfO99+vXz9j4sSJzY6tqakx+vTpY0yYMMG5LTY21rj22mvbfd8iIiLdhVrORALYs88+y9KlS1t8HHPMMUc8Ni4ujp9++omtW7d2+LpLlizBbDZz/fXXN9t+4403YhgGH374YbPtY8eOZfDgwe2e02az8fbbb3POOedw/PHHt3jd0dJlsVicww2sVivFxcVERUUxYMCATrVUDRkyhPXr13PxxReza9cunnrqKc4991xSUlJ48cUXO3y+9vz3v/+loaGB6667rlmL2uzZs4947Pr169m6dSt/+MMfKC4u5sCBAxw4cIDq6mp+/etf8/nnn2Oz2QD7v+3XX3/Nvn373Bq/iIiIP1LLmUgAGzVqVKu//MfHx7faina4u+++m0mTJtG/f3+GDh3K6aefziWXXOJSMrR7927S09OJjo5utn3QoEHO1w/Xp0+fI55z//79VFRUHHHctM1m46mnnuK5555j586dWK1W52uJiYlHvE5r+vfvz9///nesVisbNmzg/fff5+GHH+aKK66gT58+jB8/vlPn/TnHfenXr1+z7UlJScTHx7d7rCPxnDZtWpv7lJeXEx8fz8MPP8y0adPIzMxk5MiRnHnmmUydOpW+fft28R2IiIj4H1VoRHqoMWPGsH37dhYuXMjQoUP529/+xnHHHcff/vY3t18rPDzcbee6//77mTNnDmPGjOEf//gHH3/8MUuXLmXIkCHOCkVnmc1mhg0bxty5c/nPf/4DwCuvvHLE41obCAA0S7a6yvHeHnnkkVarckuXLiUqKgqACy+8kB07dvCXv/yF9PR0HnnkEYYMGdKiciYiItIdqEIj0oMlJCQwY8YMZsyYQVVVFWPGjOGuu+7isssuA9r+Rd3xIH1lZWWzKs2mTZucr3dUUlISMTEx/Pjjj+3u9+abbzJu3DgWLFjQbHtZWRm9evXq8HXb4qh85efnO7e1dT8c1ZWysjLi4uKc239eqXLcl61btzarluzfv5/S0tJ24znqqKMAiImJcalilJaWxjXXXMM111xDUVERxx13HPfddx9nnHHGEY8VEREJJKrQiPRQxcXFzb6Oiori6KOPpr6+3rktMjISsP+ifrgzzzwTq9XKM88802z7E088gclk6tQvzUFBQZx77rm89957rFmzpsXrxsFx0GazucVo6DfeeIO8vLwOXxPgf//7X6tT4ZYsWQLAgAEDnNsiIyNb3As4lGx8/vnnzm3V1dW89NJLzfYbP348ISEh/OUvf2n2Hp588skjxjly5EiOOuooHn30Uaqqqlq8vn//fsBeFSovL2/2WnJyMunp6c3+bUVERLoLVWhEeqjBgwdzyimnMHLkSBISElizZo1z1K/DyJEjAbj++uuZOHEiZrOZ3//+95xzzjmMGzeO2267jV27djF8+HA++eQT3nnnHWbPnu38Bb+j7r//fj755BPGjh3LFVdcwaBBg8jPz+eNN97giy++IC4ujrPPPpu7776bGTNmcNJJJ/HDDz/wyiuvdPr5kIceeoi1a9fy29/+1vn80Lp163j55ZdJSEho9sD+yJEjef7557n33ns5+uijSU5O5tRTT+W0004jKyuLmTNncvPNN2M2m1m4cCFJSUnk5uY6j09KSuKmm27igQce4Oyzz+bMM8/k22+/5cMPPzxidSkoKIi//e1vnHHGGQwZMoQZM2aQkZFBXl4en332GTExMbz33ntUVlbSu3dvLrjgAoYPH05UVBT//e9/+eabb3jsscc6dY9ERET8mm+HrIlIZzjGAbc23tgwDGPs2LFHHNt87733GqNGjTLi4uKM8PBwY+DAgcZ9991nNDQ0OPdpamoyrrvuOiMpKckwmUzNRhNXVlYaf/zjH4309HQjJCTE6Nevn/HII480GylsGPbRzG2NEOZnY5sNwzB2795tTJ061UhKSjIsFovRt29f49prrzXq6+sNw7CPbb7xxhuNtLQ0Izw83Dj55JONVatWGWPHjm02UtnVsc0rV640rr32WmPo0KFGbGysERISYmRlZRnTp083tm/f3mzfgoIC46yzzjKio6MNoNn11q5da5x44olGaGiokZWVZTz++OMtxjYbhmFYrVZj/vz5zvhPOeUU48cff2zx7/Pzsc0O337
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAuQAAAHHCAYAAAD3dE1gAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABgvElEQVR4nO3deXwUhfnH8e/mPkgICVeAJICCgMghKiBVxIKoiKJSEQ8OFZXDg9QDWjSAFRQFtT9RWgVRa5HiLaCCXK2IyunB5QEkXAlHyEEScuzO7w+YlSUJ7IbdTLL7eb9eebU7OzvzzDQN30yeecZmGIYhAAAAAJYIsroAAAAAIJARyAEAAAALEcgBAAAACxHIAQAAAAsRyAEAAAALEcgBAAAACxHIAQAAAAsRyAEAAAALEcgBAAAACxHIgRpg7ty5stlsWrdu3RnXveKKK3TFFVc4X+/atUs2m01z5871XYFeZNb7/PPPW12KV1l5XLXtewAA4IpADviQGbTNr4iICLVu3VpjxoxRVlaW1eUFhEWLFuniiy9WdHS0EhMTdfPNN2vLli1ufbZ58+Yu//tV9kUQBgCcjRCrCwACweTJk9WiRQsdO3ZMX331lV599VUtXrxYP/30k6Kiojza1pIlS3xUpf9Zu3atbrjhBp1//vmaNm2a8vLytHDhQq1du1bt2rU74+dffPFFHT161Pl68eLFmjdvnl544QXVr1/fufzSSy/1Sf0AgMBAIAeqwTXXXKOLLrpIknTPPfcoISFBM2bM0Mcff6zBgwd7tK2wsDBflOiX3nvvPTkcDi1ZskSNGjWSJI0fP17FxcVufX7AgAEurzMzMzVv3jwNGDBAzZs3d3lv165dXqgYABCIaFkBLHDllVdKknbu3OmyvLi4WKmpqWrQoIGio6N144036uDBgy7rnNpDXpnly5frsssuU3R0tOLi4nTDDTdo69atLuvk5+fr4YcfVvPmzRUeHq6GDRuqT58+2rBhg8t6CxYsUJcuXRQZGan69evrjjvu0N69e13WGTZsmOrUqaMdO3aob9++io6OVpMmTTR58mQZhlFhjf/85z91zjnnKDw8XBdffLHWrl3rfO+NN96QzWbTxo0by31uypQpCg4OLlfDqYKCKv4RFx4eftrPna3THZdp27ZtGjhwoOLj4xUREaGLLrpIn3zySbn1duzYoT/96U+Kj49XVFSUunXrpkWLFrlVhzvfA5K0cuVKXXTRRYqIiNA555yjf/zjH5o4caJsNptznZ49e6pjx44V7ue8885T37593aoJAFAegRywwG+//SZJSkhIcFn+wAMP6Pvvv1daWppGjhypTz/9VGPGjPF4+19++aX69u2rAwcOaOLEiUpNTdXXX3+tHj16uFzJvf/++/Xqq6/q5ptv1iuvvKJHHnlEkZGRLqFt7ty5uuWWWxQcHKypU6dqxIgR+uCDD/SHP/xBOTk5Lvu12+26+uqr1ahRI02bNk1dunRRWlqa0tLSytX473//W88995zuu+8+/e1vf9OuXbt00003qbS0VJI0cOBARUZG6p133in32XfeeUdXXHGFmjZtetrzcOeddyo4OFhjx46t9JcCbzvTcUnS5s2b1a1bN23dulXjxo3T9OnTFR0drQEDBujDDz90rpeVlaVLL71UX3zxhUaNGqWnn35ax44d0/XXX++yXkXc/R7YuHGjrr76ah0+fFiTJk3S3XffrcmTJ+ujjz5y2d6dd96pH374QT/99JPL8rVr1+rnn3/WHXfcUfWTBgCBzgDgM2+88YYhyfjyyy+NgwcPGrt37zbeffddIyEhwYiMjDT27Nnjsl7v3r0Nh8Ph/PzYsWON4OBgIycnx7msZ8+eRs+ePZ2vd+7caUgy3njjDeeyTp06GQ0bNjQOHz7sXPb9998bQUFBxpAhQ5zL6tata4wePbrS+ktKSoyGDRsa7du3N4qKipzLFy5caEgynnzySeeyoUOHGpKMBx54wLnM4XAY/fr1M8LCwoyDBw+61JuQkGBkZ2c71/34448NScann37qXDZ48GCjSZMmht1udy7bsGFDueOtzEcffWRERUUZwcHBRmpq6hnXP5PnnnvOkGTs3Lmz3HueHNcf//hH44ILLjCOHTvmXOZwOIxLL73UaNWqlXPZww8/bEgy/ve//zmX5efnGy1atDCaN2/uPC9n8z3Qv39/Iyoqyti7d69z2S+//GKEhIQYJ/8TkZOTY0RERBiPP/64y3E/+OCDRnR0tHH06NHTnjsAQOW4Qg5Ug969e6tBgwZKSkrSrbfeqjp16ujDDz8sd4X33nvvdWkTuOyyy2S325Wenu72vvbv369NmzZp2LBhio+Pdy7v0KGD+vTpo8WLFzuXxcXF6dtvv9W+ffsq3Na6det04MABjRo1ShEREc7l/fr1U5s2bSpsnTj5ir7NZtOYMWNUUlKiL7/80mW9QYMGqV69ei7HKh1v0TANGTJE+/bt04oVK5zL3nnnHUVGRurmm28+7XlYt26dbrnlFk2bNk2vvvqqZsyYoYkTJ7qs07dvX+d+veVMx5Wdna3ly5frlltuUX5+vg4dOqRDhw7p8OHD6tu3r3755RdnK87ixYt1ySWX6A9/+INze3Xq1NG9996rXbt2VTotxt3vAbvdri+//FIDBgxQkyZNnOude+65uuaaa1y2WbduXd1www2aN2+e868Ndrtd8+fP14ABAxQdHV3lcwYAgY5ADlSDmTNnaunSpVqxYoW2bNni7LM+VXJysstrM9gdOXLE7X2Z4f28884r917btm116NAhFRQUSJKmTZumn376SUlJSbrkkks0ceJEl0B8um21adOm3C8KQUFBatmypcuy1q1bSyp/06M7x9qnTx8lJiY621YcDofmzZunG264QTExMZWcgeMmTJigVq1aafTo0RoxYoSeeuopTZo0SS+88IJznc2bN6tr166n3Y6nznRcv/76qwzD0BNPPKEGDRq4fJmtPQcOHJB0/PxX9r+j+X5F3P0eOHDggIqKinTuueeWW6+iZUOGDFFGRob+97//STreFpOVlaU777yzwjoAAO5hygpQDS655BLnlJXTCQ4OrnC54aP+51tuuUWXXXaZPvzwQy1ZskTPPfecnn32WX3wwQflrpB6mzvHGhwcrNtuu02vvfaaXnnlFa1evVr79u1zq1/566+/1p/+9Cfn6wkTJigrK0upqamKiYlRYmKi9u7dq9tvv/3sD+YkZzouh8MhSXrkkUcqvRGyojBcE/Tt21eNGjXSv/71L11++eX617/+pcaNG6t3795WlwYAtRqBHPAzKSkpkqTt27eXe2/btm2qX7++S3tBYmKiRo0apVGjRunAgQO68MIL9fTTT+uaa65x2ZY5Gca0fft25/smh8OhHTt2OK+KS9LPP/8sSeXGBLpryJAhmj59uj799FN99tlnatCggVsTPWw2m3bv3u2y7KWXXtKBAwd03333qVmzZhowYIA6d+5cpbqqyvwLQmho6BmDbEpKSqX/O5rvV/Y56czfAxEREYqIiNCvv/5abr2Klpm/IM2dO1fPPvusPvroI40YMaLSX0IAAO6hZQXwM4mJierUqZPefPNNlykoP/30k5YsWaJrr71W0vH+39zcXJfPNmzYUE2aNHHO6b7ooovUsGFDzZo1y2V292effaatW7eqX79+5fb/8ssvO/+7YRh6+eWXFRoaqj/+8Y9VOp4OHTqoQ4cOev311/X+++/r1ltvVUjIma8l9O7dW8uWLdOqVaucy4KCgvT6668rISFBGRkZ5eaMV4eGDRvqiiuu0D/+8Q/t37+/3Psnj7m89tpr9d1332nNmjXOZQUFBfrnP/+p5s2bV/pwI3e/B4KDg9W7d2999NFHLvcR/Prrr/rss88q3Padd96pI0eO6L777tPRo0eZrgIAXsAVcsAPPffcc7rmmmvUvXt33X333SoqKtL//d//qW7dus4bG/Pz89WsWTMNHDhQHTt2VJ06dfTll19q7dq1mj59uqTjV3GfffZZDR8+XD179tTgwYOVlZWll156Sc2bN9fYsWNd9hsREaHPP/9cQ4c
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA5sAAAHHCAYAAAAxuEy1AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAADs2ElEQVR4nOzdd1RUxxcH8O8DttGLdOkgQUXsDRsGgxqNLfZECPZuEo2Y2LvGnthjQI0mxkaMJYn6U6No7KBGRUAQC4qFDrtsmd8fyAsrbUFwKfdzzp7DvjLv7mMpd2fmDscYYyCEEEIIIYQQQiqQjrYDIIQQQgghhBBS81CySQghhBBCCCGkwlGySQghhBBCCCGkwlGySQghhBBCCCGkwlGySQghhBBCCCGkwlGySQghhBBCCCGkwlGySQghhBBCCCGkwlGySQghhBBCCCGkwlGySQghhBBCCCGkwlGySchrCQkJ4DgOK1asKPXYuXPnguM4tW3Ozs4ICgqqpOjePY7jMHfuXI2PnTBhQuUGVA3kv4fCwsI0PlaT91t10qlTJ3Tq1EnbYRBCCCGkCqBkk1RbYWFh4DiOf4jFYtSrVw8TJkzAs2fPtB3eW3F2dkaPHj2K3Hf69GlwHId9+/a905jOnz+PuXPnIjU1tVLav3PnDj788EOYm5vD3NwcHTt2xO+//16mNkpKevPfL1euXKmIcDV29OhRjZP2skpISMBnn30GNzc3iMVi2NjYoEOHDpgzZ06lXI8QQgghpCz0tB0AIW9r/vz5cHFxgVQqxblz57Bx40YcPXoUt27dgr6+/juLIzo6Gjo6Nffzm/Pnz2PevHkICgqCqalphbadkZGBDz74AFKpFNOmTYOBgQHOnj2LQ4cOoWfPnhV6rXft6NGjWL9+fYUnnLGxsWjRogUkEgmCg4Ph7OyMpKQkXLt2DcuWLcO8efMq9Hqa+uuvv7RyXUIIIYRUPZRskmqvW7duaN68OQBgxIgRsLCwwKpVq/Dbb79h8ODB7ywOkUj0zq5V05w7dw6PHj3Cr7/+iv79+wMAJk2aBJlMpuXIqq7Vq1cjMzMTkZGRcHJyUtuXnJxcYdfJysqCgYGBxscLhcIKuzYhhBBCqrea2w1Daq3OnTsDAOLj4wEUP4csKCgIzs7ORbaxevVqODk5QSKRoGPHjrh161ap1y1qzmZqaio+//xzODs7QyQSoW7duhg2bBhevHhRptekicePHyM4OBjW1tYQiURo0KABfvzxR7VjcnNzMXv2bDRr1gwmJiYwMDBA+/btcerUqRLbnjt3LqZNmwYAcHFx4YcuJyQkqB0XHh6Ohg0b8tf/448/NIo9v0eYMaa2/V0k8Hfv3sXHH38Mc3NziMViNG/eHIcOHVI75tWrV5g6dSq8vb1haGgIY2NjdOvWDVFRUSW2HRQUhPXr1wOA2pDvN23ZsgVubm4QiURo0aIFLl++XGrccXFxqFu3bqFEEwCsrKwKbTt27Bjat28PAwMDGBkZ4cMPP8S///5bKF5DQ0PExcWhe/fuMDIywtChQzFhwgQYGhoiOzu7ULuDBw+GjY0NlEolgKJ/3qRSKebOnYt69epBLBbD1tYWffv2RVxcHH+MSqXCmjVr0KBBA4jFYlhbW2P06NFISUlRa+vKlSsICAhAnTp1IJFI4OLiguDg4FLvFyGEEELePerZJDVO/j+wFhYW5Tp/x44dyMjIwPjx4yGVSrF27Vp07twZN2/ehLW1tcbtZGZmon379rhz5w6Cg4PRtGlTvHjxAocOHcKjR49Qp06dEs+Xy+VFJqVpaWmFtj179gytW7fm5yxaWlri2LFjGD58ONLT0zFlyhQAQHp6On744QcMHjwYI0eOREZGBrZt24aAgABcunQJjRs3LjKWvn374t69e/j555+xevVqPnZLS0v+mHPnzuHAgQMYN24cjIyMsG7dOvTr1w+JiYmlfi86deoEFxcXzJkzBx988MFbDdOVSqVF3rfMzMxC2/7991/4+vrC3t4eISEhMDAwwK+//orevXtj//796NOnDwDg/v37CA8PR//+/eHi4oJnz55h8+bN6NixI27fvg07O7siYxk9ejSePHmC48ePY+fOnUUes3v3bmRkZGD06NHgOA7Lly9H3759cf/+fQgEgmJfp5OTE06cOIH//e9//Acsxdm5cycCAwMREBCAZcuWITs7Gxs3bkS7du1w/fp1tQ9dFAoFAgIC0K5dO6xYsQL6+vpwdnbG+vXrceTIEb7nGQCys7Px+++/IygoCLq6ukVeW6lUokePHjh58iQGDRqEyZMnIyMjA8ePH8etW7fg5ubG36uwsDB89tlnmDRpEuLj4/H999/j+vXriIiIgEAgQHJyMj744ANYWloiJCQEpqamSEhIwIEDB0p8/YQQQgjREkZINRUaGsoAsBMnTrDnz5+zhw8fsl9++YVZWFgwiUTCHj16xBhjrGPHjqxjx46Fzg8MDGROTk788/j4eAZA7VzGGLt48SIDwD7//HN+25w5c9ibPz5OTk4sMDCQfz579mwGgB04cKDQtVUqVYmvzcnJiQEo8bF3717++OHDhzNbW1v24sULtXYGDRrETExMWHZ2NmOMMYVCwWQymdoxKSkpzNramgUHB6ttB8DmzJnDP//2228ZABYfH18oXgBMKBSy2NhYfltUVBQDwL777rsSXytjjEVHRzNHR0cmFApZu3btWFZWVqnnFKW0ewaAXb58mT/+/fffZ97e3kwqlfLbVCoVa9u2LfPw8OC3SaVSplQq1a4VHx/PRCIRmz9/vto2ACw0NJTfNn78+ELvlYLHWlhYsFevXvHbf/vtNwaA/f777yW+1lu3bjGJRMIAsMaNG7PJkyez8PDwQvcuIyODmZqaspEjR6ptf/r0KTMxMVHbHhgYyACwkJAQtWNVKhWzt7dn/fr1U9v+66+/MgDs77//5re9+fP2448/MgBs1apVhV5D/s/B2bNnGQC2a9cutf1//PGH2vaDBw8W+h4SQgghpOqiYbSk2vP394elpSUcHBwwaNAgGBoa4uDBg7C3ty9Xe71791Y7t2XLlmjVqhWOHj1apnb2798PHx8fvnesoKKGUr6pVatWOH78eKHHm0tlMMawf/9+9OzZE4wxvHjxgn8EBAQgLS0N165dAwDo6uryc+pUKhVevXoFhUKB5s2b88eUl7+/P99LBQCNGjWCsbEx7t+/X+J5aWlp6Nq1K1q1aoXz588jKioKffr0QW5uLn/MkiVLoKenp9Eczl69ehV53/KHAed79eoV/ve//2HAgAHIyMjg79nLly8REBCAmJgYPH78GEDecN78ob5KpRIvX76EoaEhPD093/q+DRw4EGZmZvzz9u3bA0Cp961BgwaIjIzEJ598goSEBKxduxa9e/eGtbU1tm7dyh93/PhxpKamYvDgwWrvDV1dXbRq1arIIdRjx45Ve85xHPr374+jR4+q9RDv2bMH9vb2aNeuXbFx7t+/H3Xq1MHEiRML7cv/Odi7dy9MTEzQpUsXtRibNWsGQ0NDPsb8Hu/Dhw9DLpeXeH8IIYQQon00jJZUe+vXr0e9evWgp6cHa2treHp6vlVVWA8Pj0Lb6tWrh19//bVM7cTFxaFfv37ljqNOnTrw9/cvtF1PT/3H9vnz50hNTcWWLVuwZcuWItsqWDBm+/btWLlyJe7evav2D7uLi0u5YwUAR0fHQtvMzMwKzbl708aNG5GYmIiIiAjY2tri4MGD6N69OwYPHoxff/0Vurq6uHXrFho3bqzRHM66desWed8ePXqk9jw2NhaMMcyaNQuzZs0qsq3k5GTY29tDpVJh7dq12LBhA+Lj4/n5iUD5h2vne/O+5Seepd03IO99uXPnTiiVSty+fRuHDx/G8uXLMWrUKLi4uMDf3x8xMTEAUOxQW2NjY7Xnenp6qFu3bqHjBg4ciDVr1uDQoUMYMmQIMjMzcfToUX74b3Hi4uLg6elZ6H1bUExMDNLS0oqcawr89/7t2LEj+vXrh3nz5mH16tXo1KkTevfujSFDhlCBLkIIIaQKomSTVHstW7bkq9EWheO4QoVnAKg
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA4sAAAHHCAYAAAAWFs1dAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdZ1RU19eA8WfoHQRRLCiCVEUFu1iw/bERW2wxUeyJPcaa2FvU2EuMsUdN19h7wSiJvcSCDbHXqDSROvf9QJjXEdBBgUHdv7VmLebec8/ZdyjDntNUiqIoCCGEEEIIIYQQzzHQdwBCCCGEEEIIIfIfSRaFEEIIIYQQQmQgyaIQQgghhBBCiAwkWRRCCCGEEEIIkYEki0IIIYQQQgghMpBkUQghhBBCCCFEBpIsCiGEEEIIIYTIQJJFIYQQQgghhBAZSLIohBBCCCGEECIDSRaFEJkKCQnBxcXlta51cXEhJCQkR+N5lRUrVqBSqbh27VqetiuEEEII8a6SZFGIt8CZM2f48MMPKVmyJGZmZhQrVoyGDRsyb948fYf2RuLi4hgzZgxly5bF0tISBwcHKlSowIABA7hz546+wxNCCCGEeK+pFEVR9B2EECJrf/31F3Xr1qVEiRJ07twZJycnbt68yaFDh4iIiODKlSu50m5ycjJqtRpTU9NsX+vi4kJgYCArVqx4af1Vq1blwoULdO7cmQoVKhAXF8e5c+fYtGkTv/32G4GBgTq3mZqaSnJyMqampqhUqmzHLIQQQgghtBnpOwAhxMtNmjQJW1tbjh49ip2dnda5Bw8e5Fq7xsbGuVY3wPr16zl58iRr1qzho48+0jqXkJBAUlJStuozNDTE0NAwJ0MUQgghhHivyTBUIfK5iIgIypQpkyFRBChUqJDW85SUFCZMmICbmxumpqa4uLjw5ZdfkpiYmOHabdu2UadOHaytrbGxsaFy5cr8+OOPmvOZzVmcPn06NWrUwMHBAXNzcypWrMjvv//+2vcFEBAQkOGcmZkZNjY2WscuXLhA27ZtcXR0xNzcHE9PT7766ivN+azmLG7bto1atWphaWmJtbU1TZs25dy5c1plQkJCsLKy4vbt27Ro0QIrKyscHR0ZPHgwqampWmXVajVz5szB19cXMzMzHB0dadSoEceOHdMqt3r1aipWrIi5uTn29va0b9+emzdvapW5fPkyrVu3xsnJCTMzM4oXL0779u2Jjo7W7UUUQgghhMhFkiwKkc+VLFmS48ePc/bs2VeW7d69O6NHj8bf359Zs2ZRp04dvv76a9q3b69VbsWKFTRt2pTHjx8zYsQIpkyZQoUKFdi+fftL658zZw5+fn6MHz+eyZMnY2RkRJs2bdiyZctr3RfADz/8wKtGw//zzz9UrVqVvXv30qNHD+bMmUOLFi3YtGnTS69btWoVTZs2xcrKiqlTpzJq1CjOnz9PzZo1MySVqampBAUF4eDgwPTp06lTpw4zZszg+++/1yrXrVs3Bg4ciLOzM1OnTmX48OGYmZlx6NAhTZlJkybRqVMn3N3dmTlzJgMHDmTPnj3Url2bqKgoAJKSkggKCuLQoUP069ePBQsW0LNnT65evaopI4QQQgihV4oQIl/buXOnYmhoqBgaGirVq1dXhg4dquzYsUNJSkrSKnfq1CkFULp37651fPDgwQqg7N27V1EURYmKilKsra2VqlWrKs+ePdMqq1arNV937txZKVmypNb5+Ph4redJSUlK2bJllXr16mkdL1mypNK5c+eX3ld8fLzi6empAErJkiWVkJAQZenSpcr9+/czlK1du7ZibW2tXL9+Pct4ly9frgBKZGSkoiiKEhsbq9jZ2Sk9evTQuubevXuKra2t1vHOnTsrgDJ+/Hitsn5+fkrFihU1z/fu3asASv/+/TPEmB7LtWvXFENDQ2XSpEla58+cOaMYGRlpjp88eVIBlN9++y3L10gIIYQQQp+kZ1GIfK5hw4b8/ffffPDBB5w+fZpp06YRFBREsWLF2Lhxo6bc1q1bARg0aJDW9V988QWApvdv165dxMbGanrEnveqhWHMzc01Xz958oTo6Ghq1arFiRMnsn1f5ubmHD58mCFDhgBpvZ3dunWjSJEi9OvXTzN09uHDh/z555907dqVEiVK6Bzvrl27iIqKokOHDvz777+ah6GhIVWrVmXfvn0Zrvn000+1nteqVYurV69qnq9duxaVSsWYMWMyXJsey7p161Cr1bRt21arXScnJ9zd3TXt2traArBjxw7i4+Nf+XoJIYQQQuQ1SRaFeAtUrlyZdevW8eTJE44cOcKIESOIjY3lww8/5Pz58wBcv34dAwMDSpcurXWtk5MTdnZ2XL9+Hfj/uYJly5bNdhybN2+mWrVqmJmZYW9vj6OjIwsXLnztOXa2trZMmzaNa9euce3aNZYuXYqnpyfz589nwoQJAJpkLbvxXr58GYB69erh6Oio9di5c2eGxYHS5x8+r0CBAjx58kTzPCIigqJFi2Jvb//SdhVFwd3dPUO74eHhmnZLlSrFoEGDWLJkCQULFiQoKIgFCxbIfEUhhBBC5BuyGqoQbxETExMqV65M5cqV8fDwoEuXLvz2229aPV25tW3EgQMH+OCDD6hduzbffvstRYoUwdjYmOXLl2stjPO6SpYsSdeuXWnZsiWurq6sWbOGiRMnvnZ9arUaSJu36OTklOG8kZH2n7+cWklVrVajUqnYtm1bpnVaWVlpvp4xYwYhISFs2LCBnTt30r9/f77++msOHTpE8eLFcyQeIYQQQojXJcmiEG+pSpUqAXD37l0gLdlSq9VcvnwZb29vTbn79+8TFRWlWVDGzc0NgLNnz2bohXyZtWvXYmZmxo4dO7T2Xly+fPkb38vzChQogJubm2ZBH1dXV0282ZF+n4UKFaJBgwY5Epubmxs7duzg8ePHWfYuurm5oSgKpUqVwsPD45V1+vr64uvry8iRI/nrr78ICAjgu+++e6NEWQghhBAiJ8gwVCHyuX379mW6Wmj6HEVPT08AmjRpAsDs2bO1ys2cOROApk2bAvC///0Pa2trvv76axISErTKZtZOOkNDQ1QqldZWEteuXWP9+vXZu6H/nD59mn///TfD8evXr3P+/HnNfTk6OlK7dm2WLVvGjRs3dI43KCgIGxsbJk+eTHJycobzDx8+zHbMrVu3RlEUxo0bl+FceiytWrXC0NCQcePGZYhPURQePXoEQExMDCkpKVrnfX19MTAwyHSrEyGEEEKIvCY9i0Lkc/369SM+Pp6WLVvi5eVFUlISf/31F7/88gsuLi506dIFgPLly9O5c2e+//57oqKiqFOnDkeOHGHlypW0aNGCunXrAmBjY8OsWbPo3r07lStX5qOPPqJAgQKcPn2a+Ph4Vq5cmWkcTZs2ZebMmTRq1IiPPvqIBw8esGDBAkqXLs0///yT7fvatWsXY8aM4YMPPqBatWpYWVlx9epVli1bRmJiImPHjtWUnTt3LjVr1sTf35+ePXtSqlQprl27xpYtWzh16lSm9dvY2LBw4UI++eQT/P39ad++PY6Ojty4cYMtW7YQEBDA/PnzsxVz3bp1+eSTT5g7dy6XL1+mUaNGqNVqDhw4QN26denbty9ubm5MnDiRESNGcO3aNVq0aIG1tTWRkZH88ccf9OzZk8GDB7N371769u1LmzZt8PDwICUlhVWrVmFoaEjr1q2z/XoKIYQQQuQ4va3DKoTQybZt25SuXbsqXl5eipWVlWJiYqKULl1a6devX4ZtJpKTk5Vx48YppUqVUoyNjRVnZ2dlxIgRSkJCQoZ6N27cqNSoUUMxNzdXbGxslCpVqig//fST5nxmW2csXbpUcXd3V0xNTRUvLy9l+fLlypgxY5QX/5TosnXG1atXldGjRyvVqlVTChUqpBgZGSmOjo5K06ZNNdt8PO/s2bNKy5YtFTs7O8XMzEzx9PRURo0apTn/4tYZ6fbt26cEBQUptra2ipmZmeLm5qaEhIQox44d07pXS0vLDG1mdm8pKSnKN998o3h5eSkmJiaKo6Oj0rhxY+X48eNa5dauXavUrFlTsbS
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import matplotlib.pyplot as plt\n",
"for cat in sorted(data[group[-2]].unique()):\n",
" sub_data = data[data[group[-2]]==cat]\n",
" sub_data = sub_data.complete({group[0]:range(int(data[group[0]].min()), int(data[group[0]].max()) + 1)}\n",
" ,group[-1],fill_value=0)\n",
" g=sns.lineplot(sub_data.sort_values(ascending=True, by=group[-1]),y=record_col,x=group[0], hue=group[-1])\n",
" g.set(xticks=list(range(2012,2022+1,2)))\n",
" g.legend(title=None,bbox_to_anchor=(1.05, 1), loc=2, borderaxespad=0., ncols=math.ceil(len(g.legend_.texts)/12))\n",
" g.set_title(cat)\n",
" plt.show()"
]
2 years ago
}
],
"metadata": {
"kernelspec": {
2 years ago
"display_name": "Python 3 (ipykernel)",
2 years ago
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
2 years ago
"version": 3
2 years ago
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
2 years ago
"pygments_lexer": "ipython3",
"version": "3.9.16"
2 years ago
}
},
"nbformat": 4,
2 years ago
"nbformat_minor": 1
1 year ago
}