DEV Community

Cover image for Francophone Africa: The Hidden Costs of French Influence
Dasbang, F. Joseph
Dasbang, F. Joseph

Posted on

Francophone Africa: The Hidden Costs of French Influence

Introduction:
Francophone Africa, the region of Africa where French is widely spoken, has a complicated and frequently tumultuous relationship with France, its former colonial power. France has retained a considerable political and economic influence over its former African colonies through a variety of tactics, including monetary, military, and diplomatic links. This influence, however, has not always benefited francophone African countries, as it has frequently come at the expense of their sovereignty, growth, and stability. In this study, I will look at historical and contemporary elements that contribute to instability and violence in francophone African countries influenced by France. I plan to use data analysis and visualization tools like Julia, R, and Python to investigate the effects of France’s policies and actions on various aspects of francophone African countries, such as military spending, support for authoritarian regimes, military interventions, the Human Development Index, and so on. I will also examine the consequences and problems of these impacts for francophone Africa’s future.

Research question:
What are the historical and contemporary factors that contribute to the instability and violence in Francophone African countries under France’s influence?

Data Sources:
One of the data sources for the research work is the Stockholm International Peace Research Institute (SIPRI) Military Expenditure Database, which provides consistent and comparable data on military spending for 172 countries since 1988. This database can help us analyze the trends and patterns of military expenditure in francophone African countries and how they relate to France’s influence and security challenges.

Another data source is the Wikipedia article on the Coup Belt, which is a term used to describe the region of sub-Saharan Africa that has experienced a high frequency of coups d’état since the 1960s. This article provides a list of coups and attempted coups in francophone African countries, as well as some background information on the causes and consequences of these events. This data source can help us understand the political instability and violence in francophone African countries and how they are influenced by France’s policies and actions.

A third data source is the Human Development Index (HDI) Data Center, which is a platform that provides access to various indicators of human development for 189 countries and territories. The HDI is a composite index that measures the average achievements in three basic dimensions of human development: a long and healthy life, access to knowledge, and a decent standard of living. This data source can help us assess the development outcomes and challenges in francophone African countries and how they are affected by France’s economic and social interventions.

These data sources can provide us with valuable insights into the hidden costs and consequences of France’s influence in francophone Africa. I’ll use data analysis and visualization tools, such as Julia and R and Python, to process, explore, and communicate these data in an effective and engaging way.

Data Preprocessing:
Importing Julia packages for Data cleanup:

# Load the packages
julia> using CSV, DataFrames, PrettyTables, CSVFiles, Dates 

# Loading CSV file 
julia> MEC = CSV.read("C:\\Users\\Military expenditure by Country.csv", DataFrame, missingstring=["xxx", "..."])
julia> HDI = CSV.read("C:\\Users\\HDI.csv", DataFrame)
julia> AC = CSV.read("C:\\Users\\Africa Coup 57 23.csv", DataFrame) 

# Select the first 4 columns and rows of MEC
julia> MEC_4x4 = MEC[1:4, 1:4]
julia> HDI_2x2 = HDI[1:2, 1:2]
julia> AC_4x4 = AC[1:4, 1:4]

# Print the data in a tabular form
julia> pretty_table(MEC_4x4)
julia> pretty_table(HDI_2x2)
julia> pretty_table(AC_4x4)

# Output
┌──────────────┬──────────┬─────────┬──────────┐
│      Country │     1949 │    1950 │     1951 │
│     String31 │ Float64? │  Int64? │ Float64? │
├──────────────┼──────────┼─────────┼──────────┤
│       France │   1211.3 │    1343 │   2114.5 │
│      Morocco │  missing │ missing │  missing │
│        Benin │  missing │ missing │  missing │
│ Burkina Faso │  missing │ missing │  missing │
└──────────────┴──────────┴─────────┴──────────┘

┌─────────┬────────────────────────────────────┐
│ Country │ Human Development Index (HDI) 2021 │
│  String │                            Float64 │
├─────────┼────────────────────────────────────┤
│  France │                              0.903 │
│   Gabon │                              0.706 │
└─────────┴────────────────────────────────────┘

