import collections
import pandas as pd
import numpy as np
import seaborn as sns
sns.set()
COUNTRY_CODES = ['AE', 'BH', 'EG', 'IR', 'KW', 'LB', 'OM', 'SA', 'SY', 'TR', 'QA', 'YE']
SHEETS_TO_CODES = {
'Iran': 'IR',
'Lebanon': 'LB',
'Hezbullah': 'HEZ',
'KSA': 'SA',
'Syria': 'SY',
'Bahrain': 'BH',
'Kuwait': 'KW',
'Yemen': 'YE',
'UAE': 'AE',
'Qatar': 'QA',
'Egypt': 'EG',
'Ikhwan': 'MB',
'Turkey': 'TR',
'Kurds': 'KURD',
'Regional websites': 'MENA',
}
pairwise = pd.DataFrame(index=SHEETS_TO_CODES.values(), columns=SHEETS_TO_CODES.values(), dtype=np.float32)
data = pd.read_excel('filtering_data.xlsx', None)
for sheet, code in SHEETS_TO_CODES.items():
values = data[sheet].loc[:,data[sheet].columns.intersection(COUNTRY_CODES)].sum() / data[sheet].loc[:,data[sheet].columns.intersection(COUNTRY_CODES)].count()
pairwise[code].update(values)
pairwise
sns.heatmap(pairwise, square=True, cmap='RdYlGn_r', center=0.1)
conflict_actors = collections.defaultdict(list)
for row in data['Conflict Factions'].loc[:,['Conflict', 'Actor', 'Faction']].iterrows():
if row[1]['Actor'] != 'SD':
conflict_actors[row[1]['Conflict']].append(row[1]['Actor'])
conflict_actors
conflict_names = data['Conflicts'].set_index('Code').to_dict()['Conflict']
def plot_conflict(conflict, conflict_actors, pairwise_filtering):
actors = conflict_actors[conflict]
ax = sns.heatmap(pairwise.loc[actors, actors], square=True, cmap='RdYlGn_r', vmin=0, vmax=0.2)
ax.set(xlabel='Sites Friendly To', ylabel='Accessing From', title=conflict_names[conflict])
conflict = 'SIT'
plot_conflict(conflict, conflict_actors, pairwise)
conflict = 'CIS'
plot_conflict(conflict, conflict_actors, pairwise)
conflict = 'H'
plot_conflict(conflict, conflict_actors, pairwise)
conflict = 'WIY'
plot_conflict(conflict, conflict_actors, pairwise)
conflict = 'GC'
plot_conflict(conflict, conflict_actors, pairwise)
conflict = 'MB'
plot_conflict(conflict, conflict_actors, pairwise)
conflict = 'K'
plot_conflict(conflict, conflict_actors, pairwise)