Gender Quotas & Representation of Women
in Politics & Public Elections:
A look at the efficacy of gender quotas
Women have chronically been underrepresented in public & political life
When we talk about 'representation' in the literature, we refer to:
Descriptive Representation
Substantive Representation
women standing for women
representatives acting on behalf of women
Both are important but my dataset & analysis exclusively focuses on the former, which is measured by the number of women representatives in national legislatures
While the number of women in national parliaments have grown, its growth rate has been incredibly slow
All but a few countries have yet to reach a gender balance in political institutions. In terms of women representation, this means political institutions are a far cry from being descriptively representative of the populations they act for.
Quotas act as a mechanism that aims to 'fast-track' equal representation
but how effective are they at increasing women's representation in national parliaments?
About my datasets:
I'm interactive. Hover over a bar to view my data.
I'm interactive. Click the colours in the legend to view/compare regions.
I'm interactive. Hover over a bar to view my data
I'm interactive. Click the colours in the legend to view/compare categories
I'm interactive. Click the colours in the legend to view/compare categories
I'm interactive. Hover over a bar to view my data
I'm interactive. Click the colours in the legend to view/compare categories
Findings 1:
I'm interactive. Click the colours in the legend to view/compare categories
I'm interactive. Click the colours in the legend to view/compare categories
I'm interactive. Click the colours in the legend to view/compare categories
I'm interactive. Click the colours in the legend to view/compare categories
Finding 2:
* 'Unknown' are countries who did not appear in the gender quota dataset and are otherwise not known to have gender quota systems at all. These unknown countries elected less women over time compared to unicameral parliament types, who by virtue of the fact that they exist in the dataset means that they have some quota system in place, demonstrating that irrespective of parliament types, quotas do seem to work, at least on average over time.
I'm interactive. Hover over a line to view my setup.
Finding 3:
Fortune Cookie Version of Findings:
Do gender quotas result in more women elected into legislatures?
Yes, but they're not a guarantee.
More detailed analysis needs to be done on under what circumstances are quotas effective/ineffecitve .
- END -
Thank you
Please see next slides for appendix detailing:
Appendix
Why is descriptive representation important?
Types of Parliaments:
Types of Quotas:
* other than the first, the last two are quota systems that can be written via legislation or constitution and can also be either enforced via penalities for non-compliance or not..
Appendix
Top Issues with Datasets
Appendix
Addressing Issue 1:
1. Extract country names from the countries_data dataset into a new list called country_names and repeat it for the number of times as there are years. In this case, there are 23 years between 1997 and 2020 so I will repeat it 24 times;
2. Create a new dataframe and add my country_names list to it
3. Repeat the same steps for country code and year, calling the columns country_code and year respectively;
4. Flip the percent_of_women to complete my dataset.
#extract country names and create a new list, repeating country names 24 times
country_names = countries_data['country_name']
country_names = np.repeat(country_names, 24)
#create a new dataframe, inserting country_names list into the first column
women_representation_df = pd.DataFrame(country_names).reset_index().drop(['index'], axis = 1)
#do the same for country codes
country_code = countries_data['country_code']
country_code = list(np.repeat(country_code,24))
women_representation_df['country_code'] = country_code
#repeat for year
years = list(range(1997,2021))
n = countries_data['country_name'].nunique()
years = years*n
women_representation_df['year'] = years
#Finally, flip the values that's meant to be percent_of_women so that the value corresponds with the correct country and year
#To do this, I know that I just have to create a list and stack all the float rows on top of each other
#first, extract the relevant columns
stacked_data= pd.DataFrame(countries_data.iloc[:,2:])
#flip it and stack it but don't drop the na, otherwise it won't match the index
stacked_data = list(stacked_data.stack(dropna = False))
#place the newly stacked list into the dataframe
women_representation_df['percent_of_women'] = stacked_data
women_representation_df.head(10)
Appendix
Addressing Issue 2:
1. Convert country_code/country_name in both datasets to ISO2 codes using pycountry library
2. Force the following 'unknown' fill if unable to identify country
3. Extract all 'unknowns'
4. Manually fill ISO2 codes using googlesearch
#first i want to import the library
import pycountry
#Let's start with the women_representation_df
input_countries_wr = women_representation_df['country_name']
countries = {}
for country in pycountry.countries:
countries[country.name] = country.alpha_2
#if the country cannot be identified, fill with 'Unknown code'
codes = [countries.get(country, 'Unknown code') for country in input_countries_wr]
women_representation_df['country_code'] = codes
#check for any 'unknown code'
print('THESE ARE THE COUNTRIES WITH UNKNOWN CODES:')
print(women_representation_df[women_representation_df['country_code'] == 'Unknown code']['country_name'].unique())
#create a list containing the iso2codes of the above countries and repeat them 24 times
to_assign_iso2_wr = ['BS','BO','CI', 'CD', 'CG', 'CZ', 'EG', 'FM', 'GM', 'IR', 'KG', 'KN', 'KR', 'LA', 'LC', 'MD', 'KP', 'SK','TZ','VC', 'VE', 'VN','YE']
to_assign_iso2_wr = np.repeat(to_assign_iso2_wr, 24)
#assign the to_assign_iso2 codes to the unknowns in the dataset
women_representation_df.loc[women_representation_df['country_code'] == 'Unknown code', 'country_code'] = to_assign_iso2_wr
#double check if they were removed:
women_representation_df[women_representation_df['country_code'] == 'Unknown code']['country_name']
Appendix
Addressing Issue 3:
1. Create 7 lists, with ISO2 codes, representing countries in each of the 7 world bank regional classifications, according to the following source: https://datahelpdesk.worldbank.org/knowledgebase/articles/906519-world-bank-country-and-lending-groups
2. Extract the country codes for each regional list
3. After doing this for all 7, concatenate them into the new dataframe
4. Add regional columns
5. Cross check new dataframe with old dataframe to identify ISO2 codes that were left out
6. Fill them in manually referencing google search
#INITIALISING MY LISTS
#EAST ASIA PACIFIC
eapac = ['AS','KR', 'PH',
'AU', 'LA', 'BN',
'MO', 'SG', 'KH',
'MY', 'SB', 'CN',
'MH', 'TW', 'FJ',
'FM', 'TH', 'PF',
'MN', 'TL', 'GU',
'MM', 'HK', 'NR',
'TO', 'ID', 'NC',
'TV', 'JP', 'NZ',
'VU', 'KI','MP',
'VN', 'KP', 'PW']
#EUROPE AND CENTRAL ASIA
euca = ['AL', 'GI', 'NO', 'AD',
'GR', 'PL', 'AM', 'GL', 'PT',
'AT', 'HU', 'RO', 'AZ', 'IS',
'RU', 'BY', 'IM', 'RS',
'BA', 'IT', 'SK',
'BG', 'KZ', 'SI', 'XK',
'ES', 'HR', 'KG', 'SE',
'CY', 'LV', 'CH',
'CZ', 'LI', 'TJ',
'DK', 'LT', 'TR',
'EE', 'LU', 'TM',
'FO', 'MD', 'UA',
'FI', 'MC', 'GB',
'FR', 'ME', 'UZ',
'GE', 'NL',
'DE', 'MK']
#LATIN AMERICA AND THE CARIBBEAN
latmc = ['AG', 'CW', 'PY',
'AR', 'DM', 'PE',
'AW', 'DO', 'PR',
'BS', 'EC', 'SX',
'BB', 'SV', 'KN',
'BZ', 'GD', 'LC',
'BO', 'GT', 'MF',
'BR', 'GY', 'VC',
'VG', 'HT', 'SR',
'KY', 'HN', 'TT',
'CL', 'JM', 'TC',
'CO', 'MX', 'UY',
'CR', 'NI', 'VE',
'CU', 'PA', 'VI']
#MIDDLE EAST AND NORTH AFRICA
mena = ['DZ', 'JO', 'QA',
'BH', 'KW', 'SA',
'DJ', 'LB', 'SY',
'EG', 'LY', 'TN',
'IR', 'MT', 'AE',
'IQ', 'MA', 'PS',
'IL', 'OM', 'YE']
#NORTH AMERICA
northam = ['BM', 'CA', 'US']
#SOUTH ASIA
sasia = ['AF', 'IN', 'PK',
'BD', 'MV', 'LK',
'BT', 'NP']
#SUBSAHARAN AFRICA
ssaf = ['AO', 'ET', 'NE',
'BJ', 'GA', 'NG',
'BW', 'GM', 'RW',
'BF', 'GH', 'ST',
'BI', 'GN', 'SN',
'CV', 'GW', 'SC',
'CM', 'KE', 'SL',
'CF', 'LS', 'SO',
'TD', 'LR', 'ZA',
'KM', 'MG', 'SS',
'CD', 'MW', 'SD',
'CG', 'ML', 'TZ',
'CI', 'MR', 'TG',
'GQ', 'MU', 'UG',
'ER', 'MZ', 'ZM',
'SZ', 'NA', 'ZW']
#next, I will extract the countries from women_representation_df and gender_quota data into each 'region'
#i will then add a column at the end of that new regional dataframe assigning the respective region.
east_asia_pacific = gender_quota_data[gender_quota_data['country_code'].isin(eapac)]
east_asia_pacific['region'] = 'East Asia Pacific'
europe_central_asia = gender_quota_data[gender_quota_data['country_code'].isin(euca)]
europe_central_asia['region'] = 'Europe & Central Asia'
latam_caribbean = gender_quota_data[gender_quota_data['country_code'].isin(latmc)]
latam_caribbean['region'] = 'Latin America & the Caribbean'
mideastnaf = gender_quota_data[gender_quota_data['country_code'].isin(mena)]
mideastnaf['region'] = 'Middle East & North Africa'
north_america = gender_quota_data[gender_quota_data['country_code'].isin(northam)]
north_america['region'] = 'North America'
south_asia = gender_quota_data[gender_quota_data['country_code'].isin(sasia)]
south_asia['region'] = 'South Asia'
subsaaf = gender_quota_data[gender_quota_data['country_code'].isin(ssaf)]
subsaaf['region'] = 'Sub-Saharan Africa'
gq_w_regions = [subsaaf, south_asia,north_america, mideastnaf,latam_caribbean,europe_central_asia,east_asia_pacific]
for df in gq_w_regions:
df.columns = ['country_name', 'country_code', 'parliament_type',
'voluntary_political_party_quotas', 'lower_house_quota_type',
'upper_house_quota_type', 'sub_national_level_quota_type',
'region']
gq_w_regions= pd.concat(gq_w_regions)
gq_w_regions = gq_w_regions.sort_values('country_name')
gq_w_regions.head()
#identifying the countries in the old df that are NOT in the new df
unlabelled = gender_quota_data[~gender_quota_data['country_name'].isin(gq_w_regions['country_name'])]
unlabelled
#using google search as a reference to manually assign region
unlablled_region = ['Europe & Central Asia', 'Europe & Central Asia', 'East Asia Pacific','Europe & Central Asia']
unlabelled['region'] = unlablled_region
unlabelled
Appendix
Addressing Issue 4:
1. Create a column that concatenates the values of parliament type, party quotas, lower house quotas, upper house quotas and sub national level quotas
2. Grouped dataset by 'setup', with the 'percent of women' aggregated to its mean and sorted by 'percent of women'
3. Print the top and bottom by using head and tail
4. Plot in line graph.
** Note that while I use the term 'clusters' here, they are not, in fact clusters. Rather, they are the different unique setups in the dataset.
mergeddata['setup'] = mergeddata['parliament_type'] +','+ mergeddata['voluntary_political_party_quotas'] + ','+mergeddata['lower_house_quota_type'] + ','+mergeddata['upper_house_quota_type'] + ','+mergeddata['sub_national_level_quota_type']
setup_overtime = pd.DataFrame(mergeddata.groupby(['setup','year'])['percent_of_women'].mean()).reset_index()
setup_top = setup_overtime.head()
setup_bot = setup_overtime.tail()
setuptimetopnbot = px.line(top3bot3,x='year', y= 'percent_of_women', color = 'position', hover_name = 'setup')
setuptimetopnbot['layout'].update(title='Av. Proportion of Women Overtime, by Best Performing & Least Perfoming Setups')
setuptimetopnbot['layout']['yaxis1'].update(title='Percent of Women (%)')
setuptimetopnbot.update_traces(connectgaps=False)
setuptimetopnbot.update_layout(
paper_bgcolor='rgba(0,0,0,0)',
plot_bgcolor='rgba(0,0,0,0)')
setuptimetopnbot.update_layout(showlegend=False,xaxis_showgrid=False, yaxis_showgrid=False)
setuptime.update_layout(showlegend=False, xaxis_showgrid=False, yaxis_showgrid=False)
setuptimetopnbot.show()
Relevant Sources:
Burrell et al. (2008). Social Desirability Effects and Support for a Female American President. Public Opinion Quarterly,72:1, Spring 2008, Pages 76–89, https://doi.org/10.1093/poq/nfm035
Garboni, E. (2015). The Impact of Descriptive Representation on Substantive Representation of Women at European and National Parliamentary Levels. Case Study: Romania. Procedia - Social and Behavioral Sciences: 183. 85 - 92. https://doi.org/10.1016/j.sbspro.2015.04.849
Gwiazda. A. (2017). Women in parliament: assessing the effectiveness of gender quotas in Poland. Journal of Legislative Studies: 23:3, 326 - 347. https://doi.org/10.1080/13572334.2017.1358981
High-Pippert, A. & Comer, J. (1998). Female Empowerment: The Influence of Women Representing Women. Women & Politics: 19:4, 55-66. https://digitalcommons.unl.edu/poliscifacpub/2/
Mansbridge, J. (1999). Should Blacks represent Blacks and women represent women? A contingent “yes.” Journal of Politics, 61, 628-657. https://doi.org/10.2307/2647821
Schwidnt-Bayer, L.(2011). Making Quotas Work: The Effect of Gender Quota Laws On the Election of Women. Legislative Studies Quarterly: 34:1, 5-28.
https://doi.org/10.3162/036298009787500330