┌────────────┬──────────┬────────────────────────────┬──────────────────┐
│       Date │  Country │                      Event │    Head of state │
│       Date │ String31 │                     String │         String31 │
├────────────┼──────────┼────────────────────────────┼──────────────────┤
│ 1957-06-01 │    Sudan │ 1957 Sudanese coup attempt │  Abdallah Khalil │
│ 1959-11-17 │   Sundan │ 1959 Sudanese coup attempt │   Ibrahim Abboud │
│ 1963-01-13 │  Dahomey │ 1963 Dahomeyan coup d'état │      Hubert Maga │
│ 1963-10-28 │     Togo │  1963 Togolese coup d'état │ Sylvanus Olympio │
└────────────┴──────────┴────────────────────────────┴──────────────────┘
Enter fullscreen mode Exit fullscreen mode

Replacing the “missing” values with “NA”:

# Replace missing values with NA
julia> MEC = coalesce.(MEC, "NA")

# Output
┌──────────────┬────────┬──────┬────────┐
│      Country │   1949 │ 1950 │   1951 │
│     String31 │    Any │  Any │    Any │
├──────────────┼────────┼──────┼────────┤
│       France │ 1211.3 │ 1343 │ 2114.5 │
│      Morocco │     NA │   NA │     NA │
│        Benin │     NA │   NA │     NA │
│ Burkina Faso │     NA │   NA │     NA │
└──────────────┴────────┴──────┴────────┘
Enter fullscreen mode Exit fullscreen mode

Using R for visualization:

I’ll be visualizing the MEC, HDI and AC data frame in this section.

Firstly, I’ll be using the MEC data frame to give an insight of how the Military expenditure of other Francophone countries is compared to its former Colonizer, France then followed by the HDI and lastly the AC data frames.

I’ll need to reshape the data frame to long format in line with the principles of “tidy data” advocated by Hadley Wickham, which make data manipulation and analysis more efficient. This long format is well-suited for creating time series visualizations and performing various data analyses, by doing this, you make your data more amenable to the capabilities of ggplot2 and other data analysis tools, making it easier to create informative and customizable visualizations.

# loading CSV file into R
# Load the required libraries
library(tidyr)
library(ggplot2)

# Load the data from the CSV file
MEC <- read.csv("C:\\Users\\Military expenditure by Country.csv", header = TRUE, stringsAsFactors = FALSE)

# Reshape the data to a long format
MEC_long <- pivot_longer(MEC, cols = -Country, names_to = "Year", values_to = "Expenditure")

# Create a line chart with rotated X-axis labels and bold values
ggplot(data = MEC_long, aes(x = Year, y = Expenditure, color = Country, group = Country)) +
    geom_line() +
    labs(x = "Year", y = "Expenditure (Billions USD)") +
    ggtitle("Military Expenditure by Country Over Time") +
    theme_minimal() +
    scale_x_discrete(labels = function(x) substr(x, 2, 5)) +
    theme(axis.text.x = element_text(angle = 90, hjust = 1, size = 6, face = "bold"))
Enter fullscreen mode Exit fullscreen mode

Output:

Image description

Analysis of the graph:

The graph depicts African countries’ expenditures from 1949 to 2022 in millions of US dollars. It encompasses 23 countries, including France, Morocco, Congo, Burkina Faso, Benin, and Francophone countries. It also includes island nations such as Gambia, Mali, Senegal, and Guinea Bissau.
France stands out in the graph due to a rise in spending over time. It peaked in 2014 at roughly 53,639 million USD. By 2020, it is expected to fall to around 47,371 million USD. France had the highest expenditure among the countries studied.

Morocco’s military budget has also increased. It was 24 million USD in 1956, but it is now the second greatest spender among the seven countries listed. Morocco’s military spending in 2018 totaled approximately $5,378 million USD. Despite the drop, Morocco will still spend about $4,995 million USD on military operations in 2020.
The graph clearly shows the increase in spending over time. Djibouti has consistently maintained expenditure with amounts ranging from 1.8 million USD in 1980 to around 36.3 million USD in 2008, as indicated in the chart.

France spends more on defense than any other Francophone country in Africa. In 2020, France will spend approximately 53.6 billion USD on its military, representing approximately 1.9% of its GDP.

Loading the HDI data frame:

HDI <- CSV.read("C:\\Users\\HDI.csv", DataFrame)

# Output
Table: HDI Data Frame

