{ "cells": [ { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false }, "outputs": [], "source": [ "import numpy as np, pandas as pd\n", "#from pygeocoder import Geocoder\n", "import time\n", "import json\n", "import matplotlib.pyplot as plt\n", "%matplotlib inline\n", "\n", "import warnings\n", "warnings.filterwarnings(\"ignore\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Do the following for db and db2 location, they are two different samples." ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [], "source": [ "#define database path\n", "path='http://blog.csaladen.es/szekelyfold%20lakossag%202/db/'\n", "\n", "#use if files downloaded to local path\n", "path='E:/Skydrive/GitHub/Blog/szekelyfold lakossag 2/db2/'" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "\"'\\\\xc3\\\\xae'\"" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "repr('î')" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false }, "outputs": [], "source": [ "#define locationrenamer \n", "\n", "def namer(s):\n", " \n", " if ',' in s: s=s[:s.find(',')]\n", " \n", " s=s.replace('\\xc3\\xa8','\\xc3\\xa9')\n", " s=s.replace('\\xc3\\xa0','\\xc3\\xa1')\n", " s=s.replace('\\xc3\\xb2','\\xc3\\xb3')\n", " s=s.replace('\\xc3\\xb9','\\xc3\\xba')\n", " s=s.replace('Mez\\xc3\\xb6','Mez\\xc5\\x91')\n", " s=s.replace('mez\\xc3\\xb6','mez\\xc5\\x91')\n", " s=s.replace('Erd\\xc3\\xb6','Erd\\xc5\\x91')\n", " s=s.replace('fal\\xc3\\xba','falu')\n", " s=s.replace('f\\xc3\\xbcrd\\xc3\\xb6','f\\xc3\\xbcrd\\xc3\\x91')\n", " \n", " if s=='Csikszereda': return 'Csíkszereda'\n", " elif s=='Miercurea-Ciuc': return 'Csíkszereda'\n", " elif s=='Miercurea Ciuc': return 'Csíkszereda'\n", " elif s=='Csikr\\xc3\\xa1kos': return 'Csíkrákos'\n", " elif s=='Csikszentimre': return 'Csíkszentimre'\n", " elif s=='Chilieni': return 'Kilyénfalva'\n", " elif s=='Tusnad Sat': return 'Tusnád'\n", " elif s=='Reci': return 'Réty'\n", " elif s=='Intorsura Buzaului': return 'Bodzaforduló'\n", " elif s=='Ocna De Sus': return 'Felsősófalva'\n", " elif s=='Sancraiu De Mures': return 'Marosszentkirály'\n", " elif s=='Breaza': return 'Beresztelke'\n", " elif s=='Corund': return 'Korond'\n", " elif s=='Intorsura Buzaului': return 'Bodzaforduló'\n", " elif s=='Intorsura Buzauli': return 'Bodzaforduló'\n", " elif s=='Bicfalau': return 'Bikfalva'\n", " elif s=='Cernatul-De-Jos': return 'Alsócsernáton'\n", " elif s=='Ojdula': return 'Ozsdola'\n", " elif s=='Bretcu': return 'Bereck'\n", " elif s=='Zabala': return 'Zabola'\n", " elif s=='Micfalau': return 'Mikóújfalu'\n", " elif s=='Csikszentkir\\xc3\\xa0ly': return 'Csíkszentkirály'\n", " elif s=='Csikszentmikl\\xc3\\xb3s': return 'Csíkszentmiklós'\n", " elif s=='Belgrade': return 'Belgrád'\n", " elif s=='S\\xc3\\xaendominic': return 'Csíkszentdomokos'\n", " elif s=='Budapest': return 'Budapest'\n", " elif s=='Cluj-Napoca': return 'Kolozsvár'\n", " elif s=='Timi\\xc8\\x99oara': return 'Temesvár'\n", " elif s=='Targu-Mures': return 'Marosvásárhely'\n", " elif s=='Csik Mindszent': return 'Csíkmindszent'\n", " elif s=='Abu Dhabi': return 'Abu Dhabi'\n", " elif s=='Tusnad F\\xc3\\xbcrd\\xc3\\xb6': return 'Tusnádfürdő'\n", " elif s=='Vienna': return 'Bécs'\n", " elif s=='Sepsiszentgyorgy': return 'Sepsiszentgyörgy'\n", " elif s=='Sf\\xc3\\xa2ntu-Gheorghe': return 'Sepsiszentgyörgy'\n", " elif s=='Paris': return 'Párizs'\n", " elif s=='Nagy-V\\xc3\\xa1rad': return 'Nagyvárad'\n", " elif s=='Nitra': return 'Nyitra'\n", " elif s=='Krak\\xc3\\xb3w': return 'Krakkó'\n", " elif s=='Tusnad': return 'Tusnád'\n", " elif s=='Zetea': return 'Zetelaka'\n", " elif s=='Siculeni': return 'Madéfalva'\n", " elif s=='Sz\\xc3\\xa9pviz': return 'Csíkszépvíz'\n", " elif s=='Sibiu': return 'Nagyszeben'\n", " elif s=='Bucharest': return 'Bukarest'\n", " elif s=='Oradea': return 'Nagyvárad'\n", " elif s=='Hodmezovasarhely': return 'Hódmezővásárhely'\n", " elif s=='Brussels': return 'Brüsszel'\n", " elif s=='Cologne': return 'Köln'\n", " elif s=='Dealu': return 'Oroszhegy'\n", " elif s=='Delne': return 'Csíkdelne'\n", " elif s=='Sz\\xc3\\xa9kelykeresztur': return 'Székelykeresztúr'\n", " elif s=='Bulgareni': return 'Bogárfalva'\n", " elif s=='Sighetu Marmatiei': return 'Máramarossziget'\n", " elif s=='Odorheiu Secuiesc': return 'Székelyudvarhely'\n", " elif s=='Athens': return 'Athén'\n", " elif s=='Brasov': return 'Brassó'\n", " elif s=='Beta': return 'Béta'\n", " elif s=='Martinis': return 'Homoródszentmárton'\n", " elif s=='Copenhagen': return 'Koppenhága'\n", " elif s=='Buda': return 'Budapest'\n", " elif s=='Neumarkt Am Mieresch': return 'Marosvásárhely'\n", " elif s=='Vlahita': return 'Szentegyháza'\n", " elif s=='Szentegyházasfalu': return 'Szentegyháza'\n", " elif s=='Fenyokut': return 'Fenyőkút'\n", " elif s=='Felsoboldogfalva': return 'Felsőboldogfalva'\n", " elif s=='Baile Tusnad': return 'Tusnádfürdő'\n", " elif s=='Szegedin': return 'Szeged'\n", " elif s=='Küküllokeményfalva': return 'Küküllőkeményfalva'\n", " elif s=='Oraseni': return 'Városfalva'\n", " elif s=='Nyikomalomfalva': return 'Nyikómalomfalva'\n", " elif s=='Szatmár-Németi': return 'Szatmárnémeti'\n", " elif s=='Lövete': return 'Lövéte'\n", " elif s=='Kézdi Almas': return 'Kézdialmás'\n", " elif s=='Cristuru Secuiesc': return 'Székelykeresztúr'\n", " elif s=='Sacueni': return 'Székelyhíd'\n", " elif s=='Szekelyszentmihaly': return 'Székelyszentmihály'\n", " elif s=='Debreczen': return 'Debrecen'\n", " elif s=='Liban': return 'Libán'\n", " elif s=='Leipzig': return 'Lipcse'\n", " elif s=='Pasareni': return 'Backamadaras'\n", " elif s=='Munich': return 'München'\n", " elif s=='Nuremberg': return 'Nüremberg'\n", " elif s=='Amsterdam': return 'Amszterdam'\n", " elif s=='Csik-Kozmas': return 'Csíkkozmás'\n", " elif s=='Csiktaploca': return 'Csíktaploca'\n", " elif s=='Csikszentsimon': return 'Csíkszentsimon'\n", " elif s=='Csikszentmárton': return 'Csíkszentmárton'\n", " elif s=='Vacaresti': return 'Vacsárcsi'\n", " elif s=='Milan': return 'Milánó'\n", " elif s=='Csikszentgyörgy': return 'Csíkszentgyörgy'\n", " elif s=='Nadejdea': return 'Ajnád'\n", " elif s=='Csikszenttamás': return 'Csíkszenttamás'\n", " elif s=='Gyor': return 'Győr'\n", " elif s=='London Borough of Camden': return 'London'\n", " elif s=='Csikszentdomokos': return 'Csíkszentdomokos'\n", " elif s=='Csikszentkirály': return 'Csíkszentkirály'\n", " elif s=='Madaras': return 'Csíkmadaras'\n", " elif s=='Karcfalva': return 'Csíkkarcfalva'\n", " elif s=='Ciceu': return 'Csíkcsicsó'\n", " elif s=='Izvoare': return 'Ivó'\n", " elif s=='Gyomro': return 'Gyömrő'\n", " elif s=='Sf\\xc3\\xaentu Gheorghe': return 'Sepsiszentgyörgy'\n", " elif s=='Baraolt': return 'Barót'\n", " elif s=='K\\xc3\\xb8benhavn': return 'Koppenhága'\n", " elif s=='Mik\\xc3\\xb4ujfal\\xc3\\xba': return 'Mikóújfalu'\n", " elif s=='Zagon': return 'Zágon'\n", " elif s=='Sarmasul': return 'Salamás'\n", " elif s=='Zalau': return 'Zilah'\n", " elif s=='Simleu Silvaniei': return 'Sepsiszentgyörgy'\n", " elif s=='Zalan': return 'Zalán'\n", " elif s=='Oradea-Mare': return 'Nagyvárad'\n", " elif s=='Ormenis': return 'Ürmös'\n", " elif s=='Bicsad': return 'Sepsibükszád'\n", " elif s=='Ozun': return 'Uzon'\n", " elif s=='Arkos': return 'Árkos'\n", " elif s=='Gheorgheni': return 'Gyergyószentmiklós'\n", " elif s=='S\\xc3\\xa2npetrul': return 'Barcaszentpéter'\n", " elif s=='Geneva': return 'Genf'\n", " elif s=='Breda': return 'Bréda'\n", " elif s=='Zoltan': return 'Zoltán'\n", " elif s=='Leliceni': return 'Csíkszentlélek'\n", " elif s=='Suatu': return 'Magyarszovát'\n", " elif s=='Pest': return 'Budapest'\n", " elif s=='Bacau': return 'Bákó'\n", " elif s=='Varfalau': return 'Várfalva'\n", " elif s=='Biksz\\xc3\\xa1d': return 'Sepsibükszád'\n", " elif s=='Satu Mare': return 'Szatmárnémeti'\n", " elif s=='Köröspatak': return 'Kőröspatak'\n", " elif s=='Prague': return 'Prága'\n", " elif s=='Turin': return 'Torinó'\n", " elif s=='Poiana Largului': return 'Hosszúmező'\n", " elif s=='Beius': return 'Belényes'\n", " elif s=='Csics\\xc3\\xb3': return 'Csíkcsicsó'\n", " elif s=='Rome': return 'Róma'\n", " elif s=='Sovata Bai': return 'Szováta'\n", " elif s=='veroce': return 'Verőce'\n", " elif s=='Nagy-Sz\\xc3\\xa9ben': return 'Nagyszeben'\n", " elif s=='Iasi': return 'Jászvásár'\n", " elif s=='Rupea': return 'Kőhalom'\n", " elif s=='Ludu\\xc8\\x99': return 'Marosludas'\n", " elif s=='Paingeni': return 'Póka'\n", " elif s=='Havadto': return 'Havadtő'\n", " elif s=='Reghinul': return 'Szászrégen'\n", " elif s=='S\\xc3\\xa2ncraiul-De-Mures': return 'Marosszentkirály'\n", " elif s=='Valureni': return 'Székelykakasd'\n", " elif s=='Ditro': return 'Gyergyóditró'\n", " elif s=='Sz\\xc3\\xa1rhegy': return 'Gyergyószárhegy'\n", " elif s=='Florence': return 'Firenze'\n", " elif s=='Bogata': return 'Marosbogát'\n", " elif s=='Alunis': return 'Magyaró'\n", " elif s=='Selanik (thessaloniki) Greece': return 'Thessaloniki'\n", " elif s=='Lunca Bradului': return 'Palotailva'\n", " elif s=='Ceuasul-De Campie': return 'Mezőcsávás'\n", " elif s=='Sangeorgiul De Mures': return 'Marosszentgyörgy'\n", " elif s=='Sighisoara': return 'Segesvár'\n", " elif s=='Gyergyo': return 'Gyergyószentmiklós'\n", " elif s=='Ogra': return 'Marosugra'\n", " elif s=='Ujtusn\\xc3\\xa1d': return 'Újtusnád'\n", " elif s=='Miercurea Nirajului': return 'Nyárádszereda'\n", " elif s=='Floresti': return 'Szászfenes'\n", " elif s=='Santioana-De-Mures': return 'Csittszentiván'\n", " elif s=='Maroskeresztur': return 'Maroskeresztúr'\n", " elif s=='Sangeorgiu-De-Padure': return 'Erdőszentgyörgy'\n", " elif s=='Cristesti': return 'Maroskeresztúr'\n", " elif s=='Sangeorg-De Mures': return 'Marosszentgyörgy'\n", " elif s=='Dej': return 'Dés'\n", " elif s=='Csikfalva': return 'Csíkfalva'\n", " elif s=='Marghita': return 'Margitta'\n", " elif s=='Valea Izvoarelor': return 'Buzásbesenyő'\n", " elif s=='Corunca': return 'Koronka'\n", " elif s=='Sovata': return 'Szováta'\n", " elif s=='Ny\\xc3\\xa1radremete': return 'Nyárádremete'\n", " elif s=='Cehu Silvaniei': return 'Szilágycseh'\n", " elif s=='B\\xc3\\xa1lav\\xc3\\xa1s\\xc3\\xa1r,': return 'Balavásár'\n", " elif s=='Csomafalva': return 'Gyergyócsomafalva'\n", " elif s=='Szigetsentmiklos': return 'Szigetszentmiklós'\n", " elif s=='Mik\\xc3\\xb4ujfal\\xc3\\xb9': return 'Mikóújfalu'\n", " elif s=='Bibarczflava': return 'Bibarcfalva'\n", " elif s=='Bradut': return 'Fenyéd'\n", " elif s=='Huedin': return 'Bánffyhunyad'\n", " elif s=='New Delhi': return 'Újdelhi'\n", " elif s=='Galanta': return 'Galánta'\n", " elif s=='Beirut': return 'Bejrút'\n", " elif s=='Riyadh': return 'Rijád'\n", " elif s=='Jerusalem': return 'Jeruzsálem'\n", " elif s=='Godollo': return 'Gödöllő'\n", " elif s=='Balatonfuzfo': return 'Balatonfűzfő'\n", " elif s=='Fels\\xc3\\xb6sofalva': return 'Felsősófalva'\n", " elif s=='Bodok': return 'Sepsibodok'\n", " elif s=='Bodoc': return 'Sepsibodok'\n", " elif s=='Biborteni': return 'Bibarcfalva'\n", " elif s=='Tarnaveni': return 'Dicsőszentmárton'\n", " elif s=='Bremen': return 'Bréma'\n", " elif s=='Targu-Sacuesc': return 'Kézdivásárhely'\n", " elif s=='Ungheni': return 'Nyárádtő'\n", " elif s=='Racosu De Jos': return 'Alsórákos'\n", " elif s=='Mikl\\xc3\\xb3svar': return 'Miklósvár'\n", " elif s=='V\\xc4\\x81sad': return 'Vasad'\n", " elif s=='Sf\\xc3\\xa2ntul-Gheorghe': return 'Sepsiszentgyörgy'\n", " elif s=='Malnas Bai': return 'Málnásfürdő'\n", " elif s=='Colonia Bod': return 'Botfalusi Cukorgyártelep'\n", " elif s=='Ujfal\\xc3\\xba': return 'Újfalu'\n", " elif s=='Doboseni': return 'Székelyszáldobos'\n", " elif s=='Batanii Mari': return 'Nagybacon'\n", " elif s=='Rakos': return 'Felsőrákos'\n", " elif s=='Gonyu': return 'Gönyű'\n", " elif s=='Capeni': return 'Köpec'\n", " elif s=='K\\xc3\\xb6pecz': return 'Köpec'\n", " elif s=='Senec': return 'Szenc'\n", " elif s=='Petrosani': return 'Petrozsény'\n", " elif s=='Biharia': return 'Bihar'\n", " elif s=='Racos': return 'Felsőrákos'\n", " elif s=='Erdofule': return 'Erdőfüle'\n", " elif s=='Kopec': return 'Köpec'\n", " elif s=='Sarmasag': return 'Sarmaság'\n", " elif s=='Aiud': return 'Nagyenyed'\n", " elif s=='Fels\\xc3\\xb6r\\xc3\\xa1kos': return 'Felsőrákos'\n", " elif s=='Ullo': return 'Üllő'\n", " elif s=='Alba Iulia': return 'Gyulafehérvár'\n", " elif s=='Felso Szeli': return 'Csíkszereda'\n", " elif s=='Kom\\xc3\\xa1ndo': return 'Kommandó'\n", " elif s=='Remetea': return 'Gyergyóremete'\n", " elif s=='S\\xc3\\xa2nnicolaul-De-Munte': return 'Hegyközszentmiklós'\n", " elif s=='Tulghes': return 'Gyergyótölgyes'\n", " elif s=='Marosfo': return 'Marosfő'\n", " elif s=='Lazarea': return 'Gyergyószárhegy'\n", " elif s=='Gyimesfels\\xc3\\xb6lok': return 'Gyimesfelsőlok'\n", " elif s=='K\\xc3\\xa1szonaltiz': return 'Kászonaltíz'\n", " elif s=='Suseni': return 'gyergyóújfalu'\n", " elif s=='Gyerg\\xc3\\xb2szentmikl\\xc3\\xb2s': return 'Gyergyószentmiklós'\n", " elif s=='Magyaro': return 'Magyaró'\n", " elif s=='Deva': return 'Déva'\n", " elif s=='Szatm\\xc3\\xa1r': return 'Szatmárnémeti'\n", " elif s=='Lacu Rosu': return 'Gyilkostó'\n", " elif s=='K\\xc3\\xb6r\\xc3\\xb6sszegap\\xc3\\xa1ti': return 'Kőrősszegapáti'\n", " elif s=='Ditrau': return 'Gyergyóditró'\n", " elif s=='Naples': return 'Nápoly'\n", " elif s=='T\\xc3\\xaergu Secuiesc': return 'Kézdivásárhely'\n", " elif s=='Turia': return 'Torja'\n", " elif s=='K\\xc3\\xa0szonuifal\\xc3\\xb9': return 'Kászonújfalu'\n", " elif s=='Cernat': return 'Csernáton'\n", " elif s=='Cosnea': return 'Kóstelek'\n", " elif s=='Mereni': return 'Kézdialmás'\n", " elif s=='Bretcul': return 'Bereck'\n", " elif s=='Poian': return 'Kézdiszentkereszt'\n", " elif s=='Cernatul-De-Sus': return 'Csernáton'\n", " elif s=='Icafalau': return 'Ikafalva'\n", " elif s=='Bereczk': return 'Bereck'\n", " elif s=='Zau De C\\xc3\\xaempie': return 'Mezőzáh'\n", " elif s=='Hatuica': return 'Hatolyka'\n", " elif s=='Sarfalva': return 'Sárfalva'\n", " elif s=='K\\xc3\\xa9zdi-Mart\\xc3\\xb2nos': return 'Kézdimartonos'\n", " elif s=='Csiksomly\\xc3\\xb3': return 'Csíksomlyó'\n", " elif s=='Beijing': return 'Peking'\n", " elif s=='Vlaha': return 'Magyarfenes'\n", " elif s=='Baciu': return 'Kisbács'\n", " elif s=='Reghin': return 'Szászrégen'\n", " elif s=='Eted': return 'Etéd'\n", " elif s=='Carei': return 'Nagykároly'\n", " elif s=='Felsolajos': return 'Felsőlajos'\n", " elif s=='Paltinis': return 'Kecsed'\n", " elif s=='Atid': return 'Etéd'\n", " elif s=='Lopadea Noua': return 'Magyarlapád'\n", " elif s=='Andreeni': return 'Székelyandrásfalva'\n", " elif s=='Diosig': return 'Bihardiószeg'\n", " elif s=='Emod': return 'Emőd'\n", " elif s=='Cristur': return 'Székelykeresztúr'\n", " elif s=='Andr\\xc3\\xa1sfalva': return 'Székelyandrásfalva'\n", " elif s=='Pilisborosjeno': return 'Pilisborosjenő'\n", " elif s=='Kiskoros': return 'Kiskőrös'\n", " elif s=='Als\\xc3\\xb2b\\xc3\\xb2ldogfalva': return 'Alsóboldogfalva'\n", " elif s=='Vetca': return 'Székelyvécke'\n", " elif s=='Goagiu': return 'Gagy'\n", " elif s=='Betesti': return 'Betfalva'\n", " elif s=='Kaposfo': return 'Kaposfő'\n", " elif s=='Bodogaia': return 'Alsóboldogfalva'\n", " elif s=='Siklodi Oldal': return 'Siklód'\n", " elif s=='Koszegszerdahely': return 'Kőszegszerdahely'\n", " elif s=='Ilieni': return 'Lukailencfalva'\n", " elif s=='Lunca De Jos': return 'Gyimesközéplok'\n", " elif s=='Tapioszecso': return 'Tápiószecső'\n", " elif s=='Ujsz\\xc3\\xa8kely': return 'Újszékely'\n", " elif s=='Turda': return 'Torda'\n", " elif s=='Jiboul': return 'Zsibó'\n", " elif s=='Agnita': return 'Szentágota'\n", " elif s=='Cisnadie': return 'Nagydisznód'\n", " elif s=='Peregu Mare': return 'Németpereg'\n", " elif s=='Constanta': return 'Konstanca'\n", " elif s=='Hezeris': return 'Lugosegres'\n", " elif s=='Tekeropatak': return 'Gyergyótekerőpatak'\n", " elif s=='Galati': return 'Galac'\n", " elif s=='Covasna': return 'Kovászna'\n", " elif s=='Kronstadt': return 'Brassó'\n", " elif s=='T\\xc3\\xa2rgu Jiu': return 'Zsilvásárhely'\n", " elif s=='S\\xc3\\xa2ndominic': return 'Csíkszentdomokos'\n", " elif s=='Chisineu Chis': return 'Kőrőskisjenő'\n", " elif s=='Bistrita': return 'Beszterce'\n", " elif s=='Izvorul Muresului': return 'Marosfő'\n", " elif s=='Gilau': return 'Gyalu'\n", " elif s=='Corois\\xc3\\xa2nmartin': return 'Kóródszentmárton'\n", " elif s=='Marculeni': return 'Márkod'\n", " elif s=='Sarmas': return 'Salamás'\n", " elif s=='Palanca': return 'Palánka'\n", " elif s=='Odorheiul Secuiesc': return 'Székelyudvarhely'\n", " elif s=='Talmacel': return 'Kistalmács'\n", " elif s=='Adjud': return 'Egyedhalma'\n", " elif s=='Baia Mare': return 'Nagybánya'\n", " elif s=='Valea Mica': return 'Pokolpatak'\n", " elif s=='Ghimes-Faget': return 'Gyimesbükk'\n", " elif s=='Ruganesti': return 'Rugonfalva'\n", " elif s=='Toplita-Ciuc': return 'Maroshévíz'\n", " elif s=='Belin': return 'Bölön'\n", " elif s=='Gurghiu': return 'Görgényszentimre'\n", " elif s=='Jenofalva': return 'Csíkjenőfalva'\n", " elif s=='Comanesti': return 'Kománfalva'\n", " elif s=='Balan': return 'Balánbánya'\n", " elif s=='Miercurea Ciuc': return 'Csíkszereda'\n", " elif s=='T\\xc3\\xa2rgu Jiu': return 'Zsilvásárhely'\n", " elif s=='Cristolt': return 'Nagykeresztes'\n", " elif s=='Toplita': return 'Maroshévíz'\n", " elif s=='Miercurea-Ciucului': return 'Csíkszereda'\n", " elif s=='Chiheru De Sus': return 'Felsőköhér'\n", " elif s=='Borsec': return 'Borszék'\n", " elif s=='Vasluiul': return 'Vaslui'\n", " elif s=='Bucuresti-Noi': return 'Bukarest'\n", " elif s=='Istanbul': return 'Isztambul'\n", " elif s=='Targu-Neamt': return 'Németvásár'\n", " elif s=='Uzinele Vlahita': return 'Szentegyháza'\n", " elif s=='Szasz R\\xc3\\xa9gen': return 'Szászrégen'\n", " elif s=='Baile Homorod': return 'Homoródfürdő'\n", " elif s=='Corfu': return 'Korfu'\n", " elif s=='Lueta': return 'Lövéte'\n", " elif s=='Praid': return 'Parajd'\n", " elif s=='Mindszent': return 'Csíkmindszent'\n", " elif s=='Homorodfurdo': return 'Homoródfürdő'\n", " elif s=='Homorod-Bai': return 'Homoródfürdő'\n", " elif s=='Chibed': return 'Kibéd'\n", " elif s=='Uzonkaf\\xc3\\xbcrd\\xc3\\xb6': return 'Uzonkafürdő'\n", " elif s=='Borzsova': return 'Csíkborzsova'\n", " elif s=='Mina Sarmmasag': return 'Sarmaság'\n", " elif s=='Iernut': return 'Radnót'\n", " elif s=='Medias': return 'Szászmedgyes'\n", " elif s=='Bratislava': return 'Pozsony'\n", " elif s=='C\\xc3\\xa2mpia Turzi': return 'Aranyosgyéres'\n", " elif s=='C\\xc3\\xa2mpia Turzi': return 'Aranyosgyéres'\n", " elif s=='Mosuni': return 'Székelymoson'\n", " elif s=='Hunedoara': return 'Vajdahunyad'\n", " elif s=='Damieni': return 'Deményháza'\n", " elif s=='Chilieni': return 'Kilyén'\n", " elif s=='Nadlac': return 'Nagylak'\n", " elif s=='Sacadat': return 'Szakadát'\n", " elif s=='Baile Sovata': return 'Szováta'\n", " elif s=='Csengod': return 'Csengőd'\n", " elif s=='Copaceni': return 'Koppánd'\n", " elif s=='Livezeni': return 'Jedd'\n", " elif s=='Viisoara': return 'Csatófalva'\n", " elif s=='Voivodeni': return 'Vajdaháza'\n", " elif s=='Rastolita': return 'Ratosnya'\n", " elif s=='Serbeni': return 'Soropháza'\n", " elif s=='S\\xc3\\xa2npetru-De-C\\xc3\\xa2mpie': return 'Mezőszentpéter'\n", " elif s=='Iernuteni': return 'Randótfája'\n", " elif s=='Hermannstadt': return 'Nagyszeben'\n", " elif s=='Nadasa': return 'Görgénynádas'\n", " elif s=='City of Brussels': return 'Brüsszel'\n", " elif s=='Trei Sate': return 'Hármasfalu'\n", " elif s=='Mar\\xc3\\xb3s Vecs': return 'Marosvécs'\n", " elif s=='Gurghiul': return 'Görgényszentimre'\n", " elif s=='Petelea': return 'Petele'\n", " elif s=='Jabenita': return 'Görgénysóakna'\n", " elif s=='Valenii De Mures': return 'Disznajó'\n", " elif s=='Orfu': return 'Orfű'\n", " elif s=='Fitcau': return 'Fickópataka'\n", " elif s=='Dezmir': return 'Dezmér'\n", " elif s=='Podu Turcului': return 'Törökpadja'\n", " elif s=='Goreni': return 'Dedrádszéplak'\n", " elif s=='Mitresti': return 'Nyárádszentmárton'\n", " elif s=='Ibanesti': return 'Libánfalva'\n", " elif s=='Gherla': return 'Szamosújvár'\n", " elif s=='Solovastrul': return 'Görgényoroszfalu'\n", " elif s=='Reghinul Sashsisch': return 'Szászrégen'\n", " elif s=='Brancovenesti': return 'Marosvécs'\n", " elif s=='Zadareni': return 'Zádorlac'\n", " elif s=='Reghin-Sat': return 'Szászrégen'\n", " elif s=='Beica De Jos': return 'Alsóbölkény'\n", " elif s=='Baita': return 'Laposbánya'\n", " elif s=='Sacalu De Padure': return 'Magyarerdőszakál'\n", " elif s=='Ideciu De Sus': return 'Alsóidecs'\n", " elif s=='Chiheru de Jos': return 'Alsóköhér'\n", " elif s=='Beica De Sus': return 'Felsőbölkény'\n", " elif s=='Ideciul-De-Jos': return 'Alsóidecs'\n", " elif s==' Tapioszecso': return 'Tápiószecső'\n", " elif s=='Glajarie': return 'Görgényüvegcsűr'\n", " elif s=='Blaj': return 'Balázsfalva'\n", " elif s=='G\\xc3\\xb6rg\\xc3\\xa9ny\\xc3\\xbcvegcs\\xc3\\xbcr': return 'Görgényüvegcsűr'\n", " elif s=='Martinesti': return 'Pusztaszentmárton'\n", " elif s=='Luna De Sus': return 'Szászlóna'\n", " elif s=='Chesau': return 'Mezőkeszü'\n", " elif s=='baile Felix': return 'Félixfürdő'\n", " elif s=='Dubai': return 'Dubaj'\n", " elif s=='Nimigea De Jos': return 'Magyarnemegye'\n", " elif s=='C\\xc3\\xa2mpia Turzii': return 'Aranyosgyéres'\n", " elif s=='Craciunelul-De-Jos': return 'Alsókarácsonfalva'\n", " elif s=='Valenii': return 'Disznajó'\n", " elif s=='Laslea': return 'Szászszentlászló'\n", " elif s=='Petrilaca': return 'Oláhpéterlaka'\n", " elif s=='Nazna': return 'Náznánfalva'\n", " elif s=='Dragomiresti': return 'Dragomérfalva'\n", " elif s=='Balauseri': return 'Balavásár'\n", " elif s=='Saschiz': return 'Szászkézd'\n", " elif s=='S\\xc3\\xa2ntioana': return 'Marosszentanna'\n", " elif s=='Mica': return 'Mikefalva'\n", " elif s=='Seleusu-Mare': return 'Nagyszőlős'\n", " elif s=='Odrihei': return 'Vámosudvarhely'\n", " elif s=='Danes': return 'Dános'\n", " elif s=='Suplac': return 'Széplak'\n", " elif s=='Resita': return 'Resicabánya'\n", " elif s=='Codlea': return 'Feketehalom'\n", " elif s=='Tigmandru': return 'Cikmántor'\n", " elif s=='Remetea Lunca': return 'Hosszúremete'\n", " elif s=='Soardu': return 'Küküllősárd'\n", " elif s=='Szentharomsag': return 'Szentháromság'\n", " elif s=='Corbu': return 'Gyergyóholló'\n", " elif s=='St\\xc3\\xaenceni': return 'Gödemesterháza'\n", " elif s=='St\\xc3\\xa2nceni': return 'Gödemesterháza'\n", " elif s=='Vertesszolos': return 'Vértesszőlős'\n", " elif s=='Gheorghieni': return 'Gyergyószentmiklós'\n", " elif s=='Deda': return 'Déda'\n", " elif s=='Deda Bistra': return 'Dédabisztra'\n", " elif s=='Bistra Muresului': return 'Dédabisztra'\n", " elif s=='Lugoj': return 'Lugos'\n", " elif s=='Sausa': return 'Székelysóspatak'\n", " elif s=='Hodosa-De-Ciuc': return 'Csíkhodos'\n", " elif s=='Subcetate': return 'Zeteváralja'\n", " elif s=='Pantelimon': return 'Bukarest'\n", " elif s=='Capilnita': return 'Kápolnásfalu'\n", " elif s=='Santana-De-Mures': return 'Marosszentanna'\n", " elif s=='Bocsa': return 'Boksánbánya'\n", " elif s=='S\\xc3\\xa2nnicolau Mare': return 'Nagyszentmiklós'\n", " elif s=='S\\xc3\\xa2nnicolaul Mare': return 'Nagyszentmiklós'\n", " elif s=='S\\xc3\\xa2npetru Mic': return 'Kisszentpéter'\n", " elif s=='S\\xc3\\xaennicolaul Mare': return 'Nagyszentmiklós'\n", " elif s=='St\\xc3\\xa2nceni': return 'Gödemesterháza'\n", " elif s=='Ciobotani': return 'Csobotány'\n", " elif s=='Lunca De Sus': return 'Gyimesfelsőlok'\n", " elif s=='Ghindari': return 'Makkfalva'\n", " elif s=='Caporal Alexa': return 'Erdőskerek'\n", " elif s=='Coldau': return 'Várkudu'\n", " elif s=='Bicaz Chei': return 'Békás'\n", " elif s=='Bilbor': return 'Bélbor'\n", " elif s=='Moscow': return 'Moszkva'\n", " \n", " else: return s" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def code(i):\n", " i=i.replace('Sonderjylland','')\n", " if i=='Szentegyházasfalu': tocode='Valhita, Harghita, Romania'\n", " elif i=='Szentegyh\\xc3\\xa1zasfalu': tocode='Valhita, Harghita, Romania'\n", " elif i=='Sarmasul, Mures, Romania': tocode='Sarmas, Mures, Romania'\n", " elif i=='Ilencfalva, Mures, Romania': tocode='Ilieni, Mures, Romania'\n", " elif i=='Reghinul, Mures, Romania': tocode='Reghin, Mures, Romania'\n", " elif i=='S\\xc3\\xa2ncraiul-De-Mures, Mures, Romania': tocode='Sancraiu de Mures, Mures, Romania'\n", " elif i=='Monoritoko, Mahajanga, Madagascar': tocode='Manaritoka, Mahajanga, Madagascar'\n", " elif i=='Sangeorg-De Mures, Mures, Romania': tocode='Sangeorgiu De Mures, Mures, Romania'\n", " elif i=='S\\xc3\\xb6lden, Austria': tocode='Solden, Austria'\n", " elif i=='Pjelax, L\\xc3\\xa4nsi-Suomen L\\xc3\\xa4\\xc3\\xa4ni, Finland': tocode='Pjelax, Finland'\n", " elif i=='Siklodi Oldal, Mures, Romania': tocode='Siklod, Mures, Romania'\n", " elif i=='Kereszt\\xc3\\xbar, Timis, Romania': tocode='Cherestur, Timis, Romania'\n", " elif i=='Jiboul, Salaj, Romania': tocode='Jibou, Salaj, Romania'\n", " elif i=='Szasz R\\xc3\\xa9gen, Mures, Romania': tocode='Reghin, Mures, Romania'\n", " elif i=='Fick\\xc3\\xb3, Mures, Romania': tocode='Fitcau, Mures, Romania'\n", " elif i=='Gurghiul, Mures, Romania': tocode='Gurghiu, Mures, Romania'\n", " elif i=='Mar\\xc3\\xb3s Vecs, Mures, Romania': tocode='Brancovenesti, Mures, Romania'\n", " elif i=='Felfalu, Mures, Romania': tocode='Suseni, Mures, Romania'\n", " elif i=='Solovastrul, Mures, Romania': tocode='Solovastru, Mures, Romania'\n", " elif i=='Reghinul Sashsisch, Mures, Romania': tocode='Reghin, Mures, Romania'\n", " elif i=='Ideciul-De-Jos, Mures, Romania': tocode='Ideciu De Jos, Mures, Romania'\n", " elif i=='Craciunelul-De-Jos, Alba, Romania': tocode='Craciunelu De Jos, Alba, Romania'\n", " elif i=='Seleusu-Mare, Mures, Romania': tocode='Seleus, Mures, Romania'\n", " elif i=='Chendu Mare, Mures, Romania': tocode='Chend, Mures, Romania'\n", " elif i=='Chendu Mare, Mures, Romania': tocode='Chend, Mures, Romania'\n", " elif i=='Galautasi, Mures, Romania': tocode='Galautasi, Romania'\n", " elif i=='Iermata Neagra, Timis, Romania': tocode='Iermata Neagra, Romania'\n", " elif i=='Kiskend, Mures, Romania': tocode='Chendu, Mures, Romania'\n", " elif i=='Teremeujfal\\xc3\\xb9, Mures, Romania': tocode='Satu Nou, Mures, Romania'\n", " elif i=='Eremitul, Mures, Romania': tocode='Eremitu, Mures, Romania'\n", " elif i=='Szentbenedek, Mures, Romania': tocode='Manastirea, Cluj, Romania'\n", " elif i=='Baczkamadaras, Mures, Romania': tocode='Pasareni, Mures, Romania'\n", " elif i=='Arpasel, Timis, Romania': tocode='Arpasel, Bihor, Romania'\n", " elif i=='Grintiesu Mic, Neamt, Romania': tocode='Grinties, Neamt, Romania'\n", " elif i=='Batos': tocode='Batos, Mures, Romania'\n", " elif i=='Batos': tocode='Paks, Hungary'\n", " elif i=='Toplita-Ciuc, Harghita, Romania': tocode='Toplita, Harghita, Romania'\n", " elif i=='Kopec': tocode='Capeni, Harghita, Romania'\n", " elif i=='S\\\\xc3\\\\xa2nger': tocode='Sanger, Mures, Romania'\n", " else: tocode=i\n", " return tocode" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": false }, "outputs": [], "source": [ "path=\"db2/\"" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": false }, "outputs": [], "source": [ "#global placelist\n", "GL={}\n", "#load existing, if exits\n", "VL=json.loads(file(\"VL.json\").read())" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "'csikszereda'" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "varosok=[\n", "'csikszereda',\n", "'udvarhely',\n", "'szentgyorgy',\n", "'vasarhely',\n", "'barot',\n", "'gyergyo',\n", "'kezdi',\n", "'keresztur',\n", "'kovaszna',\n", "'balan',\n", "'vlahica',\n", "'parajd',\n", "'szovata',\n", "'regen',\n", "'kolozsvar',\n", "'segesvar',\n", "'toplita']\n", "varos=varosok[0]\n", "varos" ] }, { "cell_type": "code", "execution_count": 44, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Csíkszereda - 2320 profil, ebből használható: 0 - ez a lakosság ( 37980 ) 0.0 %-a.\n", "Székelyudvarhely - 2180 profil, ebből használható: 0 - ez a lakosság ( 34257 ) 0.0 %-a.\n", "Sepsiszentgyörgy - 2314 profil, ebből használható: 0 - ez a lakosság ( 54312 ) 0.0 %-a.\n", "Marosvásárhely - 2236 profil, ebből használható: 0 - ez a lakosság ( 134290 ) 0.0 %-a.\n", "Barót - 2194 profil, ebből használható: 0 - ez a lakosság ( 8567 ) 0.0 %-a.\n", "Gyergyószentmiklós - 2264 profil, ebből használható: 0 - ez a lakosság ( 18377 ) 0.0 %-a.\n", "Kézdivásárhely - 2188 profil, ebből használható: 0 - ez a lakosság ( 18491 ) 0.0 %-a.\n", "Székelykeresztúr - 2300 profil, ebből használható: 0 - ez a lakosság ( 9491 ) 0.0 %-a.\n", "Kovászna - 2244 profil, ebből használható: 0 - ez a lakosság ( 10265 ) 0.0 %-a.\n", "Balánbánya - 2216 profil, ebből használható: 0 - ez a lakosság ( 5864 ) 0.0 %-a.\n", "Szentegyháza - 590 profil, ebből használható: 0 - ez a lakosság ( 6820 ) 0.0 %-a.\n", "Parajd - 1116 profil, ebből használható: 0 - ez a lakosság ( 6502 ) 0.0 %-a.\n", "Szováta - 1491 profil, ebből használható: 0 - ez a lakosság ( 10234 ) 0.0 %-a.\n", "Szászrégen - 2242 profil, ebből használható: 0 - ez a lakosság ( 33281 ) 0.0 %-a.\n", "Kolozsvár - 2147 profil, ebből használható: 0 - ez a lakosság ( 324576 ) 0.0 %-a.\n", "Segesvár - 1765 profil, ebből használható: 0 - ez a lakosság ( 28102 ) 0.0 %-a.\n", "Maroshévíz - 2250 profil, ebből használható: 0 - ez a lakosság ( 13285 ) 0.0 %-a.\n", "Csíkszereda - 1715 profil, ebből használható: 0 - ez a lakosság ( 37980 ) 0.0 %-a.\n", "Székelyudvarhely - 1638 profil, ebből használható: 0 - ez a lakosság ( 34257 ) 0.0 %-a.\n", "Sepsiszentgyörgy - 1645 profil, ebből használható: 0 - ez a lakosság ( 54312 ) 0.0 %-a.\n", "Marosvásárhely - 2191 profil, ebből használható: 0 - ez a lakosság ( 134290 ) 0.0 %-a.\n", "Barót - 2051 profil, ebből használható: 0 - ez a lakosság ( 8567 ) 0.0 %-a.\n", "Gyergyószentmiklós - 1883 profil, ebből használható: 0 - ez a lakosság ( 18377 ) 0.0 %-a.\n", "Kézdivásárhely - 2031 profil, ebből használható: 0 - ez a lakosság ( 18491 ) 0.0 %-a.\n", "Székelykeresztúr - 1961 profil, ebből használható: 0 - ez a lakosság ( 9491 ) 0.0 %-a.\n", "Kovászna - 2002 profil, ebből használható: 0 - ez a lakosság ( 10265 ) 0.0 %-a.\n", "Balánbánya - 1967 profil, ebből használható: 0 - ez a lakosság ( 5864 ) 0.0 %-a.\n", "Szentegyháza - 1834 profil, ebből használható: 0 - ez a lakosság ( 6820 ) 0.0 %-a.\n", "Parajd - 1124 profil, ebből használható: 0 - ez a lakosság ( 6502 ) 0.0 %-a.\n", "Szováta - 1495 profil, ebből használható: 0 - ez a lakosság ( 10234 ) 0.0 %-a.\n", "Szászrégen - 1988 profil, ebből használható: 0 - ez a lakosság ( 33281 ) 0.0 %-a.\n", "Kolozsvár - 1989 profil, ebből használható: 0 - ez a lakosság ( 324576 ) 0.0 %-a.\n", "Segesvár - 2128 profil, ebből használható: 0 - ez a lakosság ( 28102 ) 0.0 %-a.\n", "Maroshévíz - 2226 profil, ebből használható: 0 - ez a lakosság ( 13285 ) 0.0 %-a.\n" ] } ], "source": [ "for path in {\"db/\",\"db2/\"}:\n", " for varos in varosok:\n", " lines = [line.rstrip('\\n') for line in open(path+varos+'.txt')]\n", " L=[i for i in lines if ((i!='') and (i!='..'))]\n", "\n", " #set start of friend list\n", " for i in range(len(L)):\n", " if 'FriendFriends' in L[i]:\n", " break\n", " if 'Add Friend' in L[i]:\n", " break\n", " L=L[i:]\n", "\n", " #set end of friend list\n", " c=0\n", " for i in range(len(L)):\n", " if 'FriendFriends' in L[i]:\n", " c=i\n", " if 'Add Friend' in L[i]:\n", " c=i\n", " L=L[:c+8] \n", "\n", " #from here people entries are separated by an empty line\n", " K=[{}]\n", " maxicounter=0\n", " minicounter=0\n", " names=['friend1','friend2','friend3','name','pos','place','info','mutual']\n", " for l in L:\n", " if ((l!='') and (l!='..')):\n", " if l=='.':\n", " #no need for friend and mutual info for now\n", " try:\n", " K[maxicounter].pop('friend1')\n", " K[maxicounter].pop('friend2')\n", " K[maxicounter].pop('friend3')\n", " K[maxicounter].pop('mutual')\n", " except:pass\n", "\n", " #set counters\n", " minicounter=0\n", " maxicounter+=1\n", " K.append({})\n", " else:\n", " K[maxicounter][names[minicounter]]=l\n", " minicounter+=1\n", "\n", " ###########################\n", "\n", " P=[]\n", " placelist=[]\n", " placejoblist={}\n", " counter=-1\n", " for k in K:\n", " if 'place' in k:\n", " counter+=1\n", " P.append({})\n", " P[counter]['name']=k['name']\n", " if 'From' not in k['place']:\n", " if 'Lives' in k['place']:\n", " P[counter]['place']=k['place'][9:]\n", " placelist.append(k['place'][9:])\n", "\n", " try:\n", " if 'Studied' in k['info']:\n", " P[counter]['stud']=k['info'][7:]\n", " elif 'Studies' in k['info']:\n", " P[counter]['stud']=k['info'][7:] \n", " elif 'Studied' in k['pos']:\n", " P[counter]['stud']=k['pos'][7:]\n", " elif 'Studies' in k['pos']:\n", " P[counter]['stud']=k['pos'][7:]\n", "\n", " if 'Worked' in k['info']:\n", " P[counter]['work']=k['info'][6:]\n", " elif 'Works' in k['info']:\n", " P[counter]['work']=k['info'][5:]\n", " elif 'Worked' in k['pos']:\n", " P[counter]['work']=k['pos'][6:]\n", " elif 'Works' in k['pos']:\n", " P[counter]['work']=k['pos'][5:]\n", "\n", " elif ' at ' in k['pos']:\n", " P[counter]['work']=k['pos']\n", "\n", " else:\n", " pass\n", " except: pass \n", "\n", " if 'work' in P[counter]:\n", " if ' at ' in P[counter]['work']:\n", " a1=P[counter]['work'].find(' at ')\n", " if P[counter]['work'][:a1]!='':\n", " if k['place'][9:] not in placejoblist: placejoblist[k['place'][9:]]={}\n", " if workdict(P[counter]['work'][:a1]) not in placejoblist[k['place'][9:]]:\\\n", " placejoblist[k['place'][9:]][workdict(P[counter]['work'][:a1])]=1\n", " else: placejoblist[k['place'][9:]][workdict(P[counter]['work'][:a1])]+=1\n", "\n", " placeset=set(placelist)\n", "\n", " ###########################\n", "\n", " PL={} #placelist\n", " LL={} #locationlist\n", " CL={} #countrylist\n", " ML={} #countylist\n", " \n", " \n", " \n", " #file(path+varos+'.json','w').write(json.dumps({'countries':CL,'counties':ML,'cities':LL}))\n", " #print path,varos,\"minded\",len(K),\"useful\",sum([LL[i][\"count\"] for i in LL])\n", " print cz[varos],\"- \",len(K),\"profil, ebből használható: \",sum([LL[i][\"count\"] for i in LL]),\" - ez a lakosság (\",lakos[varos],\")\", np.round(sum([LL[i][\"count\"] for i in LL])*100.0/lakos[varos],2),\"%-a.\"" ] }, { "cell_type": "code", "execution_count": 1753, "metadata": { "collapsed": false }, "outputs": [], "source": [ "#fix GL db, run this, then run cell above again\n", "#comment out lines one by one when done to conserve geocoding quota\n", "\n", "#GL['Toplita-Ciuc, Harghita, Romania']=Geocoder.geocode(\"Toplita, Harghita\")\n", "#GL['Kopec']=Geocoder.geocode(\"Köpecz, Covasna, Romania\")\n", "#GL['Erdofule, Harghita, Romania']=Geocoder.geocode(\"Erdofule, Covasna, Romania\")\n", "#GL['Bardócz, Harghita, Romania']=Geocoder.geocode(\"Bardocz, Covasna, Romania\")\n", "#GL['Szèkelyszáldobos, Harghita, Romania']=Geocoder.geocode(\"Szèkelyszáldobos, Covasna, Romania\")\n", "#GL['\"Gyergòszentmiklòs, Harghita, Romania\", Harghita, Romania']=Geocoder.geocode(\"Gyergyo, Harghita, Romania\")" ] }, { "cell_type": "code", "execution_count": 1776, "metadata": { "collapsed": false }, "outputs": [], "source": [ "#save geocode library\n", "VL={}\n", "for i in GL:\n", " VL[i]={\"coord\":GL[i].coordinates,\"raw\":GL[i].raw,\"country\":GL[i].country}\n", "file('VL.json','w').write(json.dumps(VL))\n", "\n", "#save processed city library, old deprecated\n", "#file(path+varos+'.json','w').write(json.dumps({'countries':CL,'counties':ML,'cities':LL}))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Run code above this cell for all cities, all db-s, one by one" ] }, { "cell_type": "code", "execution_count": 2537, "metadata": { "collapsed": false }, "outputs": [], "source": [ "#create global variable\n", "G={}\n", "\n", "#save into global\n", "G={'cities':{}}\n", "#load data from db\n", "for varos in varosok:\n", " if varos not in {'kolozsvar'}:\n", " P=json.loads(file('db/'+varos+'.json').read())\n", " for j in P['cities']:\n", " if j not in G['cities']: G['cities'][j]={\"coords\":P['cities'][j][\"coords\"],\"count\":0}\n", " G['cities'][j][varos]=P['cities'][j]\n", " G['cities'][j][\"count\"]+=P['cities'][j][\"count\"]\n", "#load data from db2\n", "for varos in varosok:\n", " if varos not in {'kolozsvar'}:\n", " P=json.loads(file('db2/'+varos+'.json').read())\n", " for j in P['cities']:\n", " if j not in G['cities']: G['cities'][j]={\"coords\":P['cities'][j][\"coords\"],\"count\":0}\n", " if varos not in G['cities'][j]: \n", " G['cities'][j][varos]=P['cities'][j]\n", " G['cities'][j][\"count\"]+=P['cities'][j][\"count\"]\n", " elif G['cities'][j][varos][\"count\"]210]\n", "ce=[i for i in Esum if Esum[i]>100]\n", "cr=[i for i in Rsum if Rsum[i]>50]" ] }, { "cell_type": "code", "execution_count": 1852, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "None\n" ] } ], "source": [ "#run once, there is a query limit, load from file, see below, if necessary\n", "gountrygeo={}\n", "for i in Rsum:\n", " if i not in gountrygeo:\n", " try:gountrygeo[i]=Geocoder.geocode(i).coordinates\n", " except:print i" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "collapsed": false }, "outputs": [], "source": [ "#file('gountrygeo.json','w').write(json.dumps(gountrygeo))\n", "gountrygeo=json.load(file('gountrygeo.json','r'))" ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "collapsed": true }, "outputs": [], "source": [ "countrygeo={}\n", "for i in cr:\n", " countrygeo[i]=gountrygeo[i]" ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "collapsed": false }, "outputs": [], "source": [ "countrygeo[\"None\"]=[0, 0]\n", "gountrygeo[\"None\"]=[0, 0]\n", "countrygeo[None]=[0, 0]\n", "gountrygeo[None]=[0, 0]" ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "collapsed": true }, "outputs": [], "source": [ "countrygeo[\"Canada\"]=[61, -29]\n", "countrygeo[\"United States\"]=[57, -29]\n", "countrygeo[\"Romania\"]=[46.052612, 24.954499]\n", "countrygeo[\"Other\"]=[58, 44]" ] }, { "cell_type": "code", "execution_count": 29, "metadata": { "collapsed": false }, "outputs": [], "source": [ "#reparse\n", "Rsum={}\n", "Nsum={}\n", "for i in P[\"cities\"]:\n", " for j in P[\"cities\"][i]:\n", " if j not in {\"count\",\"coords\"}:\n", " if '(' in i: rc=i[0:i.find('(')]\n", " else:rc=i #realcity\n", " if P[\"cities\"][i][j][\"country\"]==\"Romania\":\n", " #for intra-country moves, eliminate self\n", " if rc not in cz.values():\n", " if j not in E2:E2[j]={}\n", " if P[\"cities\"][i][j][\"county\"] in county:\n", " ct=county[P[\"cities\"][i][j][\"county\"]]\n", " else: ct=P[\"cities\"][i][j][\"county\"]\n", " if ct in ce:\n", " c2=ct\n", " else: c2=\"Other\"\n", " if ct not in E2[j]:E2[j][c2]=0\n", " E2[j][c2]+=P[\"cities\"][i][j][\"count\"]\n", " else:\n", " if j not in D2:D2[j]={}\n", " if P[\"cities\"][i][j][\"country\"] in cd:\n", " c2=P[\"cities\"][i][j][\"country\"]\n", " else: c2=\"Other\"\n", " if c2 not in D2[j]:D2[j][c2]=0\n", " D2[j][c2]+=P[\"cities\"][i][j][\"count\"]\n", " if j not in R2:R2[j]={}\n", " if P[\"cities\"][i][j][\"country\"] in cr:\n", " c2=P[\"cities\"][i][j][\"country\"]\n", " else: c2=\"Other\"\n", " \n", " if c2 not in R2[j]:R2[j][c2]=0\n", " R2[j][c2]+=P[\"cities\"][i][j][\"count\"]\n", " if c2 not in Rsum:Rsum[c2]=0\n", " Rsum[c2]+=P[\"cities\"][i][j][\"count\"]\n", " \n", " if j not in N2:N2[j]={}\n", " if P[\"cities\"][i][j][\"country\"] not in N2[j]:N2[j][P[\"cities\"][i][j][\"country\"]]=0\n", " N2[j][P[\"cities\"][i][j][\"country\"]]+=P[\"cities\"][i][j][\"count\"]\n", " if P[\"cities\"][i][j][\"country\"] not in Nsum:Nsum[P[\"cities\"][i][j][\"country\"]]=0\n", " Nsum[P[\"cities\"][i][j][\"country\"]]+=P[\"cities\"][i][j][\"count\"]\n", " \n", "for i in D2:\n", " s=sum(D2[i].values())\n", " for j in D2[i]:\n", " D2[i][j]=D2[i][j]*100.0/s\n", "for i in E2:\n", " s=sum(E2[i].values())\n", " for j in E2[i]:\n", " E2[i][j]=E2[i][j]*100.0/s\n", "\n", "G={\"cities\":{}}\n", "for i in R2:\n", " for j in R2[i]:\n", " if j not in G[\"cities\"]: G[\"cities\"][j]={}\n", " if \"coords\" not in G[\"cities\"][j]:G[\"cities\"][j][\"coords\"]=countrygeo[j]\n", " if \"count\" not in G[\"cities\"][j]:G[\"cities\"][j][\"count\"]=int(Rsum[j])\n", " if i not in G[\"cities\"][j]:\n", " G[\"cities\"][j][i]={\"count\":int(R2[i][j]),\"coords\":[0,0],\"country\":j}\n", " \n", "file('data2.json','w').write(json.dumps(G))" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "M2=N2.copy()\n", "G={\"cities\":{}}\n", "for i in N2:\n", " for j in N2[i]:\n", " if j not in G[\"cities\"]: G[\"cities\"][j]={}\n", " if \"coords\" not in G[\"cities\"][j]:G[\"cities\"][j][\"coords\"]=gountrygeo[j]\n", " if \"count\" not in G[\"cities\"][j]:G[\"cities\"][j][\"count\"]=Nsum[j]\n", " if i not in G[\"cities\"][j]:\n", " G[\"cities\"][j][i]={\"count\":int(N2[i][j]),\"coords\":[0,0],\"country\":j}\n", " \n", "file('data2a.json','w').write(json.dumps(G))" ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "collapsed": false }, "outputs": [], "source": [ "#calculate simple non-lineardistribution, porportional to the 10 largest country shares\n", "#advanced non-linear distribution, to be picked up later, example below\n", "simpleshare={}\n", "for i in R2:\n", " if i not in simpleshare:simpleshare[i]={}\n", " for j in R2[i]:\n", " if j not in simpleshare[i]: simpleshare[i][j]={}\n", " simpleshare[i][j]=R2[i][j]/sum(R2[i].values())" ] }, { "cell_type": "code", "execution_count": 31, "metadata": { "collapsed": false }, "outputs": [ { "ename": "NameError", "evalue": "name 'GG' is not defined", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)", "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[0;32m 3\u001b[0m \u001b[0mcityshare\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;33m{\u001b[0m\u001b[1;33m}\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 4\u001b[0m \u001b[0mcountrycityshare\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;33m{\u001b[0m\u001b[1;33m}\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 5\u001b[1;33m \u001b[1;32mfor\u001b[0m \u001b[0mi\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mGG\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m\"cities\"\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 6\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mj\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mGG\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m\"cities\"\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mi\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 7\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mj\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[1;32min\u001b[0m \u001b[1;33m{\u001b[0m\u001b[1;34m\"country\"\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;34m\"county\"\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;34m\"orig\"\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;34m\"coords\"\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;34m\"count\"\u001b[0m\u001b[1;33m}\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;31mNameError\u001b[0m: name 'GG' is not defined" ] } ], "source": [ "GX={}\n", "Gsum={}\n", "cityshare={}\n", "countrycityshare={}\n", "for i in GG[\"cities\"]:\n", " for j in GG[\"cities\"][i]:\n", " if j not in {\"country\",\"county\",\"orig\",\"coords\",\"count\"}:\n", " if j not in GX:\n", " GX[j]={}\n", " cityshare[j]={}\n", " countrycityshare[j]={}\n", " if i not in GX[j]:\n", " GX[j][i]=0\n", " cityshare[j][i]=2\n", " countrycityshare[j][i]=2\n", " GX[j][i]+=GG[\"cities\"][i][j][\"count\"]\n", "\n", "for v in varosok:\n", " if v not in {\"kolozsvar\"}:\n", " Gsum[v]=0\n", " for j in GX[v]:\n", " Gsum[v]+=GX[v][j]\n", " \n", "for i in GG[\"cities\"]:\n", " for j in GG[\"cities\"][i]:\n", " if j not in {\"country\",\"county\",\"orig\",\"coords\"}:\n", " if j not in {\"count\"}:\n", " cityshare[j][i]=GG[\"cities\"][i][j][\"count\"]*1.0/Gsum[j]\n", " country=GG[\"cities\"][i][j][\"country\"]\n", " if country not in cr: country=\"Other\"\n", " countrycityshare[j][i]=GG[\"cities\"][i][j][\"count\"]/R2[j][country]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Construct city-rank power law" ] }, { "cell_type": "code", "execution_count": 32, "metadata": { "collapsed": false }, "outputs": [], "source": [ "import matplotlib.font_manager as font_manager\n", "path = 'Righteous-Regular.ttf'\n", "prop = font_manager.FontProperties(fname=path,size=13)" ] }, { "cell_type": "code", "execution_count": 33, "metadata": { "collapsed": false }, "outputs": [ { "ename": "KeyError", "evalue": "'csikszereda'", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mKeyError\u001b[0m Traceback (most recent call last)", "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[0;32m 42\u001b[0m \u001b[0mhisto\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;33m{\u001b[0m\u001b[1;33m}\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 43\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mvaros\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[1;32min\u001b[0m \u001b[1;33m{\u001b[0m\u001b[1;34m\"kolozsvar\"\u001b[0m\u001b[1;33m}\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 44\u001b[1;33m \u001b[1;32mfor\u001b[0m \u001b[0mi\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mGX\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mvaros\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 45\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mGX\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mvaros\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mi\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mhisto\u001b[0m\u001b[1;33m:\u001b[0m \u001b[0mhisto\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mGX\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mvaros\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mi\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 46\u001b[0m \u001b[0mhisto\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mGX\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mvaros\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mi\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m+=\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;31mKeyError\u001b[0m: 'csikszereda'" ] }, { "data": { "image/png": "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\n/w+034dQy4359AAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "colors = {\n", "'toplita': '#dd1c77',\n", "'gyergyo': '#c51b8a',\n", "'balan': '#f768a1',\n", "'csikszereda': '#fecc5c',\n", "'vlahica': '#fd8d3c',\n", "'udvarhely': '#f03b20',\n", "'keresztur': '#bd0026',\n", "'szentgyorgy': '#253494',\n", "'barot': '#2c7fb8',\n", "'kezdi': '#41b6c4',\n", "'kovaszna': '#a1dab4',\n", "'segesvar': '#78c679',\n", "'vasarhely': '#31a354',\n", "'parajd': '#006837',\n", "'szovata': '#1c9099',\n", "'regen': '#016c59',\n", "'kolozsvar': '#993404'\n", "}\n", "cities = {\n", "'csikszereda': u'Csíkszereda',\n", "'udvarhely': u'Székelyudvarhely',\n", "'szentgyorgy': u'Sepsiszentgyörgy',\n", "'vasarhely': u'Marosvásárhely',\n", "'barot': u'Barót',\n", "'gyergyo': u'Gyergyószentmiklós',\n", "'kezdi': u'Kézdivásárhely',\n", "'keresztur': u'Székelykeresztúr',\n", "'kovaszna': u'Kovászna',\n", "'balan': u'Balánbánya',\n", "'vlahica': u'Szentegyháza',\n", "'parajd': u'Parajd',\n", "'szovata': u'Szováta',\n", "'regen': u'Szászrégen',\n", "'kolozsvar': u'Kolozsvár',\n", "'segesvar': u'Segesvár',\n", "'toplita': u'Maroshévíz'\n", "}\n", "ghisto={}\n", "fig,ax=plt.subplots(1,2,subplot_kw=dict(axisbg='#111122'),figsize=(17,5.65))\n", "for varos in varosok:\n", " histo={}\n", " if varos not in {\"kolozsvar\"}:\n", " for i in GX[varos]:\n", " if GX[varos][i] not in histo: histo[GX[varos][i]]=0\n", " histo[GX[varos][i]]+=1\n", " if GX[varos][i] not in ghisto: ghisto[GX[varos][i]]=0\n", " ghisto[GX[varos][i]]+=1\n", " x=np.array(range(len(histo.keys())))[::-1]+1\n", " y=np.sort(histo.values())\n", " w = np.polyfit(np.log(x),np.log(y),1) # obtaining regression parameters\n", " intersector=np.exp(w[0]*np.array(np.log(x))+w[1])\n", " ax[0].scatter(x,y,100,c=colors[varos], label=cities[varos])\n", " ax[0].plot(x,intersector,linewidth=2,color=colors[varos])\n", "ax[0].set_xlabel(u\"Helység gyakoriság szerinti rangsora\",fontproperties=prop,color=\"#666677\")\n", "ax[0].set_ylabel(u\"Helységek száma\",fontproperties=prop,color=\"#666677\")\n", "ax[0].grid(color='#333344', linestyle='--')\n", "leg=ax[0].legend(loc=1,framealpha=0)\n", "ax[0].set_yscale('log')\n", "ax[0].set_xscale('log')\n", "ax[0].spines['bottom'].set_color(\"#666677\")\n", "ax[0].spines['top'].set_color(\"#666677\")\n", "ax[0].spines['left'].set_color(\"#666677\")\n", "ax[0].spines['right'].set_color(\"#666677\")\n", "ax[0].tick_params(axis='x', colors=\"#666677\")\n", "ax[0].tick_params(axis='y', colors=\"#666677\")\n", "for label in ax[0].get_xticklabels():\n", " label.set_fontproperties(prop)\n", "for label in ax[0].get_yticklabels():\n", " label.set_fontproperties(prop)\n", "texts = leg.get_texts()\n", "for t in texts:\n", " t.set_color(\"#666677\")\n", " t.set_fontproperties(prop)\n", "ax[0].set_xlim(np.exp(-0.5),np.exp(6))\n", "ax[0].set_ylim(np.exp(-0.1),np.exp(6.5))\n", "\n", "x=np.array(range(len(ghisto.keys())))[::-1]+1\n", "y=np.sort(ghisto.values())\n", "w = np.polyfit(np.log(x),np.log(y),1) # obtaining regression parameters\n", "intersector=np.exp(w[0]*np.array(np.log(x))+w[1])\n", "ax[1].scatter(x,y,100,c=colors[varos], label=u\"Székelyföld\")\n", "ax[1].plot(x,intersector,linewidth=2,color=colors[varos])\n", "ax[1].set_xlabel(u\"Helység gyakoriság szerinti rangsora\",fontproperties=prop,color=\"#666677\")\n", "ax[1].set_ylabel(u\"Helységek száma\",fontproperties=prop,color=\"#666677\")\n", "ax[1].grid(color='#333344', linestyle='--')\n", "leg=ax[1].legend(loc=1,framealpha=0)\n", "ax[1].set_yscale('log')\n", "ax[1].set_xscale('log')\n", "texts = leg.get_texts()\n", "ax[1].spines['bottom'].set_color(\"#666677\")\n", "ax[1].spines['top'].set_color(\"#666677\")\n", "ax[1].spines['left'].set_color(\"#666677\")\n", "ax[1].spines['right'].set_color(\"#666677\")\n", "ax[1].tick_params(axis='x', colors=\"#666677\")\n", "ax[1].tick_params(axis='y', colors=\"#666677\")\n", "for label in ax[1].get_xticklabels():\n", " label.set_fontproperties(prop)\n", "for label in ax[1].get_yticklabels():\n", " label.set_fontproperties(prop)\n", "for t in texts:\n", " t.set_color(\"#666677\")\n", " t.set_fontproperties(prop)\n", "ax[1].set_xlim(np.exp(-0.5),np.exp(6))\n", "ax[1].set_ylim(np.exp(-0.1),np.exp(9.2))\n", "plt.suptitle(u\"A székelyföldi diaszpóra forrás- és célvárosainak rangsor-gyakoriság szabálya\",\\\n", " y=1,fontproperties=prop,color=\"#666677\",size=15)\n", "plt.savefig('szekelyfold-rangsor-meret-szabaly1.png',bbox_inches = 'tight', pad_inches = 0.1, dpi=150,facecolor=\"#111122\", edgecolor='#666677')\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "ghisto={}\n", "fig,ax=plt.subplots(1,2,subplot_kw=dict(axisbg='#111122'),figsize=(17,5.65))\n", "for varos in varosok:\n", " histo={}\n", " if varos not in {\"kolozsvar\"}:\n", " for i in GX[varos]:\n", " if GX[varos][i] not in histo: histo[GX[varos][i]]=0\n", " histo[GX[varos][i]]+=1\n", " if GX[varos][i] not in ghisto: ghisto[GX[varos][i]]=0\n", " ghisto[GX[varos][i]]+=1\n", " x=np.array(range(len(histo.values())))[::-1]+1\n", " y=np.sort(histo.keys())\n", " w = np.polyfit(np.log(x),np.log(y),1) # obtaining regression parameters\n", " intersector=np.exp(w[0]*np.array(np.log(x))+w[1])\n", " print varos,w\n", " ax[0].scatter(x,y,100,c=colors[varos], label=cities[varos])\n", " ax[0].plot(x,intersector,linewidth=2,color=colors[varos])\n", "ax[0].set_xlabel(u\"Helység méret szerinti rangsora\",fontproperties=prop,color=\"#666677\")\n", "ax[0].set_ylabel(u\"Helység mérete\",fontproperties=prop,color=\"#666677\")\n", "ax[0].grid(color='#333344', linestyle='--')\n", "leg=ax[0].legend(loc=1,framealpha=0)\n", "ax[0].set_yscale('log')\n", "ax[0].set_xscale('log')\n", "ax[0].spines['bottom'].set_color(\"#666677\")\n", "ax[0].spines['top'].set_color(\"#666677\")\n", "ax[0].spines['left'].set_color(\"#666677\")\n", "ax[0].spines['right'].set_color(\"#666677\")\n", "ax[0].tick_params(axis='x', colors=\"#666677\")\n", "ax[0].tick_params(axis='y', colors=\"#666677\")\n", "for label in ax[0].get_xticklabels():\n", " label.set_fontproperties(prop)\n", "for label in ax[0].get_yticklabels():\n", " label.set_fontproperties(prop)\n", "texts = leg.get_texts()\n", "for t in texts:\n", " t.set_color(\"#666677\")\n", " t.set_fontproperties(prop)\n", "ax[0].set_xlim(np.exp(-0.5),np.exp(6))\n", "ax[0].set_ylim(np.exp(-0.1),np.exp(7.9))\n", "\n", "x=np.array(range(len(ghisto.values())))[::-1]+1\n", "y=np.sort(ghisto.keys())\n", "z=[1,1000]\n", "w = np.polyfit(np.log(x),np.log(y),1) # obtaining regression parameters\n", "intersector=np.exp(w[0]*np.array(np.log(z))+w[1])\n", "print w\n", "ax[1].scatter(x,y,100,c=colors[varos], label=u\"Székelyföld\")\n", "ax[1].plot(z,intersector,linewidth=2,linestyle=\"--\",color=colors['toplita'])\n", "\n", "x=(np.array(range(len(ghisto.values())))[::-1]+1)[10:87]\n", "y=np.sort(ghisto.keys())[10:87]\n", "w = np.polyfit(np.log(x),np.log(y),1) # obtaining regression parameters\n", "intersector=np.exp(w[0]*np.array(np.log(x))+w[1])\n", "ax[1].scatter(x,y,100,c=colors[varos],)\n", "ax[1].plot(x,intersector,linewidth=2,color=colors['csikszereda'])\n", "\n", "ax[1].set_xlabel(u\"Helység méret szerinti rangsora\",fontproperties=prop,color=\"#666677\")\n", "ax[1].set_ylabel(u\"Helység mérete\",fontproperties=prop,color=\"#666677\")\n", "ax[1].grid(color='#333344', linestyle='--')\n", "leg=ax[1].legend(loc=1,framealpha=0)\n", "ax[1].set_yscale('log')\n", "ax[1].set_xscale('log')\n", "texts = leg.get_texts()\n", "ax[1].spines['bottom'].set_color(\"#666677\")\n", "ax[1].spines['top'].set_color(\"#666677\")\n", "ax[1].spines['left'].set_color(\"#666677\")\n", "ax[1].spines['right'].set_color(\"#666677\")\n", "ax[1].tick_params(axis='x', colors=\"#666677\")\n", "ax[1].tick_params(axis='y', colors=\"#666677\")\n", "for label in ax[1].get_xticklabels():\n", " label.set_fontproperties(prop)\n", "for label in ax[1].get_yticklabels():\n", " label.set_fontproperties(prop)\n", "for t in texts:\n", " t.set_color(\"#666677\")\n", " t.set_fontproperties(prop)\n", "ax[1].set_xlim(np.exp(-0.5),np.exp(6))\n", "ax[1].set_ylim(np.exp(-0.1),np.exp(8.6))\n", "plt.suptitle(u\"A székelyföldi diaszpóra forrás- és célvárosainak rangsor-méret szabálya\",\\\n", " y=1,fontproperties=prop,color=\"#666677\",size=15)\n", "plt.savefig('szekelyfold-rangsor-meret-szabaly2.png',bbox_inches = 'tight', pad_inches = 0.1, dpi=150,facecolor=\"#111122\", edgecolor='#666677')\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "ghisto={}\n", "fig,ax=plt.subplots(1,2,subplot_kw=dict(axisbg='#111122'),figsize=(17,5.65))\n", "for varos in varosok:\n", " histo={}\n", " if varos not in {\"kolozsvar\"}:\n", " for i in GX[varos]:\n", " if GX[varos][i] not in histo: histo[GX[varos][i]]=0\n", " histo[GX[varos][i]]+=1\n", " if GX[varos][i] not in ghisto: ghisto[GX[varos][i]]=0\n", " ghisto[GX[varos][i]]+=1\n", " histo2=histo.copy()\n", " for i in histo2:\n", " if histo[i]<3: histo.pop(i)\n", " y= histo.values()\n", " x= histo.keys()\n", " z=[1,1000]\n", " w = np.polyfit(np.log(x),np.log(y),1) # obtaining regression parameters\n", " intersector=np.exp(w[0]*np.array(np.log(z))+w[1])\n", " print varos,w\n", " ax[0].scatter(x,y,100,c=colors[varos], label=cities[varos])\n", " ax[0].plot(z,intersector,linewidth=2,color=colors[varos])\n", "ax[0].set_xlabel(u\"Helység gyakorisága\",fontproperties=prop,color=\"#666677\")\n", "ax[0].set_ylabel(u\"Helység mérete\",fontproperties=prop,color=\"#666677\")\n", "ax[0].grid(color='#333344', linestyle='--')\n", "leg=ax[0].legend(loc=1,framealpha=0)\n", "ax[0].set_yscale('log')\n", "ax[0].set_xscale('log')\n", "ax[0].spines['bottom'].set_color(\"#666677\")\n", "ax[0].spines['top'].set_color(\"#666677\")\n", "ax[0].spines['left'].set_color(\"#666677\")\n", "ax[0].spines['right'].set_color(\"#666677\")\n", "ax[0].tick_params(axis='x', colors=\"#666677\")\n", "ax[0].tick_params(axis='y', colors=\"#666677\")\n", "for label in ax[0].get_xticklabels():\n", " label.set_fontproperties(prop)\n", "for label in ax[0].get_yticklabels():\n", " label.set_fontproperties(prop)\n", "texts = leg.get_texts()\n", "for t in texts:\n", " t.set_color(\"#666677\")\n", " t.set_fontproperties(prop)\n", "ax[0].set_xlim(np.exp(-0.5),np.exp(6))\n", "ax[0].set_ylim(np.exp(-0.1),np.exp(7.9))\n", "\n", "ghisto2=ghisto.copy()\n", "for i in ghisto2:\n", " if ghisto[i]<3: ghisto.pop(i)\n", "y=ghisto.values()\n", "x=ghisto.keys()\n", "z=[1,1000]\n", "w = np.polyfit(np.log(x),np.log(y),1) # obtaining regression parameters\n", "intersector=np.exp(w[0]*np.array(np.log(z))+w[1])\n", "print w\n", "ax[1].scatter(x,y,100,c=colors[varos], label=u\"Székelyföld\")\n", "ax[1].plot(z,intersector,linewidth=2,color=colors[varos])\n", "ax[1].set_xlabel(u\"Helység gyakorisága\",fontproperties=prop,color=\"#666677\")\n", "ax[1].set_ylabel(u\"Helység mérete\",fontproperties=prop,color=\"#666677\")\n", "ax[1].grid(color='#333344', linestyle='--')\n", "leg=ax[1].legend(loc=1,framealpha=0)\n", "ax[1].set_yscale('log')\n", "ax[1].set_xscale('log')\n", "texts = leg.get_texts()\n", "ax[1].spines['bottom'].set_color(\"#666677\")\n", "ax[1].spines['top'].set_color(\"#666677\")\n", "ax[1].spines['left'].set_color(\"#666677\")\n", "ax[1].spines['right'].set_color(\"#666677\")\n", "ax[1].tick_params(axis='x', colors=\"#666677\")\n", "ax[1].tick_params(axis='y', colors=\"#666677\")\n", "for label in ax[1].get_xticklabels():\n", " label.set_fontproperties(prop)\n", "for label in ax[1].get_yticklabels():\n", " label.set_fontproperties(prop)\n", "for t in texts:\n", " t.set_color(\"#666677\")\n", " t.set_fontproperties(prop)\n", "ax[1].set_xlim(np.exp(-0.5),np.exp(6))\n", "ax[1].set_ylim(np.exp(-0.1),np.exp(8.6))\n", "plt.suptitle(u\"A székelyföldi diaszpóra forrás- és célvárosainak gyakoriság-méret szabálya\",\\\n", " y=1,fontproperties=prop,color=\"#666677\",size=15)\n", "plt.savefig('szekelyfold-rangsor-meret-szabaly3.png',bbox_inches = 'tight', pad_inches = 0.1, dpi=150,facecolor=\"#111122\", edgecolor='#666677')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "finish data processing of power law cityshare" ] }, { "cell_type": "code", "execution_count": 2539, "metadata": { "collapsed": false }, "outputs": [], "source": [ "for i in GG[\"cities\"]:\n", " GG[\"cities\"][i][\"count\"]=0\n", "\n", "G={\"cities\":{}}\n", "for i in GG[\"cities\"]:\n", " for j in GG[\"cities\"][i]:\n", " if j not in {\"country\",\"county\",\"orig\",\"coords\",\"count\"}:\n", " if GG[\"cities\"][i][j][\"country\"] not in G[\"cities\"]:\n", " G[\"cities\"][GG[\"cities\"][i][j][\"country\"]]={}\n", " if \"coords\" not in G[\"cities\"][GG[\"cities\"][i][j][\"country\"]]:\n", " G[\"cities\"][GG[\"cities\"][i][j][\"country\"]][\"coords\"]=gountrygeo[GG[\"cities\"][i][j][\"country\"]]\n", " if \"count\" not in G[\"cities\"][GG[\"cities\"][i][j][\"country\"]]:\n", " G[\"cities\"][GG[\"cities\"][i][j][\"country\"]][\"count\"]=0\n", " \n", " GG[\"cities\"][i][j][\"count\"]=(cityshare[j][i]*lakos[j])\n", " GG[\"cities\"][i][\"count\"]+=GG[\"cities\"][i][j][\"count\"]\n", " \n", " G[\"cities\"][GG[\"cities\"][i][j][\"country\"]][\"count\"]+=GG[\"cities\"][i][j][\"count\"]\n", " if j not in G[\"cities\"][GG[\"cities\"][i][j][\"country\"]]: \n", " G[\"cities\"][GG[\"cities\"][i][j][\"country\"]][j]=\\\n", " {\"count\":GG[\"cities\"][i][j][\"count\"],\"coords\":[0,0],\"country\":GG[\"cities\"][i][j][\"country\"]}\n", " else: G[\"cities\"][GG[\"cities\"][i][j][\"country\"]][j][\"count\"]+=GG[\"cities\"][i][j][\"count\"]\n", " \n", "file('data1b.json','w').write(json.dumps(GG)) \n", "file('data2b.json','w').write(json.dumps(G))" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "for i in GG[\"cities\"]:\n", " GG[\"cities\"][i][\"count\"]=0\n", "\n", "G={\"cities\":{}}\n", "for i in GG[\"cities\"]:\n", " for j in GG[\"cities\"][i]:\n", " if j not in {\"country\",\"county\",\"orig\",\"coords\",\"count\"}:\n", " if GG[\"cities\"][i][j][\"country\"] not in G[\"cities\"]:\n", " G[\"cities\"][GG[\"cities\"][i][j][\"country\"]]={}\n", " if \"coords\" not in G[\"cities\"][GG[\"cities\"][i][j][\"country\"]]:\n", " G[\"cities\"][GG[\"cities\"][i][j][\"country\"]][\"coords\"]=gountrygeo[GG[\"cities\"][i][j][\"country\"]]\n", " if \"count\" not in G[\"cities\"][GG[\"cities\"][i][j][\"country\"]]:\n", " G[\"cities\"][GG[\"cities\"][i][j][\"country\"]][\"count\"]=0\n", " \n", " country=GG[\"cities\"][i][j][\"country\"]\n", " if country not in cr: country=\"Other\"\n", " GG[\"cities\"][i][j][\"count\"]=(cityshare[j][i]*R2[j][country])\n", " GG[\"cities\"][i][\"count\"]+=GG[\"cities\"][i][j][\"count\"]\n", " \n", " G[\"cities\"][GG[\"cities\"][i][j][\"country\"]][\"count\"]+=GG[\"cities\"][i][j][\"count\"]\n", " if j not in G[\"cities\"][GG[\"cities\"][i][j][\"country\"]]: \n", " G[\"cities\"][GG[\"cities\"][i][j][\"country\"]][j]=\\\n", " {\"count\":GG[\"cities\"][i][j][\"count\"],\"coords\":[0,0],\"country\":GG[\"cities\"][i][j][\"country\"]}\n", " else: G[\"cities\"][GG[\"cities\"][i][j][\"country\"]][j][\"count\"]+=GG[\"cities\"][i][j][\"count\"]\n", " \n", "file('data1b.json','w').write(json.dumps(GG)) \n", "file('data2b.json','w').write(json.dumps(G))" ] }, { "cell_type": "code", "execution_count": 2573, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "215059" ] }, "execution_count": 2573, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(sum(lakos.values())-lakos['kolozsvar'])/2" ] }, { "cell_type": "code", "execution_count": 2531, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "0.22765318513511468" ] }, "execution_count": 2531, "metadata": {}, "output_type": "execute_result" } ], "source": [ "1-sum([R2[i]['Romania'] for i in R2])/(sum(lakos.values())-lakos['kolozsvar'])" ] }, { "cell_type": "code", "execution_count": 2586, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "216000" ] }, "execution_count": 2586, "metadata": {}, "output_type": "execute_result" } ], "source": [ "60**3" ] }, { "cell_type": "code", "execution_count": 2533, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "15466.487634729145" ] }, "execution_count": 2533, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sum([R2[i]['Germany'] for i in R2])" ] }, { "cell_type": "code", "execution_count": 2523, "metadata": { "collapsed": false, "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "([28102.000000000007,\n", " 13285.0,\n", " 6501.999999999999,\n", " 18377.0,\n", " 8567.0,\n", " 37980.0,\n", " 5864.000000000002,\n", " 54311.99999999999,\n", " 9491.000000000002,\n", " 10264.999999999998,\n", " 33281.0,\n", " 134290.0,\n", " 6820.000000000001,\n", " 10234.000000000004,\n", " 18490.999999999996,\n", " 34256.99999999999],\n", " 430118.0)" ] }, "execution_count": 2523, "metadata": {}, "output_type": "execute_result" } ], "source": [ "[sum(R2[i].values()) for i in R2],sum([sum(R2[i].values()) for i in R2])" ] }, { "cell_type": "code", "execution_count": 2534, "metadata": { "collapsed": true }, "outputs": [], "source": [ "GX={}\n", "Gsum={}\n", "cityshare={}\n", "for i in GG[\"cities\"]:\n", " for j in GG[\"cities\"][i]:\n", " if j not in {\"country\",\"county\",\"orig\",\"coords\",\"count\"}:\n", " if j not in GX:\n", " GX[j]={}\n", " cityshare[j]={}\n", " if i not in GX[j]:\n", " GX[j][i]=0\n", " cityshare[j][i]=2\n", " GX[j][i]+=GG[\"cities\"][i][j][\"count\"]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Emigration values" ] }, { "cell_type": "code", "execution_count": 2346, "metadata": { "collapsed": false }, "outputs": [], "source": [ "#global\n", "R3={}\n", "for i in R2:\n", " R3[i]=100-int(R2[i][\"Romania\"]*100/sum(R2[i].values()))\n", "file('data3.json','w').write(json.dumps(R3))" ] }, { "cell_type": "code", "execution_count": 2347, "metadata": { "collapsed": true }, "outputs": [], "source": [ "#local\n", "megye={\n", "'csikszereda': 'HR',\n", "'udvarhely': 'HR',\n", "'szentgyorgy': 'CV',\n", "'vasarhely': 'MS',\n", "'barot': 'CV',\n", "'gyergyo': 'HR',\n", "'kezdi': 'CV',\n", "'keresztur': 'HR',\n", "'kovaszna': 'CV',\n", "'balan': 'HR',\n", "'vlahica': 'HR',\n", "'parajd': 'HR',\n", "'szovata': 'MS',\n", "'regen': 'MS',\n", "'kolozsvar': 'CJ',\n", "'segesvar': 'MS',\n", "'toplita': 'HR'\n", "}\n", "E3={}\n", "for i in E2:\n", " E3[i]=100-int(E2[i][megye[i]]*100/sum(E2[i].values()))\n", "file('data4.json','w').write(json.dumps(E3))" ] }, { "cell_type": "code", "execution_count": 1772, "metadata": { "collapsed": false }, "outputs": [], "source": [ "cd.append('Other')\n", "ce.append('Other')" ] }, { "cell_type": "code", "execution_count": 1773, "metadata": { "collapsed": false }, "outputs": [], "source": [ "cities = {\n", "'csikszereda': 'Csíkszereda',\n", "'udvarhely': 'Székelyudvarhely',\n", "'szentgyorgy': 'Sepsiszentgyörgy',\n", "'vasarhely': 'Marosvásárhely',\n", "'barot': 'Barót',\n", "'gyergyo': 'Gyergyószentmiklós',\n", "'kezdi': 'Kézdivásárhely',\n", "'keresztur': 'Székelykeresztúr',\n", "'kovaszna': 'Kovászna',\n", "'balan': 'Balánbánya',\n", "'vlahica': 'Szentegyháza',\n", "'parajd': 'Parajd',\n", "'szovata': 'Szováta',\n", "'regen': 'Szászrégen',\n", "'kolozsvar': 'Kolozsvár',\n", "'segesvar': 'Segesvár',\n", "'toplita': 'Maroshévíz',\n", "'Italy':'Olaszország',\n", "'Spain':'Spanyolország',\n", "'Germany':'Németország',\n", "'Hungary':'Magyarország',\n", "'United Kingdom':'Egyesült Királyság',\n", "'Other':'Más',\n", "'France':'Franciaország',\n", "'United States':'Egyesült Államok',\n", "'Austria':'Ausztria',\n", "'Canada':'Kanada',\n", "'Denmark':'Dánia',\n", "'Sweden':'Svédország',\n", "'Switzerland':'Svájc',\n", "'Bucharest':'Bukarest',\n", "'HR':'Hargita',\n", "'BH':'Bihar',\n", "'BV':'Brassó',\n", "'TM':'Temes',\n", "'CJ':'Kolozs',\n", "'MS':'Maros',\n", "'CV':'Kovászna',\n", "'SB':'Szeben',\n", "'SJ':'Szilágy',\n", "'BC':'Bákó',\n", "'Other':'Más'\n", "}" ] }, { "cell_type": "code", "execution_count": 1774, "metadata": { "collapsed": true }, "outputs": [], "source": [ "colors = {\n", "'toplita': '#dd1c77',\n", "'gyergyo': '#c51b8a',\n", "'balan': '#f768a1',\n", "'csikszereda': '#fecc5c',\n", "'vlahica': '#fd8d3c',\n", "'udvarhely': '#f03b20',\n", "'keresztur': '#bd0026',\n", "'szentgyorgy': '#253494',\n", "'barot': '#2c7fb8',\n", "'kezdi': '#41b6c4',\n", "'kovaszna': '#a1dab4',\n", "'segesvar': '#78c679',\n", "'vasarhely': '#31a354',\n", "'parajd': '#006837',\n", "'szovata': '#1c9099',\n", "'regen': '#016c59',\n", "'kolozsvar': '#993404'}" ] }, { "cell_type": "code", "execution_count": 1775, "metadata": { "collapsed": false }, "outputs": [], "source": [ "F={\"links\":[],\"nodes\":[]}\n", "fd={}\n", "for i in range(len(list(set(cd+D2.keys())))):\n", " if list(set(cd+D2.keys()))[i] in colors:\n", " color=colors[list(set(cd+D2.keys()))[i]]\n", " else: color=\"#667\"\n", " F[\"nodes\"].append({\"name\":cities[list(set(cd+D2.keys()))[i]],\"fill\":color})\n", " fd[list(set(cd+D2.keys()))[i]]=i\n", "for i in D2:\n", " for j in D2[i]:\n", " F[\"links\"].append({\"source\":fd[i],\"target\":fd[j],\"value\":D2[i][j]})\n", "file('sk1.json','w').write(json.dumps(F))\n", "\n", "F={\"links\":[],\"nodes\":[]}\n", "fd={}\n", "for i in range(len(list(set(ce+E2.keys())))):\n", " if list(set(ce+E2.keys()))[i] in colors:\n", " color=colors[list(set(ce+E2.keys()))[i]]\n", " else: color=\"#667\"\n", " F[\"nodes\"].append({\"name\":cities[list(set(ce+E2.keys()))[i]],\"fill\":color})\n", " fd[list(set(ce+E2.keys()))[i]]=i\n", "for i in E2:\n", " for j in E2[i]:\n", " F[\"links\"].append({\"source\":fd[i],\"target\":fd[j],\"value\":E2[i][j]})\n", "file('sk2.json','w').write(json.dumps(F))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Circle packing" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For second part, unused now" ] }, { "cell_type": "code", "execution_count": 56, "metadata": { "collapsed": false }, "outputs": [], "source": [ "studlist=[]\n", "unilist=[]\n", "for i in P:\n", " if 'stud' in i:\n", " if ' at ' in i['stud']:\n", " a1=i['stud'].find(' at ')\n", " unilist.append(i['stud'][a1+4:])\n", " if i['stud'][:a1]!='':\n", " studlist.append(i['stud'][1:a1])" ] }, { "cell_type": "code", "execution_count": 57, "metadata": { "collapsed": false }, "outputs": [], "source": [ "worklist=[]\n", "for i in P:\n", " if 'work' in i:\n", " if ' at ' in i['work']:\n", " a1=i['work'].find(' at ')\n", " if i['work'][:a1]!='':\n", " worklist.append(i['work'][:a1])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Kovetkezo blogbejgyzesben vizsgaljuk a foglalkozasokat, elsoben csak azt hogy ki hol merre van\n" ] }, { "cell_type": "code", "execution_count": 47, "metadata": { "collapsed": false }, "outputs": [], "source": [ "def workdict(s):\n", " if \"Fodrász\" in s\\\n", " or \"manikur\" in s \\\n", " or \"Manikur\" in s \\\n", " or \"Manicur\" in s \\\n", " or \"manicur\" in s \\\n", " or \"Műkörmös\" in s \\\n", " or \"airdresser\" in s \\\n", " or \"hair-cutter\" in s \\\n", " or \"ozmetikus\" in s \\\n", " or \"Fodrasz\" in s \\\n", " or \"Stylist\" in s \\\n", " or \"manichiur\" in s \\\n", " or \"edikűr\" in s \\\n", " or \"Nail Technician\" in s \\\n", " or \"köröm\" in s: return u\"Fodrász/Kozmetikus\"\n", " elif \"Engineer\" in s \\\n", " or \"mérnök\" in s \\\n", " or \"építész\" in s \\\n", " or \"rchitect\" in s \\\n", " or \"Inginer\" in s \\\n", " or \"arhitect\" in s \\\n", " or \"inginer\" in s \\\n", " or \"AutoCAD\" in s \\\n", " or \"ing silvic\" in s \\\n", " or \"Sc.Electrica\" in s \\\n", " or \"Land Surveyor\" in s \\\n", " or \"Cartographer\" in s : return u\"Mérnök/Műépítész\"\n", " elif \"ügyvéd\" in s\\\n", " or \"avocat\" in s \\\n", " or \"Avocat\" in s \\\n", " or \"Lawyer\" in s : return u\"Ügyvéd\"\n", " elif \"Montessori Educator\" in s \\\n", " or \"szociológus\" in s \\\n", " or \"Graduate Student Researcher\" in s \\\n", " or \"Teaching Assistant\" in s \\\n", " or \"Tanar\" in s \\\n", " or \"Tanár\" in s \\\n", " or \"Tanàr\" in s \\\n", " or \"studying\" in s \\\n", " or \"anuló\" in s \\\n", " or \"Diák\" in s \\\n", " or \"edagóg\" in s \\\n", " or \"Lab Assistant\" in s \\\n", " or \"Rector\" in s \\\n", " or \"doktorandusz\" in s \\\n", " or \"Teacher\" in s \\\n", " or \"tanító\" in s \\\n", " or \"tanitó\" in s \\\n", " or \"tanár\" in s \\\n", " or \"Profesor\" in s \\\n", " or \"Student\" in s \\\n", " or \"tudent\" in s \\\n", " or \"szakértő\" in s \\\n", " or \"Archaeol\" in s \\\n", " or \"tanácsos\" in s \\\n", " or \"rofessor\" in s \\\n", " or \"Rektor\" in s \\\n", " or \"PhD\" in s \\\n", " or \"adjunktus\" in s \\\n", " or \"niversity\" in s \\\n", " or \"laboráns\" in s \\\n", " or \"Science\" in s \\\n", " or \"TANÍTÓ\" in s \\\n", " or \"Psycholog\" in s \\\n", " or \"pszicho\" in s \\\n", " or \"Psziho\" in s \\\n", " or \"psziho\" in s \\\n", " or \"Pszicho\" in s \\\n", " or \"Biologist\" in s \\\n", " or \"oktatási vezető\" in s \\\n", " or \"szakfelügyelő\" in s \\\n", " or \"történelem tanár\" in s: return u\"Tanár/Kutató\"\n", " elif \"eveloper\" in s \\\n", " or \"evelopment\" in s \\\n", " or \"webdesign\" in s \\\n", " or \"IT Service\" in s \\\n", " or \"Global masterdata\" in s \\\n", " or \"software engineer\" in s \\\n", " or \"ASM\" in s: return u\"Informatikus\"\n", " elif \"Veterinarian\" in s \\\n", " or \"Dentist\" in s \\\n", " or \"orvos\" in s \\\n", " or \"Orvos\" in s \\\n", " or \"Doctor\" in s \\\n", " or \"medic\" in s \\\n", " or \"rtoped\" in s \\\n", " or \"Orthodontist\" in s \\\n", " or \"Fogtechnikus\" in s \\\n", " or \"Pharma\" in s \\\n", " or \"Dietitian\" in s \\\n", " or \"rezidens\" in s \\\n", " or \"Rezident\" in s \\\n", " or \"Resident\" in s \\\n", " or \"farmacist\" in s \\\n", " or \"Farmacist\" in s \\\n", " or \"Dr.\" in s \\\n", " or \"Health\" in s \\\n", " or \"Optometrista\" in s \\\n", " or \"Medic\" in s: return u\"Orvos/Gyógyszerész\"\n", " elif \"Trainer\" in s \\\n", " or \"Gyógypedagógus\" in s \\\n", " or \"Gyógytornász\" in s \\\n", " or \"kinetoterapeuta\" in s \\\n", " or \"Coach\" in s \\\n", " or \"Instructor\" in s \\\n", " or \"itness\" in s \\\n", " or \"edző\" in s \\\n", " or \"Edzo\" in s \\\n", " or \"sport\" in s \\\n", " or \"MTB Rider\" in s \\\n", " or \"Játékos\" in s \\\n", " or \"thlete\" in s \\\n", " or \"kapus\" in s \\\n", " or \"oalkeeper\" in s \\\n", " or \"hátvéd\" in s \\\n", " or \"Védő\" in s \\\n", " or \"STRIKER\" in s \\\n", " or \"Forward\" in s \\\n", " or \"Versenyzo\" in s \\\n", " or \"Versenyfelügyelő\" in s \\\n", " or \"Defense\" in s \\\n", " or \"rbitru\" in s \\\n", " or \"Point Guard\" in s \\\n", " or \"Beálló\" in s \\\n", " or \"estnevel\" in s \\\n", " or \"beálló\" in s \\\n", " or \"Masseur\" in s \\\n", " or \"özéppályás\" in s \\\n", " or \"Player\" in s: return u\"Sportoló/Edző/Bíró\"\n", " elif \"Analyst\" in s \\\n", " or \"Online Communication\" in s \\\n", " or \"Communication Assistant\" in s \\\n", " or \"Marketing Assistant\" in s \\\n", " or \"Relations Assistant\" in s \\\n", " or \"Marketing Officer\" in s \\\n", " or \"Marketing Specialist\" in s \\\n", " or \"Online Marketing\" in s \\\n", " or \"PR & Marketing\" in s \\\n", " or \"Public Relations\" in s \\\n", " or \"PR Officer\" in s \\\n", " or \"Asistent PR\" in s \\\n", " or \"Designer\" in s \\\n", " or \"dministrator\" in s \\\n", " or \"dminisztrátor\" in s \\\n", " or \"dminisztr\" in s \\\n", " or \"Adm.\" in s \\\n", " or \"Chief Accountant\" in s \\\n", " or \"Oficer credite\" in s \\\n", " or \"Forwarder\" in s \\\n", " or \"SEF SERVICIU\" in s \\\n", " or \"Managing Partner - MENA\" in s \\\n", " or \"CSR\" in s \\\n", " or \"oordinator\" in s \\\n", " or \"oordonator\" in s \\\n", " or \"könyvelő\" in s \\\n", " or \"Project Officer\" in s \\\n", " or \"Comptroller\" in s \\\n", " or \"titkár\" in s \\\n", " or \"Titkár\" in s \\\n", " or \"Internet Marketer\" in s \\\n", " or \"secretar\" in s \\\n", " or \"Supplier Relations Advisor\" in s \\\n", " or \"Secretar\" in s \\\n", " or \"SECRETAR\" in s \\\n", " or \"contabil\" in s \\\n", " or \"Contabil\" in s \\\n", " or \"ccountant\" in s \\\n", " or \"Planner\" in s \\\n", " or \"Controlling\" in s \\\n", " or \"Accounts Payable\" in s \\\n", " or \"Irodavezető\" in s \\\n", " or \"QMC\" in s \\\n", " or \"Osztályvezető\" in s \\\n", " or \"Quality Control\" in s \\\n", " or \"Account Representative\" in s \\\n", " or \"Order Managment\" in s \\\n", " or \"Tanácsadó\" in s \\\n", " or \"főmunkatárs\" in s \\\n", " or \"Economist\" in s \\\n", " or \"Auditor\" in s \\\n", " or \"Inspector\" in s \\\n", " or \"Intézményvezető helyettes\" in s \\\n", " or \"Plenum member, competition concillor\" in s \\\n", " or \"Key Account Operator\" in s: return u\"Irodai alkalmazott\"\n", " elif \"Agent\" in s \\\n", " or \"Komissiós\" in s \\\n", " or \"Commissioner\" in s \\\n", " or \"Tanácsadó\" in s \\\n", " or \"Consultant\" in s \\\n", " or \"Sales\" in s \\\n", " or \"Kassza\" in s \\\n", " or \"Receptionist\" in s \\\n", " or \"Recepcionist\" in s \\\n", " or \"hôtel\" in s \\\n", " or \"eladó\" in s \\\n", " or \"elado\" in s \\\n", " or \"Sales Reprezentative\" in s \\\n", " or \"Consultant Vanzari\" in s \\\n", " or \"Reprezentant vânzări\" in s \\\n", " or \"Bezirks\" in s \\\n", " or \"ügynök\" in s \\\n", " or \"Front Officer\" in s \\\n", " or \"özvetít\" in s \\\n", " or \"Forgalamzo\" in s \\\n", " or \"Broker\" in s \\\n", " or \"üzletvezető\" in s \\\n", " or \"elarusito\" in s \\\n", " or \"ügyfélszolgálat\" in s \\\n", " or \"Technical Support\" in s \\\n", " or \"Care Assistant\" in s \\\n", " or \"vanzato\" in s \\\n", " or \"Eladó\" in s \\\n", " or \"DC Support Executive\" in s \\\n", " or \"Elárus\" in s: return u\"Eladó/Ügynök/Recepciós\"\n", " elif \"Cook (servant)\" in s \\\n", " or \"Bartender\" in s \\\n", " or \"cukrász\" in s \\\n", " or \"kemencés\" in s \\\n", " or \"Waitress\" in s \\\n", " or \"Le chef\" in s \\\n", " or \"chelner\" in s \\\n", " or \"Pizza\" in s \\\n", " or \"Báros\" in s \\\n", " or \"büfés\" in s \\\n", " or \"waiter\" in s \\\n", " or \"Waiter\" in s \\\n", " or \"Barman\" in s \\\n", " or \"Table host\" in s \\\n", " or \"kiszolgáló\" in s \\\n", " or \"Pincer\" in s \\\n", " or \"elszolgál\" in s \\\n", " or \"ospatar\" in s \\\n", " or \"Cafengiu\" in s \\\n", " or \"Chef\" in s \\\n", " or \"PÉK\" in s \\\n", " or \"zakács\" in s \\\n", " or \"zeletelő\" in s \\\n", " or \"emencés\" in s \\\n", " or \"Barista\" in s \\\n", " or \"Food and Beverage\" in s \\\n", " or \"Pincér\" in s: return u\"Bartender/Pincér/Szakács\"\n", " elif \"Reporter\" in s \\\n", " or \"Stage management\" in s \\\n", " or \"rendezvényszervező asszisztens\" in s \\\n", " or \"Photo\" in s \\\n", " or \"Fotó\" in s \\\n", " or \"Fénykép\" in s \\\n", " or \"Fotolaborator\" in s \\\n", " or \"Press\" in s \\\n", " or \"music director\" in s \\\n", " or \"2D Animator\" in s \\\n", " or \"Sound & Light\" in s \\\n", " or \"Editor\" in s \\\n", " or \"Model\" in s \\\n", " or \"referen\" in s \\\n", " or \"Referen\" in s \\\n", " or \"szerkeszt\" in s \\\n", " or \"Producer\" in s \\\n", " or \"ournalist\" in s \\\n", " or \"Kreatív\" in s \\\n", " or \"Correspondent\" in s \\\n", " or \"reklám\" in s \\\n", " or \"rafikus\" in s \\\n", " or \"műsor\" in s \\\n", " or \"Hang és fény\" in s \\\n", " or \"Nyomdász\" in s \\\n", " or \"tipograf\" in s \\\n", " or \"usorvezeto\" in s \\\n", " or \"vágó\" in s \\\n", " or \"újság\" in s \\\n", " or \"Graphic Design\" in s \\\n", " or \"Történelem tematikájú műsor\" in s \\\n", " or \"Presenter\" in s: return u\"Médiamunkás\"\n", " elif \"Author\" in s \\\n", " or \"DJ\" in s \\\n", " or \"Actor\" in s \\\n", " or \"Drummer\" in s \\\n", " or \"Singer\" in s \\\n", " or \"Bőgős\" in s \\\n", " or \"táncos\" in s \\\n", " or \"Táncos\" in s \\\n", " or \"Dansator\" in s \\\n", " or \"Prímás\" in s \\\n", " or \"artist\" in s \\\n", " or \"Artist\" in s \\\n", " or \"zenész\" in s \\\n", " or \"zínész\" in s \\\n", " or \"Bass\" in s \\\n", " or \"Solista\" in s \\\n", " or \"Piercer\" in s \\\n", " or \"tárlatvezető\" in s \\\n", " or \"énekes\" in s \\\n", " or \"Énekes\" in s \\\n", " or \"Guitar\" in s \\\n", " or \"GitáR\" in s \\\n", " or \"művész\" in s \\\n", " or \"axophon\" in s \\\n", " or \"Dancer\" in s: return u\"Zenész/Művész\"\n", " elif \"Owner\" in s \\\n", " or \"Tulajdonos\" in s \\\n", " or \"Director\" in s \\\n", " or \"Manager\" in s \\\n", " or \"Management\" in s \\\n", " or \"lnök\" in s \\\n", " or \"főnők\" in s \\\n", " or \"gazgat\" in s \\\n", " or \"Leader\" in s \\\n", " or \"Űgyvezető\" in s \\\n", " or \"gyvezető\" in s \\\n", " or \"tulajdonos\" in s \\\n", " or \"Kirendeltségvezető\" in s \\\n", " or \"Managing Partner\" in s \\\n", " or \"Chief\" in s \\\n", " or \"Boss\" in s \\\n", " or \"elönk\" in s \\\n", " or \"cégvezető\" in s \\\n", " or \"President\" in s \\\n", " or \"fővezető\" in s \\\n", " or \"reşedint\" in s \\\n", " or \"Főnök\" in s \\\n", " or \"fönök\" in s \\\n", " or \"Fönök\" in s \\\n", " or \"Proprietar\" in s \\\n", " or \"C.E.O.\" in s \\\n", " or \"Founder\" in s: return u\"Igazgató/Vállalkozó\"\n", " elif \"Nevelo\" in s \\\n", " or \"Au Pair\" in s \\\n", " or \"óvónő\" in s \\\n", " or \"nevelo\" in s \\\n", " or \"asszisztens\" in s \\\n", " or \"aszisztens\" in s \\\n", " or \"szociális munkás\" in s \\\n", " or \"szociálpedagógus\" in s \\\n", " or \"Volunteering\" in s \\\n", " or \"nkéntes\" in s \\\n", " or \"ápolo\" in s \\\n", " or \"ápoló\" in s \\\n", " or \"betegapolo\" in s \\\n", " or \"Betegek\" in s \\\n", " or \"ASISTENT MEDICAL\" in s \\\n", " or \"Educato\" in s \\\n", " or \"dadus\" in s \\\n", " or \"szobalány\" in s \\\n", " or \"Krankenschw\" in s \\\n", " or \"Nurs\" in s: return u\"Nevelő/Au Pair/Önkéntes\"\n", " elif \"Lactatos\" in s \\\n", " or \"szerelő\" in s \\\n", " or \"soportvezető\" in s \\\n", " or \"dekorator\" in s \\\n", " or \"Decorator\" in s \\\n", " or \"egesztő\" in s \\\n", " or \"munkas\" in s \\\n", " or \"Operator statie\" in s \\\n", " or \"Mailmaster\" in s \\\n", " or \"mashine oper\" in s \\\n", " or \"Hentes\" in s \\\n", " or \"Construction\" in s \\\n", " or \"INSPECTOR ITP\" in s \\\n", " or \"Auto Mechanic\" in s \\\n", " or \"Electrician\" in s \\\n", " or \"Ipari Alpinista\" in s \\\n", " or \"épkezel\" in s \\\n", " or \"kazan fütö\" in s \\\n", " or \"kazan futu\" in s \\\n", " or \"Gépbeáll\" in s \\\n", " or \"segédmunkás\" in s \\\n", " or \"segéd munkás\" in s \\\n", " or \"asztalos\" in s \\\n", " or \"kovács\" in s \\\n", " or \"varr\" in s \\\n", " or \"varono\" in s \\\n", " or \"Múnkás\" in s \\\n", " or \"Husipar\" in s \\\n", " or \"csomagolas\" in s \\\n", " or \"Kabelteve tehnikus\" in s \\\n", " or \"omuves\" in s \\\n", " or \"könyvtáros\" in s \\\n", " or \"azánkezel\" in s \\\n", " or \"őműves\" in s \\\n", " or \"Könyvkötő\" in s \\\n", " or \"Shaper\" in s: return u\"Szakmunkás\"\n", " elif \"Iranyito\" in s \\\n", " or \"aktáros\" in s \\\n", " or \"iszpécser\" in s \\\n", " or \"Logistics Specialist\" in s \\\n", " or \"Logisztikai részlegvezető\" in s \\\n", " or \"COORDONATOR DE TRANSPORT\" in s \\\n", " or \"ogistik\" in s \\\n", " or \"Loctitian\" in s \\\n", " or \"Raktár\" in s \\\n", " or \"ogistic\" in s \\\n", " or \"ogisztik\" in s \\\n", " or \"Receiving Operator\" in s: return u\"Raktáros/Logisztikus\"\n", " elif \"Driver\" in s \\\n", " or \"Vezető\" in s \\\n", " or \"Distributor\" in s \\\n", " or \"Sofôr\" in s \\\n", " or \"zallitó\" in s \\\n", " or \"SOFÖR\" in s \\\n", " or \"zallito\" in s \\\n", " or \"zállito\" in s \\\n", " or \"zállitó\" in s \\\n", " or \"kamion\" in s \\\n", " or \"posta\" in s \\\n", " or \"kiszálitó\" in s \\\n", " or \"uszvezet\" in s \\\n", " or \"gépkocsi\" in s \\\n", " or \"Gépkocsi\" in s \\\n", " or \"SOFOR\" in s \\\n", " or \"argonc\" in s \\\n", " or \"driver\" in s \\\n", " or \"instructor auto\" in s \\\n", " or \"Curier.\" in s: return u\"Sofőr\"\n", " elif \"polgármester\" in s \\\n", " or \"alkalmazott\" in s \\\n", " or \"örmester\" in s \\\n", " or \"Tanácsos\" in s \\\n", " or \"Police\" in s \\\n", " or \"Politic\" in s \\\n", " or \"tisztvisel\" in s \\\n", " or \"Ambassador\" in s \\\n", " or \"önkormány\" in s \\\n", " or \"politikus\" in s: return u\"Közalkalmazott\"\n", " elif \"Someone who stares\" in s \\\n", " or \"Mindenes\" in s \\\n", " or \"yakornok\" in s \\\n", " or \"trainee\" in s \\\n", " or \"...\" in s \\\n", " or \"intern\" in s \\\n", " or \"draien\" in s \\\n", " or \"Crew\" in s \\\n", " or \"Extrema\" in s \\\n", " or \"Lifeguard\" in s \\\n", " or \"DTH\" in s \\\n", " or \"Pilot\" in s \\\n", " or \"Hmm\" in s \\\n", " or \"Member\" in s \\\n", " or \"Asociat\" in s \\\n", " or \"női kvóta\" in s \\\n", " or \"Méhész\" in s \\\n", " or \"Steinbruch\" in s \\\n", " or \"Szentgyorgy\" in s \\\n", " or \"koptatom\" in s \\\n", " or \"Supervisor\" in s \\\n", " or \"Hegyimentő\" in s \\\n", " or \"Intern\" in s \\\n", " or \"Beosztom magam :-)\" in s \\\n", " or \"Putzfrau\" in s \\\n", " or \"securitate\" in s \\\n", " or \"kulfold\" in s \\\n", " or \"mploye\" in s \\\n", " or \"lelkész\" in s \\\n", " or \"ez meg az\" in s \\\n", " or \"Perfect\" in s \\\n", " or \"Admin\" in s \\\n", " or \"Élni tanitok\" in s \\\n", " or \"trichinella\" in s \\\n", " or \"állat kezel\" in s \\\n", " or \"Gondnok.\" in s \\\n", " or \"pásztor\" in s \\\n", " or \"biztonsagi\" in s \\\n", " or \"bisztonsagi\" in s \\\n", " or \"Hitman\" in s \\\n", " or \"Missionary\" in s \\\n", " or \"Full Time Mum\" in s \\\n", " or \"Mommy\" in s \\\n", " or \"CCZR\" in s \\\n", " or \"my own boss\" in s \\\n", " or \"Szolárium\" in s \\\n", " or \"rofessor\" in s \\\n", " or \"Freelancer\" in s \\\n", " or \"itchhiker\" in s \\\n", " or \"Associate\" in s \\\n", " or \"øadinğ ..… ▂ ▃ ▄ ▅ ▆ ▇ █ ✖ I♥ G@ss£riNe ✖ I♥ ѕuммεʀ • ✖I♥ Pɑʀту >> ✖I♥ ɢɪʀℓѕ ✖I♥ Aℓℓ му Fʀɪeиďs ✖X' Sortir ✖X' Dormir ✖X' Rire ✖X' Manger → 'lOvE' ← →♫ ℳʋʂɨգʊҿ ♫\" in s \\\n", " or \"Staff\" in s \\\n", " or \"C, OG, DS\" in s \\\n", " or \"og/dt\" in s \\\n", " or \"Pirate\" in s \\\n", " or \"Self-employed\" in s \\\n", " or \"Housekeeping\" in s \\\n", " or \"RH\" in s \\\n", " or \"Captain\" in s \\\n", " or \"GÖRGÉNY\" in s \\\n", " or \"destin\" in s \\\n", " or \"képzelgés\" in s \\\n", " or \"Koptatom\" in s \\\n", " or \"Nyalóka Móka\" in s \\\n", " or \"SZÁSZNIKA\" in s \\\n", " or \"100%\" in s \\\n", " or \"sokminden\" in s \\\n", " or \"juniyear\" in s \\\n", " or \"hetfo\" in s \\\n", " or \"Hetfo\" in s \\\n", " or \"Frec mangal\" in s \\\n", " or \"er\" in s : return u\"Más\"\n", " \n", " else: return s" ] }, { "cell_type": "code", "execution_count": 48, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Médiamunkás\n", "Más\n", "Bartender/Pincér/Szakács\n", "Nevelő/Au Pair/Önkéntes\n", "Sportiv\n", "Igazgató/Vállalkozó\n", "Biolog\n", "Zenész/Művész\n", "Irodai alkalmazott\n", "Eladó/Ügynök/Recepciós\n", "Sportoló/Edző/Bíró\n", "KAM\n", "Mérnök/Műépítész\n", "Prêtre\n", "Tanár/Kutató\n", "Szekely Dental\n", "пьющий пиво\n", "Mamica\n", "baile banffy toplita centrul wellnes\n", "Fodrász/Kozmetikus\n", "Sofőr\n", "lucrez\n", "Tourist Information Assistant\n", "solist vocal\n", "Sa ajung kat mai sus si sa nu uit de unde am plekat.\n", "BUCATAR ;\n", "Table Hostess\n", "CONTABILA\n", "sef\n", "Dphil\n", "chirurg cardiovascular\n", "Membru\n", "Soldat (rank)\n", "GOOLKEEPER\n", "Informatikus\n", "Orvos/Gyógyszerész\n", "Caporal\n", "Szakmunkás\n", "Proxy\n", "De toate\n", "Lucrez Acasa la Mama si Tata\n", "normatoare\n", "Atacant\n", "Notar public\n", "muncitor\n", "Jucatoare\n", "Vehicle Technician\n", "Studying\n", "Representante\n", "Sefa\n", "Djing\n", "Fundaș Central\n", "Vendéglátás\n", "le brassus\n", "Telecommunications\n", "cm muresan elena\n", "Truck\n", "imbianchino\n", "agent vanzări\n", "Iskolas\n", "Mijlocas dreapta\n", "bucatar\n", "Atacant dreapta\n", "calator\n", "Cook (profession)\n", "1st\n", "Hausekeeping\n", "fundas\n", "Gestionar Vinzator\n", "frec menta\n", "ASISTENTA\n", "toplita\n", "Treaba mea!\n", "profesor pentru invatamantul primar si prescolar\n", "Sef pe bani mei\n", "Șef de ocol\n", "director adjunct\n", "Supportkonsulent\n", "muncitoare\n", "plimbarile\n", ":-*\n", "BRUTAR\n", "Intro relatie patul meu viata de noapte\n", "Vanzator/Negustor\n", "Nullafacente\n", "Cete\n", "CEVA\n", "Fochist sef\n", "badante\n", "Electricean\n", "badigart\n", "Seful sefilor\n", "BO$$\n", "alestitor\n", "Tax/Accounting\n", "Aszisztens\n", "Juristconsult\n", "TRATORISTA TRANSBORDO\n", "Salahor\n", "AMBALATOR\n", "BUN LA TOATE\n", "Entrepreneurship\n", "Music Production\n", "Tehnician dentar\n", "Constructor\n", "Latio\n", "nu sunt la ciceu\n", "sangeorzudemures\n", "invatatoare\n", "Privat\n", "conducator auto\n", "medienzustel gmb\n", "Tehnician\n", "trovaree lavoro\n" ] } ], "source": [ "workset={}\n", "for i in worklist:\n", " if workdict(i) not in workset:\n", " workset[workdict(i)]=1\n", " print workdict(i)\n", " else: workset[workdict(i)]+=1" ] }, { "cell_type": "code", "execution_count": 49, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "{'sangeorzudemures': 1,\n", " 'Sportiv': 1,\n", " 'medienzustel gmb': 1,\n", " 'Gestionar Vinzator': 1,\n", " u'M\\xe1s': 48,\n", " u'Sportol\\xf3/Edz\\u0151/B\\xedr\\xf3': 5,\n", " 'Intro relatie patul meu viata de noapte': 1,\n", " u'M\\xe9rn\\xf6k/M\\u0171\\xe9p\\xedt\\xe9sz': 8,\n", " 'bucatar': 2,\n", " 'Aszisztens': 1,\n", " 'Entrepreneurship': 1,\n", " 'invatatoare': 1,\n", " 'chirurg cardiovascular': 1,\n", " 'Mamica': 2,\n", " 'Djing': 1,\n", " 'alestitor': 1,\n", " 'profesor pentru invatamantul primar si prescolar': 1,\n", " 'BUN LA TOATE': 1,\n", " 'Pr\\xc3\\xaatre': 1,\n", " 'Atacant': 1,\n", " u'Fodr\\xe1sz/Kozmetikus': 2,\n", " u'Tan\\xe1r/Kutat\\xf3': 10,\n", " 'Nullafacente': 1,\n", " 'Hausekeeping': 1,\n", " 'Fochist sef': 1,\n", " 'KAM': 1,\n", " 'badigart': 1,\n", " u'Nevel\\u0151/Au Pair/\\xd6nk\\xe9ntes': 8,\n", " 'lucrez': 1,\n", " 'Telecommunications': 1,\n", " 'BUCATAR ;': 1,\n", " 'TRATORISTA TRANSBORDO': 1,\n", " 'Tehnician': 1,\n", " 'sef': 5,\n", " 'imbianchino': 1,\n", " 'conducator auto': 1,\n", " 'Latio': 1,\n", " 'Vanzator/Negustor': 1,\n", " 'cm muresan elena': 1,\n", " 'Sefa': 1,\n", " 'toplita': 1,\n", " u'Igazgat\\xf3/V\\xe1llalkoz\\xf3': 28,\n", " '\\xd0\\xbf\\xd1\\x8c\\xd1\\x8e\\xd1\\x89\\xd0\\xb8\\xd0\\xb9 \\xd0\\xbf\\xd0\\xb8\\xd0\\xb2\\xd0\\xbe': 1,\n", " 'solist vocal': 1,\n", " u'Zen\\xe9sz/M\\u0171v\\xe9sz': 8,\n", " 'Juristconsult': 1,\n", " 'CEVA': 1,\n", " 'Salahor': 1,\n", " 'Constructor': 1,\n", " 'Dphil': 1,\n", " 'director adjunct': 1,\n", " ':-*': 1,\n", " 'Sef pe bani mei': 1,\n", " 'Table Hostess': 1,\n", " 'Soldat (rank)': 1,\n", " 'le brassus': 1,\n", " '\\xc8\\x98ef de ocol': 1,\n", " 'Studying': 1,\n", " 'Supportkonsulent': 1,\n", " u'Bartender/Pinc\\xe9r/Szak\\xe1cs': 9,\n", " '1st': 1,\n", " 'trovaree lavoro': 1,\n", " 'BO$$': 1,\n", " 'Membru': 1,\n", " 'frec menta': 1,\n", " 'Tehnician dentar': 1,\n", " 'Iskolas': 1,\n", " u'Informatikus': 3,\n", " u'Sof\\u0151r': 4,\n", " 'Funda\\xc8\\x99 Central': 1,\n", " 'plimbarile': 1,\n", " u'Orvos/Gy\\xf3gyszer\\xe9sz': 7,\n", " 'Mijlocas dreapta': 1,\n", " 'Treaba mea!': 1,\n", " 'De toate': 1,\n", " 'BRUTAR': 1,\n", " 'agent vanz\\xc4\\x83ri': 1,\n", " 'Vend\\xc3\\xa9gl\\xc3\\xa1t\\xc3\\xa1s': 1,\n", " 'Privat': 1,\n", " 'calator': 1,\n", " u'M\\xe9diamunk\\xe1s': 8,\n", " 'normatoare': 1,\n", " 'Notar public': 1,\n", " 'muncitoare': 1,\n", " 'Jucatoare': 1,\n", " 'AMBALATOR': 1,\n", " 'GOOLKEEPER': 1,\n", " 'Atacant dreapta': 1,\n", " 'Music Production': 1,\n", " 'Electricean': 1,\n", " 'Proxy': 1,\n", " 'Seful sefilor': 1,\n", " 'Representante': 1,\n", " 'Lucrez Acasa la Mama si Tata': 1,\n", " 'ASISTENTA': 1,\n", " 'baile banffy toplita centrul wellnes': 1,\n", " 'Caporal': 1,\n", " 'Szekely Dental': 1,\n", " u'Irodai alkalmazott': 22,\n", " 'nu sunt la ciceu': 1,\n", " u'Szakmunk\\xe1s': 2,\n", " 'Truck': 1,\n", " 'Tourist Information Assistant': 1,\n", " 'Tax/Accounting': 1,\n", " 'fundas': 1,\n", " 'Vehicle Technician': 1,\n", " u'Elad\\xf3/\\xdcgyn\\xf6k/Recepci\\xf3s': 9,\n", " 'Biolog': 1,\n", " 'Cete': 1,\n", " 'Sa ajung kat mai sus si sa nu uit de unde am plekat.': 1,\n", " 'Cook (profession)': 1,\n", " 'badante': 1,\n", " 'muncitor': 3,\n", " 'CONTABILA': 1}" ] }, "execution_count": 49, "metadata": {}, "output_type": "execute_result" } ], "source": [ "workset" ] }, { "cell_type": "code", "execution_count": 50, "metadata": { "collapsed": false, "scrolled": true }, "outputs": [ { "ename": "UnicodeDecodeError", "evalue": "'ascii' codec can't decode byte 0xc3 in position 2: ordinal not in range(128)", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mUnicodeDecodeError\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[0mplt\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mpie\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mworkset\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mvalues\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mlabels\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mi\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mi\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mworkset\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mkeys\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\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 2\u001b[0m \u001b[0mplt\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mshow\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32mC:\\Program Files\\Anaconda\\lib\\site-packages\\matplotlib\\pyplot.pyc\u001b[0m in \u001b[0;36mpie\u001b[1;34m(x, explode, labels, colors, autopct, pctdistance, shadow, labeldistance, startangle, radius, counterclock, wedgeprops, textprops, hold)\u001b[0m\n\u001b[0;32m 3079\u001b[0m \u001b[0mlabeldistance\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mlabeldistance\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mstartangle\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mstartangle\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 3080\u001b[0m \u001b[0mradius\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mradius\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcounterclock\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mcounterclock\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 3081\u001b[1;33m wedgeprops=wedgeprops, textprops=textprops)\n\u001b[0m\u001b[0;32m 3082\u001b[0m \u001b[0mdraw_if_interactive\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 3083\u001b[0m \u001b[1;32mfinally\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32mC:\\Program Files\\Anaconda\\lib\\site-packages\\matplotlib\\axes\\_axes.pyc\u001b[0m in \u001b[0;36mpie\u001b[1;34m(self, x, explode, labels, colors, autopct, pctdistance, shadow, labeldistance, startangle, radius, counterclock, wedgeprops, textprops)\u001b[0m\n\u001b[0;32m 2471\u001b[0m \u001b[0mslices\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mappend\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mw\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2472\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0madd_patch\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mw\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 2473\u001b[1;33m \u001b[0mw\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mset_label\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mlabel\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 2474\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2475\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mshadow\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32mC:\\Program Files\\Anaconda\\lib\\site-packages\\matplotlib\\artist.pyc\u001b[0m in \u001b[0;36mset_label\u001b[1;34m(self, s)\u001b[0m\n\u001b[0;32m 775\u001b[0m \"\"\"\n\u001b[0;32m 776\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0ms\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[0m\n\u001b[1;32m--> 777\u001b[1;33m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_label\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;34m'%s'\u001b[0m \u001b[1;33m%\u001b[0m \u001b[1;33m(\u001b[0m\u001b[0ms\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 778\u001b[0m \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 779\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_label\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mNone\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;31mUnicodeDecodeError\u001b[0m: 'ascii' codec can't decode byte 0xc3 in position 2: ordinal not in range(128)" ] }, { "data": { "image/png": "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\nTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.pie(workset.values(),labels=[(i) for i in workset.keys()])\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "parajd, balan, vlahica exhaustive, barot majdnem, " ] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "Python [default]", "language": "python", "name": "python2" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.13" } }, "nbformat": 4, "nbformat_minor": 0 }