runtime

datasets real and made-up data to practise on

Datasets

Data for the Playground, Database Lab and Performance Lab. Pick one and open its files.

Packaged foods sold in the U.S. from the crowd-sourced Open Food Facts database, with nutrition and labels.

300 products2 tablesJan 2012 – Oct 2026

what to watch for

Tricky rows

  • Products with no nutrition values at all6 rows
  • Nutri-Score recorded as "unknown" or "not-applicable" instead of a–e38 rows
  • Products with no package quantity69 rows
  • Quantities as free text in mixed units ("450g", "12 oz", "1.89 L")231 rows

files

Open a file to see what one row means, its columns and a preview. Open in Playground starts a new file there with code that loads it.

products300 rows · 20 columns · CSV

One packaged food product.

In your code: data/products.csv

  • codetextkey

    Barcode (keep as text: many start with 0)

  • product_nametext · can be empty

    Name as entered

  • brandstext · can be empty

    Brands, comma-separated as entered

  • quantitytext · can be empty

    Package size as free text

  • search_categorytext

    Which of the six categories it was collected from

  • nutriscore_gradetext · can be empty

    Nutri-Score a–e, or unknown / not-applicable

  • nova_groupinteger · can be empty

    How processed it is, from 1 (unprocessed) to 4 (ultra-processed)

  • ecoscore_gradetext · can be empty

    Environmental score a-plus–f, or unknown

  • completenessdecimal · can be empty

    How complete the record is, 0–1

  • created_attimestamp · can be empty

    When the product was added, UTC

  • last_modified_attimestamp · can be empty

    Last edit, UTC

  • energy_kcal_100gdecimal · can be empty

    Energy, kcal per 100 g

  • fat_100gdecimal · can be empty

    Fat, g per 100 g

  • saturated_fat_100gdecimal · can be empty

    Saturated fat, g per 100 g

  • carbohydrates_100gdecimal · can be empty

    Carbohydrates, g per 100 g

  • sugars_100gdecimal · can be empty

    Sugars, g per 100 g

  • fiber_100gdecimal · can be empty

    Fibre, g per 100 g

  • proteins_100gdecimal · can be empty

    Protein, g per 100 g

  • salt_100gdecimal · can be empty

    Salt, g per 100 g

  • sodium_100gdecimal · can be empty

    Sodium, g per 100 g

product_tags4,919 rows · 3 columns · CSV

One tag on one product: categories, labels, allergens, traces, countries and ingredient analysis.

In your code: data/product_tags.csv

  • codetextkey→ products

    Product barcode

  • kindtextkey

    category, label, allergen, trace, country or analysis

  • tagtextkey

    Tag, with language prefix (en:organic)

data/products.json300 records · JSON

One packaged food product.

In your code: data/products.json

data/products.jsonl300 records · JSON Lines

One packaged food product.

In your code: data/products.jsonl

relationships

How to join these tables. Left column matches the right column.

  • product_tags.code → products.code

Data from Open Food Facts (openfoodfacts.org), © Open Food Facts contributors, available under the Open Database License.

where the course uses it

Lessons and practice questions use small samples of Food Products; projects open its files.

Data from Open Food Facts (openfoodfacts.org), © Open Food Facts contributors, available under the Open Database License.

Food Products dataset — Python Datasets · Runtime