Country              HDI     GNI   Rank_2020   Rank_2021
------------------  ----  ------  ----------  ----------
France               0.9   45937          28          28
Gabon                0.7   13367         113         112
Equatorial Guinea    0.6   12074         147         145
Cameroon             0.6    3621         150         151
Enter fullscreen mode Exit fullscreen mode

Visualizing and analyzing the Gross National Income per Capita (GNI) for France and Francophone countries using R:

# Select and Rename needed variables and assign them to a new data frame.
assign("HDIs", HDI %>% select(Country,`Human Development Index (HDI) 2021`, `Gross national income (GNI) per capita 2021`, `HDI rank 2020`, `HDI rank 2021`) %>% rename(HDI_2021 = `Human Development Index (HDI) 2021`, GNI_2021 = `Gross national income (GNI) per capita 2021`, Rank_2020 = `HDI rank 2020`, Rank_2021 = `HDI rank 2021`))

# Output Table: HDIs Data Frame

Country              HDI_2021   GNI_2021   Rank_2020   Rank_2021
------------------  ---------  ---------  ----------  ----------
France                    0.9      45937          28          28
Gabon                     0.7      13367         113         112
Equatorial Guinea         0.6      12074         147         145
Cameroon                  0.6       3621         150         151

colnames(HDIs) <- c("Country", "HDI_2021", "GNI_2021", "Rank_2020", "Rank_2021")

# Reshape the data frame to long format
library(tidyr)
HDIs_long <- pivot_longer(HDIs, cols = -Country, names_to = "Variable", values_to = "Value")

# Create a palette with 20 distinct colors
my_palette <- distinctColorPalette(20)

# Create a subset of the data for GNI_2021
GNI_data <- filter(HDIs_long, Variable == "GNI_2021")

# Create a subset of the data for HDI_2021, Rank_2020 and Rank_2021
HDI_data <- filter(HDIs_long, Variable != "GNI_2021")

# Creating a bar chart for GNI_2021
ggplot(GNI_data, aes(x = Country, y = Value, fill = Country)) +
geom_bar(stat = "identity") +
labs(title = "Gross National Income Per Capita for France & Francophone Countries",
x = "Country",
y = "Value",
fill = "Country") +
scale_fill_manual(values = my_palette) + 
theme_minimal() +
theme(text = element_text(size = 6), title = element_text(size = 8), legend.title = element_text(size = 6), legend.text = element_text(size = 5), axis.text.x = element_text(size = 6, angle = 90, hjust=1), axis.text.y = element_text(size = 8)) +
# Change the legend direction to horizontal
guides(fill=guide_legend(ncol=2))
Enter fullscreen mode Exit fullscreen mode

Output:

Image description

Insight from the chart:

The graph depicts the GDP per capita for France and Francophone countries. GNP per capita is a measure of the money earned by citizens and residents of a country, regardless of where they live. It is computed by dividing a country’s total GNP by its population.

France vs. Francophone nations: The graph depicts a significant discrepancy in GNP per capita between France and the other Francophone countries. France has the largest GNP per capita, over $40,000, whereas the rest of the world has less than $10,000. Chad has the lowest GNP per capita, which is roughly $2,000. This implies that France is far more economically developed and affluent than the other countries with which it shares a language.

Possible factors: There could be many factors that explain the difference in GNI per capita between France and the other Francophone countries. Some of them are:

_1. History: France was a colonial power that exploited the natural resources and labor of many African and Asian countries. This created a legacy of inequality and underdevelopment in those regions.

  1. Geography: France has a favorable location in Europe, with access to trade routes, markets, and technology. Many of the other Francophone countries are landlocked or have harsh climates, which limit their economic opportunities.

  2. Politics: France has a stable and democratic political system, with strong institutions and rule of law. Many of the other Francophone countries have experienced civil wars, coups, corruption, and human rights violations, which undermine their social and economic development.

  3. Education: France has a high-quality and universal education system, which produces skilled and productive workers. Many of the other Francophone countries have low literacy rates, high dropout rates, and poor quality of education, which affect their human capital and innovation potential._

Visualizing and analyzing the Human Development Index for France and Francophone countries:

# load the dplyr package
library(dplyr)
# Load ggplot2 package
library(ggplot2)

