Stock Register (Inventory) dataset
Monthly stock register for five warehouses: opening, received, issued, closing, reorder level and value.
About this dataset
A month-by-month stock register like the ones kept in Tally or a shared Excel sheet: for each warehouse and item, the stock at the start of the month, what came in, what went out, what was left, the reorder level, and the value of the closing stock.
The numbers hang together the way a real register should, so you can audit the file yourself. Closing stock always equals opening plus received minus issued, and each month's opening equals the previous month's closing for the same item and warehouse. Small downloads cover one month across many items; bigger ones go back up to 24 months.
Good for practising: Excel formulas, Data validation, SQL joins, Inventory analysis.
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:
- closing_stock = opening_stock + received_qty − issued_qty, on every row.
- Each month's opening stock is the previous month's closing stock for the same SKU and warehouse.
- Stock is usually reordered when it runs close to the reorder level, so you will see a saw-tooth pattern over time.
- Unit costs creep up slowly, by up to about 1% a month, so stock value can rise even when quantities do not.
- '(Bulk)' items are the same goods in larger packs at a higher unit cost.
Columns
| Column | Type | Description |
|---|---|---|
month | Date | First day of the month this row covers. |
warehouse | Category | One of five warehouses. |
sku | ID (text) | Stock-keeping unit code (repeats across months and warehouses). |
item_name | Category | Item description. |
category | Category | Stationery, Electrical, Grocery, Hardware, Cleaning or Packaging. |
unit | Category | Unit of measure (pcs or kg). |
opening_stock | Whole number | Quantity at the start of the month. |
received_qty | Whole number | Quantity received during the month. |
issued_qty | Whole number | Quantity issued or sold during the month. |
closing_stock | Whole number | Quantity at the end of the month. |
reorder_level | Whole number | Order more when stock falls below this. |
needs_reorder | TRUE / FALSE | True if closing stock is below the reorder level. |
unit_cost | Amount (₹) | Cost per unit in rupees this month. |
stock_value | Amount (₹) | closing_stock × unit_cost. |
supplier | Category | Fictional supplier name. |
Preview: the first 8 rows
A sample with seed 2026. Your download will have different values but the same columns and patterns.
| month | warehouse | sku | item_name | category | unit | opening_stock | received_qty | issued_qty | closing_stock | reorder_level | needs_reorder | unit_cost | stock_value | supplier |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2026-03-01 | WH-Chennai | SKU-1021 | LED Bulb 9W | Electrical | pcs | 330 | 0 | 204 | 126 | 205 | TRUE | 95.61 | 12047.26 | Northstar Enterprises |
| 2026-03-01 | WH-Chennai | SKU-1063 | Screwdriver Set | Hardware | pcs | 426 | 0 | 245 | 181 | 283 | TRUE | 342.6 | 62009.73 | Apex Trading Co. |
| 2026-03-01 | WH-Chennai | SKU-1073 | Drill Bit Set | Hardware | pcs | 424 | 0 | 209 | 215 | 261 | TRUE | 495.41 | 106513.92 | Sunrise Distributors |
| 2026-03-01 | WH-Delhi | SKU-1052 | Tea Leaves (Bulk) | Grocery | kg | 188 | 0 | 74 | 114 | 75 | FALSE | 2047.12 | 233371.68 | Metro Wholesale |
| 2026-03-01 | WH-Delhi | SKU-1081 | Floor Cleaner 1L | Cleaning | pcs | 498 | 545 | 187 | 856 | 251 | FALSE | 120.67 | 103295.09 | Greenleaf Supplies |
| 2026-03-01 | WH-Delhi | SKU-1107 | Packing Tape | Packaging | pcs | 550 | 0 | 133 | 417 | 239 | FALSE | 49.32 | 20564.76 | Apex Trading Co. |
| 2026-03-01 | WH-Mumbai | SKU-1087 | Broom | Cleaning | pcs | 38 | 0 | 22 | 16 | 20 | TRUE | 117.82 | 1885.13 | Sunrise Distributors |
| 2026-03-01 | WH-Pune | SKU-1047 | Wheat Atta | Grocery | kg | 111 | 0 | 35 | 76 | 38 | FALSE | 40.1 | 3047.29 | Northstar Enterprises |
Practice exercises
- Check the register: add a column that recomputes closing stock and flag any row where it does not match.
- List every item that is below its reorder level in the latest month, with the warehouse and supplier.
- Find the total stock value per warehouse per month and chart it.
- Work out stock turnover (issued ÷ average stock) per category. Which category moves fastest?
- In SQL, use a window function (LAG) to confirm each month's opening equals the last month's closing.
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/inventory/download/?rows=1000&seed=42"
df = pd.read_csv(url, parse_dates=["month"])
df.head()
For SQL practice, download the SQL format and run it against an empty database, for example sqlite3 practice.db < inventory-1000-rows-seed42.sql or mysql -u root -p practice < inventory-1000-rows-seed42.sql (use your file's name). It creates a table called inventory 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
Two years of orders from a fictional chain of Indian sweet shops, with Diwali …
Employee & Attrition RecordsAn HR file of employees with salary, satisfaction, overtime and whether they left: built …
Student Exam ResultsMarks in five subjects with attendance and study hours, plus totals, percentage, result and …
Customer List (CRM)Customer records with contact details, segment, orders and spend: ideal for cleaning, deduplication and …
Website Traffic (Analytics)Daily sessions, users, bounce rate and conversions by page, traffic source and device.
Daily City WeatherSimulated daily temperature, rain, humidity and AQI for Indian cities, with monsoon and winter …