Check the setup
- Python 3.10 or newer
- A notebook environment such as Jupyter or Google Colab
- An internet connection
National Weather Service storm reports for building U.S. severe-weather history, loss, and event-type analysis tools.
From source to product signal
Storm Events publishes yearly details, locations, and fatalities CSVs. Start with one recent details file, not the full 1950-present archive. Reports are NWS-entered events, so counts are not a complete census of every storm and damage figures can be estimated.
Install the packages, then run the notebook cell.
python -m pip install pandas requests
import gzip
import re
from io import BytesIO
import pandas as pd
import requests
listing = requests.get(
"https://www.ncei.noaa.gov/pub/data/swdi/stormevents/csvfiles/",
timeout=30,
)
listing.raise_for_status()
names = re.findall(
r'href="(StormEvents_details-ftp_v1.0_d2025_c\d+\.csv\.gz)"',
listing.text,
)
filename = sorted(names)[-1]
archive = requests.get(
"https://www.ncei.noaa.gov/pub/data/swdi/stormevents/csvfiles/"
+ filename,
timeout=120,
)
archive.raise_for_status()
events = pd.read_csv(
BytesIO(gzip.decompress(archive.content)),
nrows=200,
low_memory=False,
)
print(events[["EVENT_ID", "STATE", "EVENT_TYPE", "BEGIN_DATE_TIME"]].head())Test a useful signal
Test whether one yearly details file can power a local hazard-history table.
NOAA National Centers for Environmental Information is a government source. Last verified 2026-08-18. Temporal coverage: 1950-present.