CoolFace
Apppublic

GintautasLuksas/waste_to_wardrobe_index

sourceHugging Faceupdated 5mo agoView on Hugging Face
2likes
App README

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:

text
data/raw/EEA_europe_waste_per_capita_2020.xlsx

Column used:

text
Total value

This column is treated as textile waste per capita in kilograms per person. The app renames it to:

text
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:

text
United States = 40.22 kg/person

This 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:

text
1.25 kg CO2e avoided per reused item

This 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:

  1. 1.Loads the EEA Excel workbook from data/raw.
  2. 2.Renames the first column to Country.
  3. 3.Renames Total value to Textile Waste (kg/person).
  4. 4.Removes aggregate geography rows.
  5. 5.Normalizes a few country names, such as Türkiye to Turkey.
  6. 6.Adds a manual United States row.
  7. 7.Adds ISO3 country codes for mapping.
  8. 8.Combines selected countries with editable population assumptions.

Methodology

The app calculates a scenario, not a measured emissions inventory.

Core formula:

text
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,000

Default assumptions:

text
1 reused item equivalent = 1 kg of textile waste redirected
1 reused item equivalent = 1.25 kg CO2e avoided

Example 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:

bash
git clone https://github.com/GintautasLuksas/waste_to_wardrobe_index.git
cd waste_to_wardrobe_index

Create and activate a virtual environment:

bash
python -m venv .venv
.venv\Scripts\activate

Install dependencies:

bash
pip install -r requirements.txt

Run the app:

bash
streamlit run streamlit_app.py

Requirements

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