Advanced8 columnsUp to 10,000 rows Fictional data

Machine Sensor Readings (IoT) dataset

10-minute readings from factory machines that slowly wear out, warn and fail: predictive maintenance practice.

Made the moment you click and sent straight to you. Nothing is saved on our server.

About this dataset

Readings every ten minutes from machines on a fictional factory floor, starting 1 January 2026: temperature, vibration, pressure and RPM, with a status of Normal, Warning, Fault or Stopped.

Every so often a machine starts to wear out. Over the next several hours its vibration and temperature climb, pressure and speed drop, it raises warnings and finally faults, and then it is stopped for repair before going back to normal. Spotting that drift early is what predictive maintenance is about.

Good for practising: Anomaly detection, Time series, Rolling features, Classification.

What's built into the data

The rows are random, but they follow rules, so there is something real to find. These are the patterns to look for:

  • Wear-outs start at random and last about 6 to 15 hours (36–90 readings) before the fault.
  • Vibration rises fastest near the end; temperature climbs steadily; pressure and RPM sag.
  • After a fault the machine shows 'Stopped' with RPM 0 for 1–3 hours, then resets to normal.
  • Faults are rare compared with normal readings, so the data is very imbalanced.

Columns

ColumnTypeDescription
reading_idID (number)Row number.
timestampDate & timeTime of the reading (every 10 minutes).
machine_idCategoryMachine M-01 to M-10.
temperature_cDecimalBearing temperature, °C.
vibration_mm_sDecimalVibration velocity, mm/s.
pressure_barDecimalHydraulic pressure, bar.
rpmWhole numberMotor speed; 0 while stopped.
statusCategoryNormal, Warning, Fault or Stopped.

Preview: the first 8 rows

A sample with seed 2026. Your download will have different values but the same columns and patterns.

reading_idtimestampmachine_idtemperature_cvibration_mm_spressure_barrpmstatus
12026-01-01 00:00M-0158.052.3835.791493Normal
22026-01-01 00:00M-0261.112.5875.991450Normal
32026-01-01 00:10M-0158.832.3126.251501Normal
42026-01-01 00:10M-0262.72.7945.741474Normal
52026-01-01 00:20M-0157.542.4925.881490Normal
62026-01-01 00:20M-0262.222.6116.111458Normal
72026-01-01 00:30M-0158.112.6545.911506Normal
82026-01-01 00:30M-0264.362.7636.081443Normal

Practice exercises

  1. Plot vibration and temperature for one machine and shade the Warning and Fault periods.
  2. Add rolling features (1-hour mean and slope of vibration) and see how early they rise before a fault.
  3. Label each reading 'fails within the next 6 hours: yes/no' and train a classifier on the rolling features.
  4. Try an unsupervised method (z-score or Isolation Forest) on normal readings only and see what it flags.
  5. Work out mean time between failures and mean repair time per machine.

Stuck on one? Each exercise uses ideas from the lessons below, and trying it with the messy option on turns it into a cleaning exercise as well.

Load it straight into Python

You don't have to download first. Pandas can read the link directly, in Jupyter, Google Colab or a script. Keep the seed so you get the same data every time you run the notebook:

import pandas as pd

url = "https://beeprotonai.info/resources/datasets/machine-sensors/download/?rows=1000&seed=42"
df = pd.read_csv(url, parse_dates=["timestamp"])
df.head()

For SQL practice, download the SQL format and run it against an empty database, for example sqlite3 practice.db < machine-sensors-1000-rows-seed42.sql or mysql -u root -p practice < machine-sensors-1000-rows-seed42.sql (use your file's name). It creates a table called machine_sensors and fills it.

About the data

Everything in this file is invented. Names are random pairings of common first names and surnames, email addresses use example.com (reserved for examples, so it can never reach anyone), and phone numbers start with +91 00, which no real Indian mobile number does. Any resemblance to a real person or business is coincidence. Dates run from 1 April 2024 to 31 March 2026 unless a column says otherwise. Use it freely for learning, teaching and projects, including commercial ones, with no attribution required (CC0).

Lessons that go with it

More datasets

See all 14 datasets →