In [1]:
import pandas as pd, json, numpy as np
import matplotlib.pyplot as plt
%matplotlib inline

In [2]:
from pygeocoder import Geocoder
apik='AIzaSyDybC2OroTE_XDJTuxjKruxFpby5VDhEGk'

In [20]:
locations=json.loads(file('locations_jo.json','r').read())

In [21]:
mdf_dest=pd.read_json(json.loads(file('mdf_jo_dest.json','r').read()))
mdf_arrv=pd.read_json(json.loads(file('mdf_jo_arrv.json','r').read()))

In [22]:
citysave_dest=json.loads(file('citysave_jo_dest.json','r').read())
citysave_arrv=json.loads(file('citysave_jo_arrv.json','r').read())

In [23]:
mdf_dest['ID']=mdf_dest['From']
mdf_dest.head()


Out[23]:
Airline Airport City Date From To index ID
0 Royal Jordanian KRT Khartoum https://www.airportia.com/jordan/queen-alia-in... AMM Khartoum KRT 0 AMM
1 Tarco Airlines KRT Khartoum https://www.airportia.com/jordan/queen-alia-in... AMM Khartoum KRT 1 AMM
10 Royal Jordanian JED Jeddah https://www.airportia.com/jordan/queen-alia-in... AMM Jeddah JED 10 AMM
100 Oman Air MCT Muscat https://www.airportia.com/jordan/queen-alia-in... AMM Muscat MCT 3 AMM
1000 MEA BEY Beirut https://www.airportia.com/jordan/queen-alia-in... AMM Beirut BEY 73 AMM

In [24]:
mdf_arrv['ID']=mdf_arrv['To']
mdf_arrv.head()


Out[24]:
Airline Airport City Date From To index ID
0 EgyptAir CAI Cairo https://www.airportia.com/jordan/queen-alia-in... Cairo CAI AMM 0 AMM
1 Royal Jordanian BEY Beirut https://www.airportia.com/jordan/queen-alia-in... Beirut BEY AMM 1 AMM
10 Royal Jordanian KWI Kuwait City https://www.airportia.com/jordan/queen-alia-in... Kuwait City KWI AMM 10 AMM
100 Royal Jordanian KWI Kuwait City https://www.airportia.com/jordan/queen-alia-in... Kuwait City KWI AMM 9 AMM
1000 Saudi Arabian Airlines JED Jeddah https://www.airportia.com/jordan/queen-alia-in... Jeddah JED AMM 80 AMM

In [25]:
mdf=pd.concat([mdf_dest,mdf_arrv])

In [26]:
len(mdf_dest)


Out[26]:
1341

In [27]:
len(mdf_arrv)


Out[27]:
1336

In [28]:
mdf