# read the csv file into a data frame called hdi_data
HDI <- read.csv("HDI 2021.csv")

# Create a subset of the data for HDI_2021
HDI_data <- select(HDIs, Country, HDI_2021)

# Define a custom palette with 20 distinct colors
my_palette <- distinctColorPalette(20)

# Generate a horizontal bar chart using ggplot2
ggplot(HDI_data, aes(x = Country, y = HDI_2021, fill = Country)) +
geom_bar(stat = "identity") +
coord_flip() + # Flip the coordinates to make the bars horizontal
labs(title = "Human Development Index for France & Francophone Countries 2021",
x = "Country",
y = "HDI_2021",
fill = NULL) +
scale_fill_manual(values = my_palette) + 
theme_minimal() +
theme(text = element_text(size = 12), title = element_text(size = 10), axis.text.x = element_text(size = 8), axis.text.y = element_text(size = 8)) +
geom_text(aes(label = HDI_2021), hjust = -0.1) # Add the values as text labels

Enter fullscreen mode Exit fullscreen mode

Output:

Image description

Analysis from the chart:

The chart shows the Human Development Index (HDI) for France and Francophone countries in 2021. HDI is a measure of the quality of life based on life expectancy, education, and income. Here are some points I can make based on the chart:

France has the highest HDI among the Francophone countries, with a value of 0.9. This means that France has a high level of human development, with long life expectancy, high education, and high income.

_Burkina Faso has the lowest HDI among the Francophone countries, with a value of 0.4. This means that Burkina Faso has a low level of human development, with short life expectancy, low education, and low income.

There is a large gap in HDI between France and the other Francophone countries. The average HDI of the other countries is 0.6, which is much lower than France’s 0.9. This suggests that there is a significant difference in the quality of life between France and its former colonies or allies.

Some factors that may explain the HDI gap are history, geography, politics, and culture. France was a colonial power that exploited the resources and labor of many African and Asian countries, creating inequality and underdevelopment._

Visualizing and analyzing the Africa’s Coup Belt for Francophone and Non-Francophone Countries using Python:

# Importing the rquired libraries
import pandas as pd
from prettytable import PrettyTable
import matplotlib.pyplot as plt
import numpy as np

# Importing CSV file 
Afrofranc = pd.read_csv(r"C:\Users\fdasb\Documents\Project Write\Africa Coup 57 23.csv", encoding='utf-8-sig')

# View headers 
Afrofranc.head()
print(table)
+---------+----------+----------------------------+-----------------+
| Country |   Date   |           Event            |     Outcome     |
+---------+----------+----------------------------+-----------------+
|  Sudan  | 01-06-57 | 1957 Sudanese coup attempt |   Coup failure  |
|  Sundan | 17-11-59 | 1959 Sudanese coup attempt |   Coup failure  |
|  Benin  | 13-01-63 | 1963 Dahomeyan coup d'état | Coup successful |
|   Togo  | 28-10-63 | 1963 Togolese coup d'état  | Coup successful |
+---------+----------+----------------------------+-----------------+

# replace Sundan with Sudan in the Country column
Afrofranc["Country"] = Afrofranc["Country"].replace ("Sundan", "Sudan")

print(table)
+---------+----------+----------------------------+-----------------+
| Country |   Date   |           Event            |     Outcome     |
+---------+----------+----------------------------+-----------------+
|  Sudan  | 01-06-57 | 1957 Sudanese coup attempt |   Coup failure  |
|  Sudan  | 17-11-59 | 1959 Sudanese coup attempt |   Coup failure  |
|  Benin  | 13-01-63 | 1963 Dahomeyan coup d'état | Coup successful |
|   Togo  | 28-10-63 | 1963 Togolese coup d'état  | Coup successful |
+---------+----------+----------------------------+-----------------+

# get a numpy array of the unique values of Country
unique_values = Afrofranc["Country"].unique ()

# print the values of unique_values
print (unique_values)
['Sudan' 'Benin' 'Togo' 'Gabon' 'Central African Republic' "Cote d'ivoire"
 'Nigeria' 'Ghana' 'Sierra Leone' 'Mali' 'Niger' 'Chad' '\xa0Mauritania'
 'Central African Empire' 'Liberia' 'Guinea-Bissau' 'Mauritania'
 'The Gambia' 'Guinea' 'Cameroon' 'Burkina Faso']

