GintautasLuksas/waste_to_wardrobe_index
Waste-to-Wardrobe Index
Waste-to-Wardrobe Index is a Streamlit portfolio app that estimates how much CO2e could be avoided if a selected share of textile waste were redirected into second-hand resale.
The project was designed as a data science portfolio piece for circular fashion. It combines public textile waste data, editable population assumptions, and a transparent avoided-emissions factor inspired by Vinted's public impact reporting.
What the App Shows
- Textile waste per person by country
- A user-selected resale or reuse scenario
- Estimated textile volume redirected from waste to reuse
- Estimated avoided CO2e emissions
- A country ranking, choropleth map, and downloadable scenario table
- Editable assumptions so reviewers can test sensitivity instead of treating the model as fixed truth
Data Sources
1. European Textile Waste
Source: European Environment Agency (EEA)
Local file:
data/raw/EEA_europe_waste_per_capita_2020.xlsxColumn used:
Total valueThis column is treated as textile waste per capita in kilograms per person. The app renames it to:
Textile Waste (kg/person)Rows such as EU-27, EU27, EU28, Europe, OECD, and other aggregate regions are removed so the analysis only compares individual countries.
EEA reuse note: unless otherwise indicated, EEA website content can be reused for commercial or non-commercial purposes free of charge when the source is acknowledged. Copyright holder: European Commission, European Environment Agency.
2. United States Textile Waste
Source: US Environmental Protection Agency (EPA), textiles in municipal solid waste.
The app includes the United States as a manual row:
United States = 40.22 kg/personThis lets the app compare European EEA data with a large non-European benchmark market.
3. Population Assumptions
The app includes default population estimates in millions for each country. These are used to scale per-person textile waste into national opportunity size.
Population values are editable in the Streamlit sidebar. That is intentional: this is a scenario model, so population assumptions should be visible and easy to change.
4. Vinted Impact Reporting
Source: Vinted and Ipsos, Environmental Impact of Second-Hand Fashion in Europe / Vinted Impact Report 2023.
Vinted's public reporting is used as methodological inspiration for the avoided-emissions-per-resale assumption. The app default is:
1.25 kg CO2e avoided per reused itemThis value is editable in the sidebar. The app does not claim to reproduce Vinted's internal model or measured company impact. It uses a simplified, transparent factor to create a portfolio-ready "what if" scenario.
5. ISO Country Codes
The app uses an internal ISO3 mapping dictionary so the Plotly choropleth can render countries consistently without needing to download a country-code file at runtime.
Data Cleaning and Conversion
The app performs these transformations:
- Loads the EEA Excel workbook from
data/raw. - Renames the first column to
Country. - Renames
Total valuetoTextile Waste (kg/person). - Removes aggregate geography rows.
- Normalizes a few country names, such as
TürkiyetoTurkey. - Adds a manual United States row.
- Adds ISO3 country codes for mapping.
- Combines selected countries with editable population assumptions.
Methodology
The app calculates a scenario, not a measured emissions inventory.
Core formula:
reused_kg_per_person = textile_waste_kg_per_person * reuse_share
reused_item_equivalents = reused_kg_per_person * population / 1 kg_per_item
co2e_avoided_kt = reused_item_equivalents * avoided_co2e_kg_per_item / 1,000,000Default assumptions:
1 reused item equivalent = 1 kg of textile waste redirected
1 reused item equivalent = 1.25 kg CO2e avoidedExample interpretation:
If a country has 20 kg/person of textile waste and the user chooses a 25% reuse scenario, the model treats 5 kg/person as redirected into second-hand reuse. That amount is converted into reused item equivalents and multiplied by the avoided CO2e factor.
App Features
- Country multiselect
- Scenario slider for textile waste redirected to resale
- Editable avoided CO2e factor
- Editable population values
- Total avoided-emissions metric
- Total reused-textile metric
- Top-opportunity country metric
- Median textile-waste metric
- Plotly horizontal ranking chart
- Plotly choropleth map
- Downloadable CSV output
- Method tab explaining sources and formulas
How to Run Locally
Clone the repository:
git clone https://github.com/GintautasLuksas/waste_to_wardrobe_index.git
cd waste_to_wardrobe_indexCreate and activate a virtual environment:
python -m venv .venv
.venv\Scripts\activateInstall dependencies:
pip install -r requirements.txtRun the app:
streamlit run streamlit_app.pyRequirements
Main libraries:
- Streamlit
- pandas
- numpy
- Plotly
- openpyxl
Limitations
- The model is intentionally simplified for a portfolio use case.
- The EEA and EPA data are not from the same reporting system or year.
- The avoided CO2e factor is a transparent assumption, not a universal emissions constant.
- The model assumes 1 kg of redirected textile waste equals 1 reused item equivalent.
- Results should be read as directional opportunity sizing, not regulatory-grade lifecycle assessment.
Future Improvements
- Add year-by-year textile waste trends where public data is available.
- Add uncertainty ranges for the avoided CO2e factor.
- Separate apparel, footwear, and household textiles if source data allows.
- Add Vinted market-presence overlays by country.
- Add a second scenario comparing resale, recycling, landfill, and incineration pathways.
Acknowledgements
- European Environment Agency
- US Environmental Protection Agency
- Vinted and Ipsos public impact reporting
- Streamlit
- Plotly
- pandas