Out[28]:
Airline Airport City Date From To index ID
0 Royal Jordanian KRT Khartoum https://www.airportia.com/jordan/queen-alia-in... AMM Khartoum KRT 0 AMM
1 Tarco Airlines KRT Khartoum https://www.airportia.com/jordan/queen-alia-in... AMM Khartoum KRT 1 AMM
10 Royal Jordanian JED Jeddah https://www.airportia.com/jordan/queen-alia-in... AMM Jeddah JED 10 AMM
100 Oman Air MCT Muscat https://www.airportia.com/jordan/queen-alia-in... AMM Muscat MCT 3 AMM
1000 MEA BEY Beirut https://www.airportia.com/jordan/queen-alia-in... AMM Beirut BEY 73 AMM
1001 EgyptAir CAI Cairo https://www.airportia.com/jordan/queen-alia-in... AMM Cairo CAI 74 AMM
1002 Royal Jordanian JED Jeddah https://www.airportia.com/jordan/queen-alia-in... AMM Jeddah JED 75 AMM
1003 Jazeera Airways KWI Kuwait City https://www.airportia.com/jordan/queen-alia-in... AMM Kuwait City KWI 76 AMM
1004 Qatar Airways DOH Doha https://www.airportia.com/jordan/queen-alia-in... AMM Doha DOH 77 AMM
1005 Saudi Arabian Airlines RUH Riyadh https://www.airportia.com/jordan/queen-alia-in... AMM Riyadh RUH 78 AMM
1006 Royal Jordanian EBL Arbil https://www.airportia.com/jordan/queen-alia-in... AMM Arbil EBL 79 AMM
1007 Royal Jordanian AUH Abu Dhabi https://www.airportia.com/jordan/queen-alia-in... AMM Abu Dhabi AUH 80 AMM
1008 FlyEgypt HBE Alexandria https://www.airportia.com/jordan/queen-alia-in... AMM Alexandria HBE 81 AMM
1009 Gulf Air BAH Bahrain https://www.airportia.com/jordan/queen-alia-in... AMM Bahrain BAH 82 AMM
101 Emirates DXB Dubai https://www.airportia.com/jordan/queen-alia-in... AMM Dubai DXB 4 AMM
1010 Air Arabia SHJ Sharjah https://www.airportia.com/jordan/queen-alia-in... AMM Sharjah SHJ 83 AMM
1011 Royal Jordanian BEY Beirut https://www.airportia.com/jordan/queen-alia-in... AMM Beirut BEY 84 AMM
1012 Royal Jordanian TLV Tel Aviv https://www.airportia.com/jordan/queen-alia-in... AMM Tel Aviv TLV 85 AMM
1013 Royal Jordanian DXB Dubai https://www.airportia.com/jordan/queen-alia-in... AMM Dubai DXB 86 AMM
1014 Royal Jordanian JED Jeddah https://www.airportia.com/jordan/queen-alia-in... AMM Jeddah JED 87 AMM
1015 Royal Jordanian MED Medina https://www.airportia.com/jordan/queen-alia-in... AMM Medina MED 88 AMM
1016 Flynas RUH Riyadh https://www.airportia.com/jordan/queen-alia-in... AMM Riyadh RUH 89 AMM
1017 Royal Jordanian KWI Kuwait City https://www.airportia.com/jordan/queen-alia-in... AMM Kuwait City KWI 90 AMM
1018 Royal Jordanian CAI Cairo https://www.airportia.com/jordan/queen-alia-in... AMM Cairo CAI 91 AMM
1019 FlyDubai DXB Dubai https://www.airportia.com/jordan/queen-alia-in... AMM Dubai DXB 92 AMM
102 Lufthansa FRA Frankfurt https://www.airportia.com/jordan/queen-alia-in... AMM Frankfurt FRA 5 AMM
1020 Saudi Arabian Airlines JED Jeddah https://www.airportia.com/jordan/queen-alia-in... AMM Jeddah JED 93 AMM
1021 Royal Jordanian KRT Khartoum https://www.airportia.com/jordan/queen-alia-in... AMM Khartoum KRT 0 AMM
1022 Air France CDG Paris https://www.airportia.com/jordan/queen-alia-in... AMM Paris CDG 1 AMM
1023 Royal Jordanian EBL Arbil https://www.airportia.com/jordan/queen-alia-in... AMM Arbil EBL 2 AMM
... ... ... ... ... ... ... ... ...
972 Afriqiyah Airways TIP Tripoli https://www.airportia.com/jordan/queen-alia-in... Tripoli TIP AMM 52 AMM
973 Air Arabia DMM Dammam https://www.airportia.com/jordan/queen-alia-in... Dammam DMM AMM 53 AMM
974 Air Cairo HMB Sohag https://www.airportia.com/jordan/queen-alia-in... Sohag HMB AMM 54 AMM
975 Royal Jordanian CDG Paris https://www.airportia.com/jordan/queen-alia-in... Paris CDG AMM 55 AMM
976 Royal Jordanian JED Jeddah https://www.airportia.com/jordan/queen-alia-in... Jeddah JED AMM 56 AMM
977 Royal Jordanian ATH Athens https://www.airportia.com/jordan/queen-alia-in... Athens ATH AMM 57 AMM
978 MEA BEY Beirut https://www.airportia.com/jordan/queen-alia-in... Beirut BEY AMM 58 AMM
979 Air Cairo HBE Alexandria https://www.airportia.com/jordan/queen-alia-in... Alexandria HBE AMM 59 AMM
98 Royal Jordanian MED Medina https://www.airportia.com/jordan/queen-alia-in... Medina MED AMM 7 AMM
980 EgyptAir CAI Cairo https://www.airportia.com/jordan/queen-alia-in... Cairo CAI AMM 60 AMM
981 Qatar Airways DOH Doha https://www.airportia.com/jordan/queen-alia-in... Doha DOH AMM 61 AMM
982 Royal Jordanian ZRH Zurich https://www.airportia.com/jordan/queen-alia-in... Zurich ZRH AMM 62 AMM
983 Royal Jordanian AMS Amsterdam https://www.airportia.com/jordan/queen-alia-in... Amsterdam AMS AMM 63 AMM
984 Royal Jordanian VIE Vienna https://www.airportia.com/jordan/queen-alia-in... Vienna VIE AMM 64 AMM
985 Royal Jordanian FCO Rome https://www.airportia.com/jordan/queen-alia-in... Rome FCO AMM 65 AMM
986 Lufthansa FRA Frankfurt https://www.airportia.com/jordan/queen-alia-in... Frankfurt FRA AMM 66 AMM
987 Jazeera Airways KWI Kuwait City https://www.airportia.com/jordan/queen-alia-in... Kuwait City KWI AMM 67 AMM
988 Saudi Arabian Airlines RUH Riyadh https://www.airportia.com/jordan/queen-alia-in... Riyadh RUH AMM 68 AMM
989 Royal Jordanian FRA Frankfurt https://www.airportia.com/jordan/queen-alia-in... Frankfurt FRA AMM 69 AMM
99 Royal Jordanian JED Jeddah https://www.airportia.com/jordan/queen-alia-in... Jeddah JED AMM 8 AMM
990 Royal Jordanian KWI Kuwait City https://www.airportia.com/jordan/queen-alia-in... Kuwait City KWI AMM 70 AMM
991 Royal Jordanian TUN Tunis https://www.airportia.com/jordan/queen-alia-in... Tunis TUN AMM 71 AMM
992 Gulf Air BAH Bahrain https://www.airportia.com/jordan/queen-alia-in... Bahrain BAH AMM 72 AMM
993 Royal Jordanian LCA Larnaca https://www.airportia.com/jordan/queen-alia-in... Larnaca LCA AMM 73 AMM
994 Air France CDG Paris https://www.airportia.com/jordan/queen-alia-in... Paris CDG AMM 74 AMM
995 Air Arabia SHJ Sharjah https://www.airportia.com/jordan/queen-alia-in... Sharjah SHJ AMM 75 AMM
996 Royal Jordanian DME Moscow https://www.airportia.com/jordan/queen-alia-in... Moscow DME AMM 76 AMM
997 Royal Jordanian RUH Riyadh https://www.airportia.com/jordan/queen-alia-in... Riyadh RUH AMM 77 AMM
998 Flynas RUH Riyadh https://www.airportia.com/jordan/queen-alia-in... Riyadh RUH AMM 78 AMM
999 FlyDubai DXB Dubai https://www.airportia.com/jordan/queen-alia-in... Dubai DXB AMM 79 AMM