# create a vector of Francophone countries
francophone = ["Benin", "Burkina Faso", "Burundi", "Cameroon", 
"Central African Republic", 
"Chad",
"Comoros",
"Congo",
"Djibouti",
"Equatorial Guinea",
"Gabon",
"Guinea",
"Ivory Coast",
"Madagascar",
"Mali",
"Niger",
"Rwanda",
"Senegal",
"Seychelles",
"Togo"]

# create a new column in the data frame with labels for Francophone and Non-francophone countries
Afrofranc["label"] = np.where(Afrofranc["Country"].isin(francophone), "Francophone", "Non-francophone")

Afrofranc.head()
print(table)
+---------+----------+-----------------+-----------------+
| Country |   Date   |     Outcome     |      label      |
+---------+----------+-----------------+-----------------+
|  Sudan  | 01-06-57 |   Coup failure  | Non-francophone |
|  Sudan  | 17-11-59 |   Coup failure  | Non-francophone |
|  Benin  | 13-01-63 | Coup successful |   Francophone   |
|   Togo  | 28-10-63 | Coup successful |   Francophone   |
+---------+----------+-----------------+-----------------+

# Create a bar chart of the number of coups by label and outcome
counts = Afrofranc.groupby(["label", "Outcome"]).count()["Country"]
labels = ["Francophone", "Non-francophone"]
outcomes = ["Coup failure", "Coup successful", "Inconclusive", "Military junta"]
colors = ["#FF0000", "#00FF00", "#FFFF00", "#800080"] # RGB hex codes for colors
x = np.arange(len(labels)) # the label locations
width = 0.1 # the width of the bars

# Reshape counts into a DataFrame
counts = counts.unstack()

fig, ax = plt.subplots()
for i, outcome in enumerate(outcomes):
    ax.bar(x + i * width, counts[outcome], width, label=outcome, color=colors[i])
    # Add annotations for each bar
    for j in range(len(labels)):
        ax.text(x=x[j] + i * width - width / 2, y=counts.loc[labels[j], outcome] + 0.5,
                s=' {:,.0f}'.format(counts[outcome][j]))

# Add some text for labels, title and custom x-axis tick labels, etc.
ax.set_ylabel("Number of coups")
ax.set_title("Coup Outcomes by Language Group in Africa (1957-2023)")
ax.set_xticks(x + width * 1.5)
ax.set_xticklabels(labels)
ax.legend()

fig.tight_layout()

plt.show()
Enter fullscreen mode Exit fullscreen mode

Chart Output:

Image description

Analysis from the chart:

The chart shows the number of coups by language group and outcome in Africa from 1957 to 2023. A coup is a sudden and violent seizure of power from a government, usually by a small group of people. An outcome is the result of a coup, such as success, failure, inconclusive, or military junta.

Based on the chart, Here are some of the points that I found in relation to francophone and France in terms of coup d'état:

Francophone countries have a higher success rate: The image illustrates that Francophone countries have more successful coups (29) than Non-Francophone countries (32). This could imply that political systems in Francophone countries are more unstable, fragile, or violent. It could also be a result of French colonization and interventionism in these countries.

Both groupings of countries have a similar failure rate: The graph also reveals that both Francophone and Non-Francophone countries have the same number of coup failures (14 each). This could indicate that coup attempts in both categories of countries encounter similar challenges, such as a lack of coordination, popular opposition, or international criticism. It could also mean that the existing governments in both groups of countries have comparable degrees of legitimacy, support, or capacity to defend themselves.

Military juntas and inconclusive coups have a different trend: The image shows that Francophone and Non-Francophone countries have a different number of military juntas (1 and 0 respectively) and inconclusive coups (0 and 1 respectively) as a result of coups. This suggests that the outcomes of coups in Francophone nations are more decisive, leading to either regime change or the restoration of order. The consequences of coups in non-Francophone countries, on the other hand, are more uncertain, leaving the political situation unresolved or challenged. This could be due to these countries’ varying levels of institutionalization, polarization, or mediation.

Based on the above analysis, Here are further insight with reference of how France interferes in the political stability of the Francophone countries:

