{ "metadata": { "name": "", "signature": "sha256:9c21337d8433c1079c4616e48ad732e962a7fe5736c183f351f93ee7713239d2" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "code", "collapsed": false, "input": [ "import pandas as pd\n", "import numpy\n", "import json\n", "from collections import defaultdict\n", "import scipy.stats\n", "import math\n", "import pywikibot\n", "from matplotlib.pylab import style\n", "style.use('fivethirtyeight')\n", "\n", "%pylab inline\n", "java_min_int = -2147483648" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stderr", "text": [ "VERBOSE:pywiki:Starting 1 threads...\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "Populating the interactive namespace from numpy and matplotlib\n" ] } ], "prompt_number": 1 }, { "cell_type": "code", "collapsed": false, "input": [ "allrecs = pd.DataFrame.from_dict(json.load(open('helpers/world_cultures_shortcut.json','r')))" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 2 }, { "cell_type": "code", "collapsed": false, "input": [ "#Tranforming QIDs into English labels.\n", "enwp = pywikibot.Site('en','wikipedia')\n", "wikidata = enwp.data_repository()\n", "\n", "retrieved = dict()\n", "\n", "def english_label(qid):\n", " \n", " if type(qid) is float:\n", " if math.isnan(qid):\n", " return None\n", " #first see if we've done it\n", " try:\n", " return retrieved[qid]\n", " except KeyError:\n", " try:\n", " page = pywikibot.ItemPage(wikidata, qid)\n", " data = page.get()\n", " lab = data['labels']['en']\n", " retrieved[qid] = lab\n", " return lab\n", " except (KeyError, pywikibot.exceptions.NoPage):\n", " retrieved[qid] = qid\n", " return qid\n", "#Tranforming QIDs into English labels.\n", "enwp = pywikibot.Site('en','wikipedia')\n", "wikidata = enwp.data_repository()" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 6 }, { "cell_type": "code", "collapsed": false, "input": [ "allrecs['citname'] = allrecs['citizenship'].apply(english_label)\n", "allrecs['countryname'] = allrecs['country'].apply(english_label)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stderr", "text": [ "VERBOSE:pywiki:Found 1 wikidata:wikidata processes running, including this one.\n" ] } ], "prompt_number": 7 }, { "cell_type": "code", "collapsed": false, "input": [ "wikidatanames = set(allrecs['citname']).union(set(allrecs['countryname']))" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 8 }, { "cell_type": "code", "collapsed": false, "input": [ "def normname(name):\n", " name = name.replace('*','')\n", " try:\n", " return {'Iran, Islamic Rep.': 'Iran',\n", " 'Korea, Rep.':'South Korea',\n", " 'Brunei Darussalam': 'Brunei',\n", " 'United States':'United States of America',\n", " 'Slovak Republic':'Slovakia',\n", " 'China':\"People's Republic of China\",\n", " 'People\u2019s Republic of China':\"People's Republic of China\",\n", " 'Kyrgyz Republic': 'Kyrgyzstan',\n", " 'Russian Federation': 'Russia',\n", " 'Macedonia, FYR': 'Republic of Macedonia',\n", " 'Lao PDR':'Laos',\n", " 'Bahamas':'The Bahamas',\n", " u'C\\xf4te d\\u2019Ivoire':u\"C\\xf4te d'Ivoire\",\n", " 'C\u00f4te d\u2019Ivoire':u\"C\\xf4te d'Ivoire\",\n", " 'Plu. St.. of Bolivia':'Bolivia',\n", " 'Viet Nam':'Vietnam',\n", " 'Myanmar':'Burma',\n", " 'Former Yugoslav Republic of Macedonia':'Macedonia',\n", " 'Lao People\u2019s Democratic Republic':'Laos',\n", " 'Bolivarian Republic of Venezuela':'Venezuela',\n", " 'Republic of Moldova':'Moldova',\n", " 'Central African Rep.':'Central African Republic',\n", " 'Syrian Arab Republic':'Syria',\n", " 'Republic of Tanzania':'Tanzania',\n", " 'Palestine, State of':'Palestine',\n", " 'Moldova (Republic of)':'Moldova',\n", " 'Sao Tome and Principe': u'Sao Tom\\xe9 and Pr\\xedncipe',\n", " \"Lao People's Democratic Republic\":'Laos',\n", " 'Venezuela (Bolivarian Republic of)':'Venezuela',\n", " 'The former Yugoslav Republic of Macedonia':'Macedonia',\n", " 'Iran (Islamic Republic of)':'Iran',\n", " 'Congo (Democratic Republic of the)': u'Democratic Republic of the Congo',\n", " 'Congo':u'Republic of the Congo',\n", " 'Tanzania (United Republic of)':'Tanzania',\n", " 'Hong Kong, China (SAR)':\"People's Republic of China\",\n", " 'Russian Federation':'Russia',\n", " 'Korea (Republic of)':'South Korea',\n", " 'Bolivia (Plurinational State of)':'Bolivia'}[name]\n", " except KeyError:\n", " return name" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 9 }, { "cell_type": "code", "collapsed": false, "input": [ "wef = pd.io.html.read_html('http://reports.weforum.org/global-gender-gap-report-2014/rankings/')[0]\n", "wef['Economy'] = wef['Economy'].apply(normname)\n", "wefnames = set(wef['Economy'])" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 10 }, { "cell_type": "code", "collapsed": false, "input": [ "geidirty = pd.io.html.read_html('http://www.socialwatch.org/node/14367')[2]\n", "gei = geidirty.iloc[3:,6:8]\n", "gei.columns = ['Economy', 'Score']\n", "gei = gei.dropna()\n", "gei[\"Rank\"] = gei['Score'].rank(ascending=False).apply(lambda x: int(x))" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 11 }, { "cell_type": "code", "collapsed": false, "input": [ "def country_sigi_extract(text_line):\n", " '''put the first strings together as name and the first float as the sigi value'''\n", " economy = ''\n", " sigi_val = float()\n", " for w in text_line.split(' '):\n", " try:\n", " sigi_val = float(w)\n", " break\n", " except ValueError:\n", " if economy:\n", " economy += ' ' + w\n", " else:\n", " economy = w\n", " return economy, sigi_val\n", "\n", "ec_sigi = dict([country_sigi_extract(text_line) for text_line in sigipdftext.split('\\n')] )\n", "\n", "sigi = pd.DataFrame.from_dict(ec_sigi, orient='index')\n", "sigi['Economy'] = sigi.index\n", "sigi['Economy'] = sigi['Economy'].apply(normname)\n", "sigi['Score'] = 1-sigi[0]\n", "sigi[\"Rank\"] = sigi['Score'].rank(ascending=False).apply(lambda x: int(x))" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 12 }, { "cell_type": "code", "collapsed": false, "input": [ "gdidirty = pd.DataFrame.from_csv('helpers/foreign_indexes/Table_5__Gender-related_development_index.csv')\n", "nar = gdidirty.iloc[1:,:3]\n", "nar.columns = ['Economy', 'Score', 'Rank']" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 13 }, { "cell_type": "code", "collapsed": false, "input": [ "gdi = nar[(nar['Score'] != '..') & (nar['Rank'] != '\u2014') ]" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 14 }, { "cell_type": "code", "collapsed": false, "input": [ "gdi['Score'] = gdi['Score'].apply(lambda x: float(x))\n", "gdi['Rank'] = gdi['Rank'].apply(lambda x: int(x))\n", "gdi.sort('Score')" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stderr", "text": [ "WARNING: -c:1: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame.\n", "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", "See the the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n", "\n", "WARNING:py.warnings:-c:1: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame.\n", "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", "See the the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n", "\n" ] }, { "output_type": "stream", "stream": "stderr", "text": [ "WARNING: -c:2: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame.\n", "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", "See the the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n", "\n", "WARNING:py.warnings:-c:2: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame.\n", "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", "See the the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n", "\n" ] }, { "html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
EconomyScoreRank
HDI ranks
169 Afghanistan 0.602 148
187 Niger 0.714 147
154 Yemen 0.738 146
146 Pakistan 0.750 145
184 Chad 0.762 144
176 Mali 0.771 143
185 Central African Republic 0.776 142
179 Guinea 0.785 141
175 Liberia 0.786 140
183 Sierra Leone 0.799 139
161 Mauritania 0.801 138
120 Iraq 0.802 137
166 Togo 0.803 136
165 Benin 0.822 134
186 Congo (Democratic Republic of the) 0.822 134
129 Morocco 0.828 132
135 India 0.828 132
152 Nigeria 0.839 131
77 Jordan 0.842 130
93 Algeria 0.843 129
75 Iran (Islamic Republic of) 0.847 128
118 Syrian Arab Republic 0.851 127
173 Ethiopia 0.853 126
110 Egypt 0.855 125
163 Senegal 0.864 124
152 Cameroon 0.872 123
128 Timor-Leste 0.875 122
148 Swaziland 0.877 121
178 Mozambique 0.879 120
138 Ghana 0.884 118
............
117 Philippines 0.989 17
10 Denmark 0.989 17
20 France 0.989 17
96 Jamaica 0.989 17
89 Thailand 0.990 14
114 Moldova (Republic of) 0.990 14
14 United Kingdom 0.993 13
87 Armenia 0.994 8
64 Trinidad and Tobago 0.994 8
58 Bulgaria 0.994 8
5 United States 0.995 7
1 Norway 0.997 5
43 Hungary 0.998 4
67 Venezuela (Bolivarian Republic of) 0.999 2
37 Slovakia 1.000 1
49 Argentina 1.001 2
12 Sweden 1.004 6
24 Finland 1.006 8
25 Slovenia 1.006 8
35 Poland 1.010 14
83 Ukraine 1.012 21
50 Uruguay 1.015 25
70 Kazakhstan 1.015 25
53 Belarus 1.021 32
59 Barbados 1.021 32
103 Mongolia 1.021 32
48 Latvia 1.033 52
35 Lithuania 1.036 58
57 Russian Federation 1.038 61
33 Estonia 1.042 70
\n", "

148 rows \u00d7 3 columns

\n", "
" ], "metadata": {}, "output_type": "pyout", "prompt_number": 15, "text": [ " Economy Score Rank\n", "HDI ranks \n", "169 Afghanistan 0.602 148\n", "187 Niger 0.714 147\n", "154 Yemen 0.738 146\n", "146 Pakistan 0.750 145\n", "184 Chad 0.762 144\n", "176 Mali 0.771 143\n", "185 Central African Republic 0.776 142\n", "179 Guinea 0.785 141\n", "175 Liberia 0.786 140\n", "183 Sierra Leone 0.799 139\n", "161 Mauritania 0.801 138\n", "120 Iraq 0.802 137\n", "166 Togo 0.803 136\n", "165 Benin 0.822 134\n", "186 Congo (Democratic Republic of the) 0.822 134\n", "129 Morocco 0.828 132\n", "135 India 0.828 132\n", "152 Nigeria 0.839 131\n", "77 Jordan 0.842 130\n", "93 Algeria 0.843 129\n", "75 Iran (Islamic Republic of) 0.847 128\n", "118 Syrian Arab Republic 0.851 127\n", "173 Ethiopia 0.853 126\n", "110 Egypt 0.855 125\n", "163 Senegal 0.864 124\n", "152 Cameroon 0.872 123\n", "128 Timor-Leste 0.875 122\n", "148 Swaziland 0.877 121\n", "178 Mozambique 0.879 120\n", "138 Ghana 0.884 118\n", "... ... ... ...\n", "117 Philippines 0.989 17\n", "10 Denmark 0.989 17\n", "20 France 0.989 17\n", "96 Jamaica 0.989 17\n", "89 Thailand 0.990 14\n", "114 Moldova (Republic of) 0.990 14\n", "14 United Kingdom 0.993 13\n", "87 Armenia 0.994 8\n", "64 Trinidad and Tobago 0.994 8\n", "58 Bulgaria 0.994 8\n", "5 United States 0.995 7\n", "1 Norway 0.997 5\n", "43 Hungary 0.998 4\n", "67 Venezuela (Bolivarian Republic of) 0.999 2\n", "37 Slovakia 1.000 1\n", "49 Argentina 1.001 2\n", "12 Sweden 1.004 6\n", "24 Finland 1.006 8\n", "25 Slovenia 1.006 8\n", "35 Poland 1.010 14\n", "83 Ukraine 1.012 21\n", "50 Uruguay 1.015 25\n", "70 Kazakhstan 1.015 25\n", "53 Belarus 1.021 32\n", "59 Barbados 1.021 32\n", "103 Mongolia 1.021 32\n", "48 Latvia 1.033 52\n", "35 Lithuania 1.036 58\n", "57 Russian Federation 1.038 61\n", "33 Estonia 1.042 70\n", "\n", "[148 rows x 3 columns]" ] } ], "prompt_number": 15 }, { "cell_type": "code", "collapsed": false, "input": [ "geinames = set(gei['Economy'].apply(normname))\n", "print geinames\n", "unknown = gdinames.difference(wikidatanames)\n", "for uk in unknown:\n", " print uk" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "set([u'Canada', u'Turkmenistan', u'Lithuania', u'Cambodia', u'Ethiopia', u'Sri Lanka', u'Swaziland', u'Argentina', u'Bolivia', u'Cameroon', u'Burkina Faso', u'Ghana', u'Saudi Arabia', u'Japan', u'Cape Verde', u'Slovenia', u'Guatemala', u'Bosnia and Herzegovina', u'Jordan', u'Congo, Rep.', u'Spain', u'Liberia', u'Netherlands', u'Pakistan', u'Oman', u'Tanzania', \"People's Republic of China\", u'Gabon', u'New Zealand', u'Yemen', u'Jamaica', u'Albania', u'United Arab Emirates', u'India', u'Azerbaijan', u'Lesotho', u'Kenya', 'South Korea', u'Tajikistan', u'Turkey', u'Afghanistan', u'Czech Republic', u'Eritrea', u'Mongolia', u'France', u'Rwanda', u'Slovakia', u'Congo, DR', u'Peru', u'Malawi', u'Benin', u'Singapore', u'United States of America', u'Togo', u'Armenia', u'Dominican Republic', u'Ukraine', u'Bahrain', u'Indonesia', u'Finland', u'Mauritius', u'Sweden', u'Belarus', u'Mali', 'Russia', u'Bulgaria', u'Romania', u'Angola', u'Portugal', u'South Africa', u'Nicaragua', u'Qatar', u'Malaysia', u'Austria', 'Vietnam', u'Mozambique', u'Uganda', u'Hungary', u'Niger', u'Brazil', u'Kuwait', u'Panama', u'Costa Rica', u'Luxembourg', u'Ireland', u'Ecuador', u'Bangladesh', 'Brunei', u'Australia', u'Iran', u'Algeria', u'El Salvador', u'Chile', u'Belgium', u'Thailand', u'Haiti', u'Belize', u'Sierra Leone', u'Georgia', u'Denmark', u'Poland', u'Moldova', u'Morocco', u'Namibia', u'Guinea-Bissau', u'Switzerland', u'Chad', u'Estonia', u'Uruguay', u'Equatorial Guinea', u'Lebanon', u'Uzbekistan', u'Djibouti', u'Colombia', u'Burundi', u'Cyprus', u'Madagascar', u'Italy', u'Bhutan', u'Sudan', u'Nepal', u'Malta', u'Maldives', u'Venezuela', u'Israel', u'Iceland', u'Zambia', u'Senegal', u'Papua New Guinea', u'Zimbabwe', u'Germany', u'Gambia', u'Kazakhstan', u'Philippines', u'Mauritania', u'Kyrgyzstan', u'Trinidad and Tobago', u'Latvia', u'Guyana', u'Syria', u\"C\\xf4te d'Ivoire\", u'Honduras', u'Mexico', u'Egypt', u'Lao, PDR', u'Cuba', u'Serbia', u'Comoros', u'United Kingdom', u'Greece', u'Paraguay', u'Croatia', u'Botswana'])\n" ] } ], "prompt_number": 19 }, { "cell_type": "code", "collapsed": false, "input": [ "gdinames = set(gdi['Economy'].apply(normname))\n", "unknown = gdinames.difference(wikidatanames)\n", "for uk in unknown:\n", " print uk" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 18 }, { "cell_type": "code", "collapsed": false, "input": [ "siginames = set(sigi['Economy']) \n", "unknown = siginames.difference(wikidatanames)\n", "for uk in unknown:\n", " print uk" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 20 }, { "cell_type": "code", "collapsed": false, "input": [ "def calibrate_rank_corr(foreign_index, short=False):\n", " '''takes a foreign index and finds the window for which wigi most correlates with it'''\n", " corr_df = pd.DataFrame(columns=['start_year', 'bios_count', 'spearman', 'spearman_p', 'mannwhitneyu', 'mannwhitneyu_p', 'ranksum', 'ranksum_p'])\n", "\n", " if not short:\n", " some_modern_history = range(1000, 1800, 100) + range(1800, 1980, 10)\n", " else:\n", " some_modern_history = [1900]\n", " for start_year in some_modern_history:\n", " modrecs = allrecs[(allrecs['dob'] >= start_year) &(allrecs['dob'] < 1990)]\n", " cdf = modrecs[['country','citizenship','gender']]\n", "\n", " def combine_economy(row):\n", " cit = row['citizenship']\n", " cunt = row['country']\n", " return cit if cit else cunt\n", " cdf['Economy_qid'] = cdf.apply(combine_economy,axis=1)\n", " edf = cdf[cdf['Economy_qid'].apply(lambda x: x is not None)]\n", " bios_count = len(edf)\n", "\n", " edf['Economy'] = edf['Economy_qid'].apply(english_label)\n", "\n", "\n", " country_perc = defaultdict(dict)\n", " country_groups= edf.groupby(by='Economy')\n", "\n", " for country, group in country_groups:\n", " nonmale = group[group['gender'] != 'Q6581097']['gender'].count()\n", " total = group['gender'].count()\n", " nm_perc = nonmale / float(total)\n", " country_perc[country]['Economy'] = country #for later on joining\n", " country_perc[country]['Score'] = nm_perc #for later on joining\n", " country_perc[country]['total']= total\n", "\n", " wdf = pd.DataFrame.from_dict(country_perc, orient='index')\n", "\n", " wefnames = set(foreign_index['Economy'])\n", "\n", " wdf_matching = wdf[wdf['Economy'].apply(lambda x: x in wefnames)]\n", " wdf_matching['Rank'] = wdf_matching['Score'].rank(ascending=False).apply(lambda x: int(x))\n", "\n", " rank_compare = foreign_index.join(wdf_matching, on='Economy', how='left', rsuffix='-Wikidata')[['Economy','Rank','Rank-Wikidata','Score','Score-Wikidata']]\n", " rank_compare['diff'] = rank_compare['Rank'] - rank_compare['Rank-Wikidata']\n", "\n", " spearman_results = scipy.stats.spearmanr(rank_compare[['Rank','Rank-Wikidata']])\n", " spearman = spearman_results[0]\n", " spearman_p = spearman_results[1]\n", "\n", " def scale_col(col):\n", " num = col - min(col)\n", " denom = max(col) - min(col)\n", " return num / denom\n", "\n", " rank_compare['Score_norm'] = scale_col(rank_compare['Score'])\n", " rank_compare['Score_wikidata_norm'] = scale_col(rank_compare['Score-Wikidata'])\n", "\n", " mannwhitneyu, mannwhitneyu_p = scipy.stats.mannwhitneyu(rank_compare['Score_norm'],rank_compare['Score_wikidata_norm'])\n", " ranksum, ranksum_p = scipy.stats.ranksums(rank_compare['Score_norm'],rank_compare['Score_wikidata_norm'])\n", "\n", " corr_df = corr_df.append(dict(start_year=start_year,\n", " bios_count=bios_count,\n", " spearman=spearman,\n", " spearman_p = spearman_p,\n", " mannwhitneyu = mannwhitneyu,\n", " mannwhitneyu_p = mannwhitneyu_p,\n", " ranksum = ranksum,\n", " ranksum_p = ranksum_p), ignore_index=True)\n", " \n", " return corr_df #todo just return the max spearman" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 21 }, { "cell_type": "code", "collapsed": false, "input": [ "sigi_corr_df = calibrate_rank_corr(sigi, short=False)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stderr", "text": [ "WARNING: -c:17: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame.\n", "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", "See the the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n", "\n", "WARNING:py.warnings:-c:17: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame.\n", "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", "See the the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n", "\n" ] }, { "output_type": "stream", "stream": "stderr", "text": [ "WARNING: -c:21: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame.\n", "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", "See the the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n", "\n", "WARNING:py.warnings:-c:21: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame.\n", "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", "See the the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n", "\n" ] }, { "output_type": "stream", "stream": "stderr", "text": [ "WARNING: -c:40: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame.\n", "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", "See the the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n", "\n", "WARNING:py.warnings:-c:40: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame.\n", "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", "See the the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n", "\n" ] }, { "ename": "KeyboardInterrupt", "evalue": "", "output_type": "pyerr", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[1;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0msigi_corr_df\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mcalibrate_rank_corr\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0msigi\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mshort\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mFalse\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[1;32m\u001b[0m in \u001b[0;36mcalibrate_rank_corr\u001b[1;34m(foreign_index, short)\u001b[0m\n\u001b[0;32m 15\u001b[0m \u001b[0mcunt\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mrow\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'country'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 16\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mcit\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mcit\u001b[0m \u001b[1;32melse\u001b[0m \u001b[0mcunt\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 17\u001b[1;33m \u001b[0mcdf\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'Economy_qid'\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mcdf\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mapply\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mcombine_economy\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0maxis\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 18\u001b[0m \u001b[0medf\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mcdf\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mcdf\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'Economy_qid'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mapply\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;32mlambda\u001b[0m \u001b[0mx\u001b[0m\u001b[1;33m:\u001b[0m \u001b[0mx\u001b[0m \u001b[1;32mis\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[0mNone\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 19\u001b[0m \u001b[0mbios_count\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mlen\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0medf\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32m/usr/local/lib/python2.7/dist-packages/pandas/core/frame.pyc\u001b[0m in \u001b[0;36mapply\u001b[1;34m(self, func, axis, broadcast, raw, reduce, args, **kwds)\u001b[0m\n\u001b[0;32m 3594\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mreduce\u001b[0m \u001b[1;32mis\u001b[0m \u001b[0mNone\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 3595\u001b[0m \u001b[0mreduce\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mTrue\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 3596\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_apply_standard\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mf\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0maxis\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mreduce\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mreduce\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 3597\u001b[0m \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 3598\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_apply_broadcast\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mf\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0maxis\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32m/usr/local/lib/python2.7/dist-packages/pandas/core/frame.pyc\u001b[0m in \u001b[0;36m_apply_standard\u001b[1;34m(self, func, axis, ignore_failures, reduce)\u001b[0m\n\u001b[0;32m 3646\u001b[0m \u001b[0mlabels\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_get_agg_axis\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0maxis\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 3647\u001b[0m result = lib.reduce(values, func, axis=axis, dummy=dummy,\n\u001b[1;32m-> 3648\u001b[1;33m labels=labels)\n\u001b[0m\u001b[0;32m 3649\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mSeries\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mresult\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mindex\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mlabels\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 3650\u001b[0m \u001b[1;32mexcept\u001b[0m \u001b[0mException\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32m/usr/local/lib/python2.7/dist-packages/pandas/lib.so\u001b[0m in \u001b[0;36mpandas.lib.reduce (pandas/lib.c:40234)\u001b[1;34m()\u001b[0m\n", "\u001b[1;32m/usr/local/lib/python2.7/dist-packages/pandas/lib.so\u001b[0m in \u001b[0;36mpandas.lib.Reducer.get_result (pandas/lib.c:30025)\u001b[1;34m()\u001b[0m\n", "\u001b[1;32m\u001b[0m in \u001b[0;36mcombine_economy\u001b[1;34m(row)\u001b[0m\n\u001b[0;32m 12\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 13\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mcombine_economy\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mrow\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 14\u001b[1;33m \u001b[0mcit\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mrow\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'citizenship'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 15\u001b[0m \u001b[0mcunt\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mrow\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'country'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 16\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mcit\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mcit\u001b[0m \u001b[1;32melse\u001b[0m \u001b[0mcunt\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32m/usr/local/lib/python2.7/dist-packages/pandas/core/series.pyc\u001b[0m in \u001b[0;36m__getitem__\u001b[1;34m(self, key)\u001b[0m\n\u001b[0;32m 509\u001b[0m \u001b[0mresult\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mindex\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget_value\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mkey\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 510\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 511\u001b[1;33m \u001b[1;32mif\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0misscalar\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mresult\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 512\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mis_list_like\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mresult\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;32mand\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[0misinstance\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mresult\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mSeries\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 513\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32m/usr/local/lib/python2.7/dist-packages/numpy/core/numeric.pyc\u001b[0m in \u001b[0;36misscalar\u001b[1;34m(num)\u001b[0m\n\u001b[0;32m 1932\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1933\u001b[0m \"\"\"\n\u001b[1;32m-> 1934\u001b[1;33m \u001b[1;32mif\u001b[0m \u001b[0misinstance\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mnum\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mgeneric\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 1935\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mTrue\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1936\u001b[0m \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;31mKeyboardInterrupt\u001b[0m: " ] } ], "prompt_number": 22 }, { "cell_type": "code", "collapsed": false, "input": [ "wef_corr_df = calibrate_rank_corr(wef, short=False)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 27 }, { "cell_type": "code", "collapsed": false, "input": [ "gdi_corr_df = calibrate_rank_corr(gdi, short=False)" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "code", "collapsed": false, "input": [ "gei_corr_df = calibrate_rank_corr(gei, short=False)" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "code", "collapsed": false, "input": [ "gei_corr_df" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "code", "collapsed": false, "input": [ "sigi_corr_df" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "code", "collapsed": false, "input": [ "gdi_corr_df" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "code", "collapsed": false, "input": [ "wef_corr_df" ], "language": "python", "metadata": {}, "outputs": [ { "html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
start_yearbios_countspearmanspearman_pmannwhitneyumannwhitneyu_pranksumranksum_p
0 1000 887006 0.263995 0.001501 6195.0 9.762673e-09 5.616870 1.944474e-08
1 1100 886514 0.265131 0.001429 6193.0 9.600785e-09 5.619760 1.912226e-08
2 1200 885697 0.265446 0.001410 6187.0 9.130603e-09 5.628431 1.818567e-08
3 1300 884571 0.265739 0.001392 6200.0 1.017908e-08 5.609645 2.027420e-08
4 1400 883044 0.263195 0.001553 6197.0 9.927211e-09 5.613980 1.977249e-08
5 1500 879276 0.262088 0.001628 6206.0 1.070155e-08 5.600975 2.131498e-08
6 1600 870495 0.265848 0.001385 6230.0 1.306420e-08 5.566294 2.602143e-08
7 1700 857099 0.265899 0.001382 6252.0 1.566935e-08 5.534503 3.121122e-08
8 1800 815661 0.270712 0.001120 6421.0 6.130025e-08 5.290291 1.221218e-07
9 1810 805811 0.276275 0.000874 6483.0 9.965155e-08 5.200699 1.985407e-07
10 1820 794371 0.277217 0.000838 6564.0 1.858238e-07 5.083650 3.702490e-07
11 1830 781921 0.276718 0.000857 6621.0 2.858085e-07 5.001283 5.694998e-07
12 1840 768581 0.282408 0.000661 6689.0 4.735930e-07 4.903020 9.437414e-07
13 1850 753693 0.290256 0.000458 6753.0 7.553225e-07 4.810538 1.505246e-06
14 1860 736868 0.295216 0.000362 6834.0 1.347622e-06 4.693490 2.685835e-06
15 1870 716540 0.292414 0.000414 6940.0 2.818059e-06 4.540315 5.617012e-06
16 1880 691692 0.298912 0.000302 7110.0 8.776426e-06 4.294659 1.749623e-05
17 1890 660609 0.302099 0.000258 7285.0 2.660525e-05 4.041777 5.304774e-05
18 1900 623915 0.305469 0.000218 7331.0 3.525074e-05 3.975305 7.028916e-05
19 1910 579592 0.312051 0.000157 7367.0 4.380497e-05 3.923283 8.735029e-05
20 1920 534223 0.292366 0.000415 7516.5 1.050574e-04 3.707250 2.095221e-04
21 1930 472919 0.292359 0.000415 7953.0 1.049781e-03 3.076490 2.094533e-03
22 1940 410994 0.273103 0.001008 7938.0 9.759586e-04 3.098166 1.947226e-03
23 1950 331071 0.257789 0.001953 7283.0 2.627829e-05 4.044667 5.239760e-05
24 1960 248180 0.183820 0.028538 7737.0 3.521279e-04 3.388619 7.024563e-04
25 1970 165324 0.138381 0.100519 6806.0 1.104553e-06 4.733951 2.201911e-06
\n", "
" ], "metadata": {}, "output_type": "pyout", "prompt_number": 29, "text": [ " start_year bios_count spearman spearman_p mannwhitneyu \\\n", "0 1000 887006 0.263995 0.001501 6195.0 \n", "1 1100 886514 0.265131 0.001429 6193.0 \n", "2 1200 885697 0.265446 0.001410 6187.0 \n", "3 1300 884571 0.265739 0.001392 6200.0 \n", "4 1400 883044 0.263195 0.001553 6197.0 \n", "5 1500 879276 0.262088 0.001628 6206.0 \n", "6 1600 870495 0.265848 0.001385 6230.0 \n", "7 1700 857099 0.265899 0.001382 6252.0 \n", "8 1800 815661 0.270712 0.001120 6421.0 \n", "9 1810 805811 0.276275 0.000874 6483.0 \n", "10 1820 794371 0.277217 0.000838 6564.0 \n", "11 1830 781921 0.276718 0.000857 6621.0 \n", "12 1840 768581 0.282408 0.000661 6689.0 \n", "13 1850 753693 0.290256 0.000458 6753.0 \n", "14 1860 736868 0.295216 0.000362 6834.0 \n", "15 1870 716540 0.292414 0.000414 6940.0 \n", "16 1880 691692 0.298912 0.000302 7110.0 \n", "17 1890 660609 0.302099 0.000258 7285.0 \n", "18 1900 623915 0.305469 0.000218 7331.0 \n", "19 1910 579592 0.312051 0.000157 7367.0 \n", "20 1920 534223 0.292366 0.000415 7516.5 \n", "21 1930 472919 0.292359 0.000415 7953.0 \n", "22 1940 410994 0.273103 0.001008 7938.0 \n", "23 1950 331071 0.257789 0.001953 7283.0 \n", "24 1960 248180 0.183820 0.028538 7737.0 \n", "25 1970 165324 0.138381 0.100519 6806.0 \n", "\n", " mannwhitneyu_p ranksum ranksum_p \n", "0 9.762673e-09 5.616870 1.944474e-08 \n", "1 9.600785e-09 5.619760 1.912226e-08 \n", "2 9.130603e-09 5.628431 1.818567e-08 \n", "3 1.017908e-08 5.609645 2.027420e-08 \n", "4 9.927211e-09 5.613980 1.977249e-08 \n", "5 1.070155e-08 5.600975 2.131498e-08 \n", "6 1.306420e-08 5.566294 2.602143e-08 \n", "7 1.566935e-08 5.534503 3.121122e-08 \n", "8 6.130025e-08 5.290291 1.221218e-07 \n", "9 9.965155e-08 5.200699 1.985407e-07 \n", "10 1.858238e-07 5.083650 3.702490e-07 \n", "11 2.858085e-07 5.001283 5.694998e-07 \n", "12 4.735930e-07 4.903020 9.437414e-07 \n", "13 7.553225e-07 4.810538 1.505246e-06 \n", "14 1.347622e-06 4.693490 2.685835e-06 \n", "15 2.818059e-06 4.540315 5.617012e-06 \n", "16 8.776426e-06 4.294659 1.749623e-05 \n", "17 2.660525e-05 4.041777 5.304774e-05 \n", "18 3.525074e-05 3.975305 7.028916e-05 \n", "19 4.380497e-05 3.923283 8.735029e-05 \n", "20 1.050574e-04 3.707250 2.095221e-04 \n", "21 1.049781e-03 3.076490 2.094533e-03 \n", "22 9.759586e-04 3.098166 1.947226e-03 \n", "23 2.627829e-05 4.044667 5.239760e-05 \n", "24 3.521279e-04 3.388619 7.024563e-04 \n", "25 1.104553e-06 4.733951 2.201911e-06 " ] } ], "prompt_number": 29 }, { "cell_type": "code", "collapsed": false, "input": [ "for df in [gdi_corr_df, sigi_corr_df, wef_corr_df]:\n", " df.plot(x='start_year',y=['spearman', 'spearman_p'])\n", " plt.show()" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "code", "collapsed": false, "input": [ "wef_corr_df.to_pickle('opensym/wefdf')" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 87 }, { "cell_type": "code", "collapsed": false, "input": [ "wef_corr_df = pd.read_pickle('opensym/wefdf')" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 2 }, { "cell_type": "code", "collapsed": false, "input": [ "fig, ax = plt.subplots(1, 1, figsize=(6,4))\n", "wef_corr_df.plot(x='start_year',y=['spearman', 'spearman_p'],ax=ax)\n", "ax.set_ylabel('Correlation coefficient')\n", "ax.set_xlabel('Start Year')\n", "ax.legend((r'Spearman $\\rho$','Significance $p$'),loc=3)\n", "fig.suptitle('WIGI-GGGI Rank Correlation by Start Year', size=24)\n", "fig.subplots_adjust(top=0.88)\n", "fig.savefig('opensym/spearman_evolution_gggi.png')" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\nPAAAAABJRU5ErkJggg==\n", "text": [ "" ] } ], "prompt_number": 9 }, { "cell_type": "code", "collapsed": false, "input": [ "corr_df.plot(x='start_year',y=['mannwhitneyu', 'mannwhitneyu_p'], secondary_y='mannwhitneyu_p')" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "code", "collapsed": false, "input": [ "corr_df.plot(x='start_year',y=['ranksum', 'ranksum_p'], secondary_y='ranksum_p')" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "code", "collapsed": false, "input": [ "wdf_matching.sort('Score',ascending=False).head()" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "code", "collapsed": false, "input": [ "modrecs = allrecs[(allrecs['dob'] >=1890) &(allrecs['dob'] < 1990)]\n", "cdf = modrecs[['country','citizenship','gender']]\n", "\n", "def combine_economy(row):\n", " cit = row['citizenship']\n", " cunt = row['country']\n", " return cit if cit else cunt\n", "cdf['Economy_qid'] = cdf.apply(combine_economy,axis=1)\n", "edf = cdf[cdf['Economy_qid'].apply(lambda x: x is not None)]\n", "bios_count = len(edf)\n", "\n", "edf['Economy'] = edf['Economy_qid'].apply(english_label)\n", "\n", "\n", "country_perc = defaultdict(dict)\n", "country_groups= edf.groupby(by='Economy')\n", "\n", "for country, group in country_groups:\n", " nonmale = group[group['gender'] != 'Q6581097']['gender'].count()\n", " total = group['gender'].count()\n", " nm_perc = nonmale / float(total)\n", " country_perc[country]['Economy'] = country #for later on joining\n", " country_perc[country]['Score'] = nm_perc #for later on joining\n", " country_perc[country]['total']= total\n", "\n", "wdf = pd.DataFrame.from_dict(country_perc, orient='index')\n", "\n", "wdf_matching = wdf[wdf['Economy'].apply(lambda x: x in wefnames)]\n", "wdf_matching['Rank'] = wdf_matching['Score'].rank(ascending=False).apply(lambda x: int(x))\n", "\n", "rank_compare = wef.join(wdf_matching, on='Economy', how='left', rsuffix='_wikidata')[['Economy','Rank','Rank_wikidata','Score','Score_wikidata']]\n", "rank_compare['diff'] = rank_compare['Rank'] - rank_compare['Rank_wikidata']\n" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "code", "collapsed": false, "input": [ "pd.DataFrame.to_html(formatters=)" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "code", "collapsed": false, "input": [ "print rank_compare.columns" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "code", "collapsed": false, "input": [ "rank_compare.columns = ['Country', 'WEF Rank', 'Wikipedia Rank','WEF Score','Wikipedia Score','Rank Difference']" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "code", "collapsed": false, "input": [ "rank_compare.sort('WEF Rank').head(10).to_html(index=False,formatters={'Wikipedia Score':lambda x: '{:0.4f}'.format(float(x))})" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "code", "collapsed": false, "input": [ "rank_compare.sort('Wikipedia Rank').to_csv('helpers/foreign_indexes/WIGI_comparison.csv',encoding = 'utf-8', index=False, formatters={'Wikipedia Score':lambda x: '{:0.4f}'.format(float(x))})" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "code", "collapsed": false, "input": [ "wdfc = wdf[wdf['total'] > 30]" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "code", "collapsed": false, "input": [ "wdfc['Rank'] = wdfc['Score'].rank(ascending=False).apply(lambda x: int(x))" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "UNDP's Gender-related Development Index (GDI) and the Gender Empowerment Measure (GEM), introduced only in 1995. More recently, three new measures were developed: the Gender Equity Index (GEI) introduced by Social Watch in 2005, the Global Gender Gap Index (GGGI) developed by the World Economic Forum in 2006, and the Social Institutions and Gender Index (SIGI) of the OECD Development Centre from 2007.\n" ] }, { "cell_type": "code", "collapsed": false, "input": [ "fiveway = wdfc[['Economy','Score','Rank']]\n", "fiveway.index = fiveway['Economy']\n", "for findex, ftext in zip([sigi,gdi,gei,wef], ['SIGI', 'GDI', 'GEI', 'GGGI']):\n", " findex.index = findex['Economy']\n", " fiveway = fiveway.join(findex[['Score','Rank']], how='outer', on = \"Economy\", rsuffix=\" {}\".format(ftext))" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "code", "collapsed": false, "input": [ "fiveway.columns = fiveway.columns[:1] + ['Score WIGI','Rank WIGI'] + fiveway.columns[2:]" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "code", "collapsed": false, "input": [ "fiveway.sort('Rank').to_csv('helpers/foreign_indexes/WIGI_comparison.csv',encoding = 'utf-8', index=False, formatters={'Wikipedia Score':lambda x: '{:0.4f}'.format(float(x))})" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Quite uncorrellated. That means that the data is not good, or that the world economic forum methods have little to do with the percentage of women born in those countries recorded semantically on a historic level. And /rho is high" ] }, { "cell_type": "code", "collapsed": false, "input": [ "#not clean data bad pdf copy-paste BUT I think that the first string and then SIGI number have copied over \n", "sigipdftext = '''Belgium 0.0016 0.0038 very low 0.0316 very low 0.0824 low 0.0000 very low 0.0000 very low\n", "France 0.0034 0.1002 low 0.0000 very low 0.0828 low 0.0000 very low 0.0000 very low\n", "Slovenia 0.0037 0.0031 very low 0.0891 very low 0.1023 low 0.0000 very low 0.0000 very low\n", "Spain 0.0049 0.0856 low 0.0622 very low 0.1144 low 0.0000 very low 0.0000 very low\n", "Serbia 0.0097 0.1094 low 0.1171 very low 0.1504 medium 0.0000 very low 0.0000 very low\n", "Argentina 0.0107 0.0809 low 0.0148 very low 0.0691 very low 0.2048 low 0.0000 very low\n", "Italy 0.0116 0.0025 very low 0.1029 very low 0.0966 low 0.0000 very low 0.1951 low\n", "Cuba 0.0208 0.2420 medium 0.0871 very low 0.0000 very low 0.0000 very low 0.1951 low\n", "Trinidad and Tobago 0.0236 0.2504 medium 0.1306 very low 0.0000 very low 0.0000 very low 0.1951 low\n", "Czech Republic 0.0283 0.0013 very low 0.0956 very low 0.0855 low 0.0000 very low 0.3539 medium\n", "Bosnia and Herzegovina 0.0333 0.2437 medium 0.0672 very low 0.1497 medium 0.2048 low 0.1951 low\n", "Belarus 0.0336 0.0251 very low 0.3544 medium 0.0599 very low 0.0000 very low 0.1951 low\n", "Mongolia 0.0345 0.0226 very low 0.2584 medium 0.1582 medium 0.2048 low 0.1951 low\n", "Dominican Republic 0.0367 0.3691 medium 0.0958 very low 0.0118 very low 0.0000 very low 0.1951 low\n", "Panama 0.0375 0.2344 low 0.0148 very low 0.0855 low 0.0000 very low 0.3539 medium\n", "Bolivarian Republic of Venezuela 0.0389 0.2456 medium 0.0941 very low 0.0071 very low 0.0000 very low 0.3539 medium\n", "Ecuador 0.0422 0.1374 low 0.3737 medium 0.1037 low 0.2048 low 0.0000 very low\n", "Lithuania 0.0424 0.0013 very low 0.2795 medium 0.0931 low 0.0000 very low 0.3539 medium\n", "Bulgaria 0.0449 0.1504 low 0.3926 medium 0.0988 low 0.0000 very low 0.1951 low\n", "Brazil 0.0458 0.2316 low 0.1226 very low 0.0364 very low 0.1837 low 0.3539 medium\n", "Cambodia 0.0477 0.0684 low 0.2601 medium 0.0000 very low 0.2028 low 0.3539 medium\n", "El Salvador 0.0490 0.1066 low 0.2675 medium 0.1049 low 0.3885 medium 0.0000 very low\n", "Costa Rica 0.0506 0.2513 medium 0.1544 low 0.0121 very low 0.4076 medium 0.0000 very low\n", "Latvia 0.0511 0.0044 very low 0.3466 medium 0.1008 low 0.0000 very low 0.3539 medium\n", "Plu. St.. of Bolivia 0.0579 0.3676 medium 0.3207 medium 0.0987 low 0.2048 low 0.0000 very low\n", "Paraguay 0.0580 0.2880 medium 0.0440 very low 0.0291 very low 0.4076 medium 0.1951 low\n", "South Africa 0.0599 0.0213 very low 0.2164 low 0.2196 medium 0.4076 medium 0.1951 low\n", "Republic of Moldova 0.0664 0.3418 medium 0.2189 low 0.0000 very low 0.2048 low 0.3539 medium\n", "Romania 0.0686 0.1134 low 0.1700 low 0.0994 low 0.0000 very low 0.5399 high\n", "Azerbaijan 0.2403 0.1301 low 0.2057 low 0.8587 very high 0.1837 low 0.6093 high\n", "Armenia 0.2428 0.1910 low 0.1853 low 0.9880 very high 0.2048 low 0.3539 medium\n", "Ethiopia 0.2450 0.2820 medium 0.8662 very high 0.0878 low 0.5913 high 0.1951 low\n", "Albania 0.2476 0.1822 low 0.2596 medium 0.8767 very high 0.4076 medium 0.4505 medium\n", "Ukraine 0.0750 0.0414 very low 0.1517 low 0.2430 high 0.0000 very low 0.5399 high \n", "Peru 0.0826 0.4053 medium 0.2096 low 0.0284 very low 0.4076 medium 0.1951 low \n", "Colombia 0.0862 0.1748 low 0.1567 low 0.0663 very low 0.0000 very low 0.6093 high United\n", "Republic of Tanzania 0.2504 0.7166 very high 0.5415 high 0.1746 medium 0.5913 high 0.2554 low\n", "Lesotho 0.0876 0.4266 high 0.4112 medium 0.2116 medium 0.2048 low 0.0000 very low \n", "C\u00f4te d\u2019Ivoire 0.2537 0.4955 high 0.5895 high 0.1858 medium 0.5913 high 0.5399 high\n", "Madagascar 0.1002 0.4889 high 0.3079 medium 0.0000 very low 0.2048 low 0.3539 medium\n", "Turkey 0.1032 0.1585 low 0.1913 low 0.4036 high 0.0000 very low 0.5399 high \n", "Timor-Leste 0.2550 0.3882 medium 0.5421 high 0.2271 medium 0.5913 high 0.6552 high\n", "Iraq 0.2631 0.7035 very high 0.3347 medium 0.3834 high 0.5913 high 0.4601 medium\n", "Morocco 0.1052 0.4610 high 0.3159 medium 0.1574 medium 0.3885 medium 0.1951 low \n", "India 0.2650 0.6440 very high 0.3772 medium 0.5415 very high 0.5913 high 0.3539 medium\n", "Thailand 0.1056 0.3770 medium 0.2935 medium 0.1533 medium 0.3885 medium 0.3539 medium \n", "Benin 0.2780 0.2763 medium 0.4432 high 0.3677 high 0.5913 high 0.7953 very high\n", "Honduras 0.1074 0.3891 medium 0.1044 very low 0.1443 medium 0.3885 medium 0.4505 medium \n", "Cameroon 0.2803 0.5024 high 0.5333 high 0.2066 medium 0.7869 very high 0.4505 medium high \n", "Burkina Faso 0.2819 0.5419 high 0.7257 very high 0.1910 medium 0.5913 high 0.4505 medium\n", "Lebanon 0.2897 0.6143 very high 0.2488 medium 0.1639 medium 0.5913 high 0.7953 very high\n", "Namibia 0.1173 0.1709 low 0.3522 medium 0.0668 very low 0.5913 high 0.2812 low \n", "Kazakhstan 0.1196 0.0282 very low 0.2176 low 0.1126 low 0.4076 medium 0.6093 high \n", "Myanmar 0.2935 0.4963 high 0.4891 high 0.0000 very low 0.5913 high 0.7953 \n", "Ghana 0.2988 0.3946 medium 0.5491 high 0.3136 high 0.8044 very high 0.5399 high\n", "Pakistan 0.3013 0.6908 very high 0.4127 medium 0.6998 very high 0.4076 medium 0.4505 medium\n", "People\u2019s Republic of China 0.1310 0.2885 medium\n", "Guatemala 0.1318 0.3953 medium\n", "Rwanda 0.1339 0.2618 medium 0.1246 very low 0.5578 very high 0.4076 0.3213 medium 0.4082 medium 0.2566 high 0.2048 0.1392 medium 0.5913\n", "Former Yugoslav Republic of Macedonia 0.1345 0.1803 low 0.3911 \n", "Jamaica 0.1350 0.0031 very low 0.2046 low \n", "Mozambique 0.1375 0.4181 high 0.3793 medium \n", "Zimbabwe 0.1392 0.5700 very high 0.3435 medium 0.2951\n", "Tajikistan 0.1393 0.3182 medium 0.4138 medium 0.5075 medium 0.5666 medium 0.2812 low low 0.5399 high high 0.2554 low very high 0.4076 medium 0.0271 very low 0.0000 0.0000 very low 0.4076 high very high \n", "Jordan 0.3119 0.5274 high 0.3150 medium 0.6790 very high 0.5913 high 0.6093 high\n", "Guinea 0.3206 0.5413 high 0.9515 very high 0.2253 medium 0.3885 medium 0.4505 medium\n", "Afghanistan 0.3224 0.7316 very high 0.5473 high 0.4644 very high 0.5913 high 0.4601 medium\n", "Nepal 0.3229 0.1813 low 0.4083 medium 1.0000 very high 0.5913 high 0.2554 low\n", "Central African Rep. 0.3285 0.5327 high 0.6135 high 0.0071 very low 0.5913 high 0.7953 very high\n", "Bangladesh 0.3900 0.9730 very high 0.3323 medium 0.5831 very high 0.5913 high 0.4505 medium 0.2028 low 0.3539 medium \n", "Nigeria 0.3911 0.6723 very high 0.4766 high 0.2494 high 0.7626 very high 0.7953 very high\n", "Mauritania 0.3954 0.7556 very high 0.9939 very high 0.1746 medium 0.5913 high 0.1951 low\n", "Gabon 0.4022 0.6457 very high 0.5308 high 0.1746 medium 0.7869 very high 0.8140 very high\n", "Syrian Arab Republic 0.4162 0.6914 very high 0.2598 medium 0.4312 high 0.5913 high 1.0000 very high\n", "Lao People\u2019s Democratic Republic 0.1445 0.2606 medium 0.5321 high 0.0506 very low 0.4076 medium 0.4505 medium\n", "Haiti 0.1466 0.5613 very high 0.5010 high 0.0000 very low 0.2048 low 0.3539 medium\n", "Uzbekistan 0.1475 0.2477 medium 0.2966 medium 0.1884 medium 0.5913 high 0.4505 medium\n", "Indonesia 0.1532 0.5612 very high 0.2511 medium 0.3891 high 0.1837 low 0.4505 medium\n", "Nicaragua 0.1595 0.6303 very high 0.1868 low 0.1082 low 0.3885 medium 0.4505 medium\n", "Kyrgyzstan 0.1598 0.1879 low 0.3771 medium 0.2624 high 0.5913 high 0.4505 medium\n", "Burundi 0.1662 0.5602 very high 0.5055 high 0.1746 medium 0.4076 medium 0.2554 low\n", "Angola 0.1719 0.4599 high 0.5041 high 0.0791 low 0.5913 high 0.1951 low\n", "Philippines 0.1765 0.4929 high 0.2597 medium 0.1392 medium 0.5913 high 0.4505 medium\n", "Togo 0.1860 0.3696 medium 0.5488 high 0.1326 medium 0.5913 high 0.3539 medium\n", "Viet Nam 0.1865 0.3374 medium 0.1857 low 0.4967 very high 0.4076 medium 0.6093 high\n", "Sri Lanka 0.1894 0.4203 high 0.2681 medium 0.1483 medium 0.6207 high 0.5399 high\n", "Democratic Republic of the Congo 0.4276 0.5169 high 0.5338 high 0.0691 very low 0.9582 very high 0.8140 very high\n", "Egypt 0.4280 0.6665 very high 0.7373 very high 0.3741 high 0.5913 high 0.8140 very high\n", "Niger 0.4415 1.0000 very high 0.4059 medium 0.1746 medium 0.5913 high 0.8140 very high\n", "Zambia 0.4489 0.5149 high 0.5624 high 0.1746 medium 1.0000 very high 0.7953 very high\n", "Somalia 0.4594 0.5958 very high 0.9905 very high 0.0891 low 0.7626 very high 0.6093 high\n", "Chad 0.4665 0.9705 very high 0.8185 very high 0.0014 very low 0.5913 high 0.6093 high\n", "Mali 0.5164 0.8309 very high 1.0000 very high 0.3048 high 0.4076 medium 0.7953 very high very high\n", "Gambia 0.5240 0.5131 high 0.8509 very high 0.0000 very low 1.0000 very high 0.7953 \n", "Sudan 0.5550 0.8382 very high 0.9781 very high 0.1426 medium 0.8163 very high 0.6552 high very high 0.3414 high 0.5913 high 1.0000 very high'''" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "code", "collapsed": false, "input": [ "modrecs = allrecs[(allrecs['dob'] >= 1900) &(allrecs['dob'] < 1990)]\n", "cdf = modrecs[['country','citizenship','gender']]\n", "\n", "def combine_economy(row):\n", " cit = row['citizenship']\n", " cunt = row['country']\n", " return cit if cit else cunt\n", "cdf['Economy_qid'] = cdf.apply(combine_economy,axis=1)\n", "edf = cdf[cdf['Economy_qid'].apply(lambda x: x is not None)]\n", "bios_count = len(edf)\n", "\n", "edf['Economy'] = edf['Economy_qid'].apply(english_label)\n", "\n", "\n", "country_perc = defaultdict(dict)\n", "country_groups= edf.groupby(by='Economy')\n", "\n", "for country, group in country_groups:\n", " nonmale = group[group['gender'] != 'Q6581097']['gender'].count()\n", " total = group['gender'].count()\n", " nm_perc = nonmale / float(total)\n", " country_perc[country]['Economy'] = country #for later on joining\n", " country_perc[country]['Score'] = nm_perc #for later on joining\n", " country_perc[country]['total']= total\n", "\n", "wdf = pd.DataFrame.from_dict(country_perc, orient='index')" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "code", "collapsed": false, "input": [ "wdf[wdf['total']>100].tail(100)" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "code", "collapsed": false, "input": [ "wdf.ix[\"People's Republic of China\"]" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "code", "collapsed": false, "input": [ "#magnus' special format\n", "nonzero = wdf[(wdf['Score'] != 0.0) & (wdf['total']> 100)]\n", "magnusformt = zip(nonzero['Economy'],nonzero['Score'])\n", "json.dump(magnusformt, open('Magnus Gender analysis/wigi_gender.json','w'))" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "code", "collapsed": false, "input": [ "!less Magnus\\ Gender\\ analysis/wigi_gender.json" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [] } ], "metadata": {} } ] }