This curated dataset provides a comprehensive geographic, demographic, and political overview of all 27 member states of the European Union.
Unlike raw data exports, this resource is the result of a meticulous process of research and data selection. It captures key indicators for every EU member country, including geographic identifiers, capital cities, spatial coordinates, land area, population figures, EU accession year, and Schengen Area membership status, making it suitable for educational analysis, data visualization, and applied data science projects.
The purpose of this resource is to serve as a foundational reference table for educators, students, and researchers, providing a clean, verified, and technically robust starting point for any project involving European Union member states and their indicators.
To ensure maximum technical compatibility and international reach, this dataset follows these standards:
-
Metadata in English: All variable names (column headers) are in English (e.g.,
country_name,eu_accession_year,population), facilitating seamless integration with global data science libraries in R and Python. -
Data Integrity: The records maintain their geographic, demographic, and political accuracy, using international nomenclature for countries, capital cities, and ISO 3166-1 alpha-3 codes, as well as standardized year values for EU and Schengen accession.
-
Encoding: The files were validated using
readr::guess_encoding()in R, which detected pure ASCII encoding (confidence = 1.0). Since ASCII is a strict subset of UTF-8, the dataset is fully compatible with UTF-8 environments across Windows, macOS, and Linux without risk of character corruption. -
Cross-Platform Compatibility (R and Python): Both formats were successfully imported in R and Python without errors or warnings. In R, the
.xlsxand.csvfiles were loaded usingreadxl::read_excel()andreadr::read_csv()respectively, correctly parsing all 27 rows and 12 columns — 3 character (country_name,iso_alpha3,capital), 2 boolean (is_schengen_member,landlocked), 3 integer (eu_accession_year,area_km2,population), and 3 numeric (latitude,longitude, andschengen_accession_year— the latter parsed as<dbl>due to the presence of 2 missing values, displayed asNAin R andNaNin Python). In Python, both files were imported viapandas.read_csv()andpandas.read_excel(), yielding identical DataFrames. The dataset is ready for immediate use in standard data science workflows across Windows, macOS, and Linux. -
Geospatial Validation (R and Python): The
latitudeandlongitudevariables were validated beyond simple import testing. In R, interactive maps were successfully generated using theleafletpackage, correctly plotting all 27 EU member states. In Python, equivalent maps were produced using thefoliumlibrary, yielding identical geospatial results. Both libraries confirmed the accuracy and integrity of the coordinate data for mapping workflows. -
Missing Values in
schengen_accession_year: This variable contains 2 missing values, corresponding to Cyprus and Ireland — the only two EU member states that are not members of the Schengen Area. As a consequence, the column type is promoted from integer to<dbl>in R andfloat64in Python, displayingNAandNaNrespectively for these two countries. This behavior is expected and consistent with standard data science practice for nullable numeric columns.
The dataset is provided in .csv and .xlsx formats, containing the following variables:
| Variable | Type | Description |
|---|---|---|
id |
Integer | Unique numeric identifier for each country (1 to 27). |
country_name |
String | Full official name of the EU member state. |
iso_alpha3 |
String | ISO 3166-1 alpha-3 three-letter country code (e.g., AUT, BEL, FRA). |
capital |
String | Name of the country's capital city. |
eu_accession_year |
Integer | Year the country officially joined the European Union (e.g., 1958, 2004, 2013). |
schengen_accession_year |
Float | Year the country joined the Schengen Area. Contains 2 missing values (NA/NaN) for Cyprus and Ireland, which are not Schengen members. |
is_schengen_member |
Boolean | Indicates whether the country is a Schengen Area member (TRUE) or not (FALSE). |
latitude |
Float | Geographic latitude coordinate of the country's centroid (decimal degrees). |
longitude |
Float | Geographic longitude coordinate of the country's centroid (decimal degrees). |
landlocked |
Boolean | Indicates whether the country is landlocked (TRUE) or has coastal access (FALSE). |
area_km2 |
Integer | Total land area of the country in square kilometers. |
population |
Integer | Estimated total population of the country. |
-
Data Source: Information validated against official records from the following sources:
-
Normalization: Column names use
snake_casefor easy calling in Python, R, and SQL functions. -
Interoperability: Both
.csvand.xlsxformats were tested in R and Python without errors. See Language and Encoding, item 4 for full details. -
Purpose: This dataset was created to provide a valuable digital asset for end users of R, Python, and SQL, offering a clean and ready-to-use resource that can be immediately integrated into data analysis, visualization, and educational workflows.
-
Data Currency: The variables
area_km2andpopulationreflect the most recent data available from the World Bank Group, witharea_km2updated to 2023 andpopulationupdated to 2024, ensuring the dataset represents current figures for all 27 EU member states.
This dataset is distributed under the Creative Commons Attribution 4.0 International (CC BY 4.0) license. You are free to share and adapt the material as long as appropriate credit is given.
Renzo Caceres Rossi
- ORCID: 0009-0005-0744-854X
- GitHub: lightbluetitan