Large amounts of Ukraine’s arable land are controlled by a few agribusinesses. Oakland Institute has been tracking consolidation of agricultural land as well as land reform policy in Ukraine. The goal of this application is to analyze Ukrainian agricultural exports data to see the activity of some of the companies identified in Oakland Institute's report over time: https://www.oaklandinstitute.org/war-theft-takeover-ukraine-agricultural-land
We are interested in the export shares of some of these companies to other countries and regions. The goal of this project is to help analyze exports for one of the following countries or regions: Spain, Belgium or Asia. More destination countries could be analyzed but the data is unavailable.
This setup should only have to be run once per machine you run it on.
- Install Docker. The project is designed to run in a Docker container. Therefore, the only prerequisite is Docker: Get Docker
- Clone the repo
git clone https://github.com/uchicago-dsi/oakland-institute-ukraine.git
- Change to the root project directory:
cd oakland-institute-ukraine
- Switch to the
dev
branch. - Dowload all data files here to the root directory.
- Unzip the downloaded file. You should have a directory that looks like this:
├── data/ │ ├── clean │ ├── raw
- Create an
.env
file in the root directory and set theCOUNTRY
variable to the country/region you want to analyze: "spain", "belgium" or "asia". The.env
file should look like this:COUNTRY="country"
- Open Docker Desktop (in case it wasn't running already) and build the Docker image from the root project directory with the following command:
make build
- If you want to re-run the data pipeline (i.e. clean the data files) run the following command:
make run-pipeline
You can check the clean data files at the data/ig/
directory named as "ig_clean_country".
- If you want to see the data visualizations for the corresponding country in a Jupyter notebook without re-running the data pipeline run:
a. Copy and paste the Jupyter server URL in your preferred web browser.
make jupyter
b. Open theexports_shares.ipynb
file and add the set thecountry
variable to the corresponding country.
c. Run the notebook and see the visualizations.
/bsgi
bsgi_destinations.csv
: Black Sea Grain Initiative dataset with volume of exports
data ("total metric tons" column) grouped by country of destination ("Country" column).
Data corresponds to three Black Sea ports: Odesa, Chornomorsk, Yuzhny/Pivdennyi.
bsgi_outbound.csv
: Black Sea Grain Initiative dataset with exports
data disaggregated at the shipment level. Data corresponds to three Black Sea
ports: Odesa, Chornomorsk, Yuzhny/Pivdennyi.
/ig
ig_kernel_10000.csv
: Import Genius data containing information on shipment exports for Kernel
(company in top 10 firms controlling agricultural land in Ukraine).
/land_matrix
deals.csv
: Land Matrix data on land deals around the world at the "Company" level.
It also has information about the "Target country" of the land deal.
locations.csv
: Land Matrix data on land deals locations with coordinates ("Point" column).
It seems that locations are at disaggregated at least at the "hromada" level (municipal level).
/panjiva
Excel files with export data from Panjiva for the top 10 firms controlling agricultural land in Ukraine and its subsidiaries. Files are named following the syntax "panjiva_[companya_name].xlsx".
/regional_maps
ukr_admbnda_adm3_sspe_20230201.shp
: shape file from The Humanitarian Data Exchange
project with Ukrainian administrative divisions at the 3rd level of disaggregation.
We believe it is the "hromada" or municipality level but we cannot confirm from
the available documentation: https://data.humdata.org/dataset/cod-ab-ukr
.
├── .gitignore
├── Dockerfile
├── README.md
├── __init__.py
├── requirements.txt
├── notebooks/
│ ├── README.md
│ ├── __init__.py
│ ├── export_data.ipynb
│ ├── land_data.ipynb
│ ├── panjiva.ipynb
│ └── un_data_exploration.ipynb
├── output/
│ └── README.md
└── utils/
├── README.md
├── __init__.py
├── app.py
├── clean_data.py
├── get_data.py
├── map.py
├── plot.py
├── record_linkage.py
└── transform_data.py