France’s historical legacy: France has a long history of colonialism and interventionism in Africa, especially in its former colonies that use the CFA franc as their currency. France has often supported authoritarian leaders and regimes that serve its economic and strategic interests, while ignoring or undermining the democratic aspirations and human rights of the African people. This has created resentment and distrust among many Africans, who see France as a neo-colonial power that exploits and manipulates their countries.

France’s military presence: France has maintained a significant military presence in Africa, with more than 3,000 troops deployed in Senegal, Ivory Coast, Gabon and Djibouti. France has also intervened militarily in several conflicts and crises, such as in Mali, Burkina Faso, and the Central African Republic, to fight against Islamist militants, protect its allies, and restore order. However, France’s military actions have also been criticized as being self-serving, ineffective, or counterproductive, as they have sometimes aggravated the local grievances, fueled the anti-French sentiment, or enabled the continuation of bad governance.

France’s diplomatic influence: France has tried to exert its diplomatic influence in Africa, both bilaterally and multilaterally, through various initiatives and platforms, such as the Africa-France Summit, the G5 Sahel, and the UN Security Council. France has also supported the regional organizations, such as the Economic Community of West African States (ECOWAS), in their efforts to promote democracy and peace in Africa. However, France’s diplomatic role has also been challenged by the emergence of other actors, such as China and Russia, who offer alternative models of partnership and development to the African countries. Moreover, France’s diplomatic stance has sometimes been inconsistent or contradictory, as it has claimed to respect the sovereignty and non-interference of the African countries, while also interfering in their domestic affairs when it suits its needs.

Based on the data sources from SIPRI, Wikipedia, and UNDP, and in response to the research question, here is the following summary and conclusion:

Summary: The historical and contemporary factors that contribute to the instability and violence in Francophone African countries under France’s influence are complex and interrelated. They include:

Poverty and underdevelopment: Most of the Francophone African countries rank low on the Human Development Index, which measures life expectancy, education, and income per capita. Food insecurity, malnutrition, disease, and environmental degradation are also issues. Poverty and underdevelopment foster social unrest, political upheaval, and violent conflict.

Colonial legacy and neo-colonialism: France colonized the Francophone African countries, exploiting their natural resources, imposing its culture and language, and suppressing nationalism movements. After independence, France maintained its economic and political influence over its former colonies through various mechanisms, such as the CFA franc, the pact document, the military bases, and the interventions . Many Africans see this as neocolonialism and dominance, and they hate and oppose France’s meddling in their affairs.

Ethnic diversity and marginalization: There are hundreds of different ethnic groups and languages in the Francophone African countries. However, colonial borders did not represent ethnic realities, and post-colonial republics frequently privileged some ethnic groups over others, resulting in grievances and tensions among marginalized communities. Political leaders and armed organizations have used ethnic diversity and marginalization to rally support and fuel bloodshed.

Weak governance and corruption: The Francophone African countries have experienced various forms of political instability, such as coups, civil wars, and authoritarian regimes. They are also plagued by poor governance and corruption, which jeopardize the rule of law, the delivery of public services, the accountability of institutions, and citizen trust. Weak governance and corruption have aided in the deterioration of social contracts, the formation of parallel organizations, and the escalation of violence.

Small arms proliferation and regional spillovers: The extensive availability and circulation of small arms and light weapons, which allow and exacerbate the use of violence, has an impact on Francophone African countries. Regional dynamics and spillovers, such as cross-border migrations of refugees, militants, and criminals, transnational networks of trafficking and smuggling, and the contagion effects of nearby conflicts, also have an impact. Proliferation of small guns and regional spillovers have enhanced the complexity and intensity of warfare.

Conclusion: The political instability and violence in Francophone African countries under France’s influence are the result of various and interrelated circumstances, which have historical and contemporary elements. These elements interact and reinforce one another, resulting in a vicious cycle of poverty, underdevelopment, neocolonialism, ethnic marginalization, poor governance, corruption, small arms proliferation, and regional spillovers. To address these factors and prevent further violence, a comprehensive and holistic approach is required, involving the participation and cooperation of all stakeholders, including Francophone African countries, France, regional and international organizations, and civil society. Such an approach should attempt to promote regional democracy, human rights, development, peace, and security.

Top comments (0)