total number of immigrants foreign-born population living in European Union 2024 2025 record high
Model: Kimi K2.6 Checked on:
According to Eurostat data, the foreign-born population residing in the European Union (EU-27) reached approximately 62.6 million in 2024 and 64.7 million in 202512.
This 2025 figure represents a record high in the available series, which covers the period from 2015 through 20251. The trend shows a steady increase over the decade, with particularly notable growth in the most recent years, rising from about 60.1 million in 2023 to the current peak of 64.7 million1. The chart generated during the analysis illustrates this upward trajectory across the full available time series1.
- Code Run 1Dataset: tps00178
Images
foreign_born_eu.svgDataset filters for
tps00178Filter Value(s) geo EU27_2020 c_birth FOR age TOTAL sex T unit NR Program output
freq c_birth age unit sex geo time value 0 A FOR TOTAL NR T EU27_2020 2022 56045896 1 A FOR TOTAL NR T EU27_2020 2020 54855524 2 A FOR TOTAL NR T EU27_2020 2015 44288815 3 A FOR TOTAL NR T EU27_2020 2025 64719037 4 A FOR TOTAL NR T EU27_2020 2021 55624109 5 A FOR TOTAL NR T EU27_2020 2016 45879196 6 A FOR TOTAL NR T EU27_2020 2023 60115595 7 A FOR TOTAL NR T EU27_2020 2018 50693432 8 A FOR TOTAL NR T EU27_2020 2019 53233648 9 A FOR TOTAL NR T EU27_2020 2017 48067848 10 A FOR TOTAL NR T EU27_2020 2024 62634187 Sorted: time value 2 2015 44288815 5 2016 45879196 9 2017 48067848 7 2018 50693432 8 2019 53233648 1 2020 54855524 4 2021 55624109 0 2022 56045896 6 2023 60115595 10 2024 62634187 3 2025 64719037 Record high: 64,719,037 in 2025 2024: 62,634,187 2025: 64,719,037 Chart saved as foreign_born_eu.svgCode
import pandas as pd import matplotlib.pyplot as plt df = pd.read_csv(DATASET_FILE) print(df) # Convert to numeric and sort by time df['value'] = pd.to_numeric(df['value'], errors='coerce') df = df.sort_values('time') print("\nSorted:") print(df[['time', 'value']]) max_val = df['value'].max() max_year = df.loc[df['value'].idxmax(), 'time'] print(f"\nRecord high: {max_val:,.0f} in {max_year}") print(f"2024: {df[df['time']==2024]['value'].values[0]:,.0f}") print(f"2025: {df[df['time']==2025]['value'].values[0]:,.0f}") # Create a chart plt.figure(figsize=(10, 6)) plt.plot(df['time'], df['value']/1_000_000, marker='o', linewidth=2, markersize=8) plt.title('Foreign-born population in the EU-27') plt.xlabel('Year') plt.ylabel('Millions') plt.grid(True, alpha=0.3) plt.tight_layout() plt.savefig('foreign_born_eu.svg') plt.close() print("\nChart saved as foreign_born_eu.svg") - Eurostat dataset: Foreign-born population