2677 rows × 8 columns


In [29]:
mdg=mdf.set_index(['ID','City','Airport','Airline'])

In [30]:
k=mdg.loc['AMM'].loc['Frankfurt'].loc['FRA']
testurl=u'https://www.airportia.com/jordan/queen-alia-international-airport/departures/20170318'
k[k['Date']==testurl]


Out[30]:
Date From To index
Airline
Lufthansa https://www.airportia.com/jordan/queen-alia-in... AMM Frankfurt FRA 7
Royal Jordanian https://www.airportia.com/jordan/queen-alia-in... AMM Frankfurt FRA 43

In [31]:
k=mdg.loc['AMM'].loc['Frankfurt'].loc['FRA']
testurl=u'https://www.airportia.com/jordan/queen-alia-international-airport/arrivals/20170318'
k[k['Date']==testurl]


Out[31]:
Date From To index
Airline
Lufthansa https://www.airportia.com/jordan/queen-alia-in... Frankfurt FRA AMM 63
Royal Jordanian https://www.airportia.com/jordan/queen-alia-in... Frankfurt FRA AMM 79

In [32]:
k=mdg.loc['AMM'].loc['Frankfurt'].loc['FRA']
for i in range(11,25):
    testurl=u'https://www.airportia.com/jordan/queen-alia-international-airport/departures/201703'+str(i)
    print 'AMM-FRA March',i, 'departures',len(k[k['Date']==testurl]),
    testurl=u'https://www.airportia.com/jordan/queen-alia-international-airport/arrivals/201703'+str(i)
    print 'arrivals', len(k[k['Date']==testurl])


AMM-FRA March 11 departures 2 arrivals 2
AMM-FRA March 12 departures 2 arrivals 2
AMM-FRA March 13 departures 2 arrivals 2
AMM-FRA March 14 departures 1 arrivals 1
AMM-FRA March 15 departures 2 arrivals 1
AMM-FRA March 16 departures 2 arrivals 2
AMM-FRA March 17 departures 2 arrivals 2
AMM-FRA March 18 departures 2 arrivals 2
AMM-FRA March 19 departures 2 arrivals 2
AMM-FRA March 20 departures 2 arrivals 2
AMM-FRA March 21 departures 1 arrivals 1
AMM-FRA March 22 departures 2 arrivals 1
AMM-FRA March 23 departures 2 arrivals 2
AMM-FRA March 24 departures 2 arrivals 2

In [33]:
len(k)/14


Out[33]:
3

mdg checks out with source


In [34]:
flights={}
minn=1.0 #want to see minimum 1 flight in the past 2 weeks
for i in mdg.index.get_level_values(0).unique():
    #2 weeks downloaded. want to get weekly freq. but multi by 2 dept+arrv
    d=4.0
    if i not in flights:flights[i]={}
    for j in mdg.loc[i].index.get_level_values(0).unique():
        if len(mdg.loc[i].loc[j])>minn: #minimum 1 flights required in this period at least once every 2 weeks
            if j not in flights[i]:flights[i][j]={'airports':{},'7freq':0}
            flights[i][j]['7freq']=len(mdg.loc[i].loc[j])/d 
            for k in mdg.loc[i].loc[j].index.get_level_values(0).unique():
                if len(mdg.loc[i].loc[j].loc[k])>minn:
                    if k not in flights[i][j]['airports']:flights[i][j]['airports'][k]={'airlines':{},'7freq':0}
                    flights[i][j]['airports'][k]['7freq']=len(mdg.loc[i].loc[j].loc[k])/d
                    for l in mdg.loc[i].loc[j].loc[k].index.get_level_values(0).unique():
                        try:
                            if len(mdg.loc[i].loc[j].loc[k].loc[l])>minn: 
                                if l not in flights[i][j]['airports'][k]['airlines']:flights[i][j]['airports'][k]['airlines'][l]={'7freq':0}
                                flights[i][j]['airports'][k]['airlines'][l]['7freq']=len(mdg.loc[i].loc[j].loc[k].loc[l])/d
                        except:pass

In [35]:
file("flights_jo.json",'w').write(json.dumps(flights))