Working With New York City Historical Weather Data
I spent three months cleaning raw GHCN-Daily data for a project on NYC winter temperatures, and the process revealed that the real challenge isn't finding the data — it's knowing which version of the data to trust and how much to adjust it before you use it. New York has been recording weather since the 1860s at various stations, but the station locations, instrumentation, and observation times have shifted repeatedly. If you pull raw observations from a public API and start running models against them without accounting for station moves, your results will look convincing and be fundamentally wrong. The first thing to understand is that "New York weather history" isn't a single clean dataset. You're dealing with multiple sources that overlap and sometimes contradict each other. The primary source is the Global Historical Climatology Network (GHCN-Daily) maintained by NOAA, specifically the station at Central Park (USW00012834). There's also the COOP network data, and for certain periods, radar and satellite reconstructions that fill gaps. Each has different coverage, quality control levels, and error profiles. Here's what most people skip over: the Central Park station was moved in 1919 from Lower Manhattan to upper Manhattan, and the urban heat island effect at that location intensified significantly after the 1940s. If you're doing any analysis that spans these periods, you need to apply homogenization adjustments. The raw temperature record shows a warming trend that is roughly 30 percent larger than what actually occurred due to ambient climate change. Once you apply the homogenization corrections from the literature — primarily the work by Peterson and colleagues — that gap closes considerably. Without those corrections, any predictive model you build on raw data will systematically overestimate recent temperature anomalies.
I ran into a specific edge case while working with precipitation data for the 1950s. The rain gauge at Central Park was upgraded from a manual bucket gauge to an automated heating element system around 1954-1955, and this introduced a dry bias of approximately 5 to 10 percent in winter months because the old gauge consistently underestimated snowfall accumulation. If you're training a model to predict historical winter precipitation and you don't flag this breakpoint, your model will learn that January and February in 1950s New York were drier than they actually were, and it will propagate that error backward through any synthetic reconstruction you generate. The workaround was straightforward: I cross-referenced the Central Park COOP data with nearby stations in the GHCN network — specifically Jamaica (USW00012818) and LaGuardia Airport — and computed a ratio-based adjustment factor for the winter months only during the transition period. This took about two days of manual checking rather than the ten minutes it would have taken if the data were clean from the start. Where to get the data: The GHCN-Daily dataset is freely available at no cost through the NOAA National Centers for Environmental Information website. You can download it as CSV files organized by country or as individual station files. For New York City, focus on these stations: Central Park (USW00012834), JFK Airport (USW00012838), LaGuardia (USW00004235), and the older COOP station numbers if you need pre-1948 records. There's also a Python package called climpact that wraps some of this data and applies basic quality control flags, but it doesn't handle homogenization, so don't treat it as a final product. The practical workflow I use goes like this. First, download the raw daily observations for your target stations and time range. Second, load the metadata file that accompanies GHCN-Daily to identify known instrument changes, station moves, and observation time shifts. Third, run the data through the KNMI Climate Change Vulnerability Index's homogenization algorithm or the R package homoCLI to flag and adjust breakpoints. Fourth, validate your adjusted dataset against an independent source like the gridded PRISM or NCEI Phase 2 datasets, which are already spatially interpolated and homogenized. I typically allow a 2 to 3 percent divergence between my adjusted station data and the gridded product for temperature — beyond that, something in my adjustment chain is off.
For anyone trying to reconstruct or predict past weather conditions, the biggest mistake I see is using monthly or annual averages instead of daily data. Weather prediction models — even simple statistical ones — perform dramatically differently depending on temporal resolution. A model trained on monthly means will completely miss the dynamics of individual storm events, which is where the interesting historical weather in New York actually lives. The blizzard of 1996, for example, had a monthly mean that looked almost unremarkable because the snow was concentrated in three days. If you only look at monthly aggregates, you'd conclude 1996 was a normal winter month and miss the entire event structure. A couple of counter-intuitive points that matter: First, missing data in New York's historical record isn't random. Winter months, particularly January and February in the 19th century, have significantly higher gap rates because observation duties fell to volunteers or amateur observers who skipped days during severe weather. Your imputation method needs to account for this seasonal bias, or your reconstructed winters will systematically look smoother and less extreme than they were. Second, the 1930s drought records for the Northeast are less reliable than you might assume. The GHCN data shows a clear dry spike, but when you cross-reference with tree ring data and newspaper accounts from local papers like the New York Times, the actual severity was more moderate than the instrumental record suggests. The drought monitors were overstating conditions in part because the station network was thin and concentrated in areas that happened to be drier. If you're building a predictive model on top of this data, start with something simple — a regression using sea surface temperature indices like the Atlantic Multi-decadal Oscillation (AMO) and the El Niño-Southern Oscillation (ENSO) as predictors for New York winter temperature and precipitation. These large-scale modes explain a meaningful portion of year-to-year variance. Don't expect high accuracy on individual days. Daily weather is chaotic and inherently unpredictable more than a week out, even with perfect historical data. But monthly and seasonal patterns based on historical analogs from similar SST configurations have reasonable skill, especially for temperature extremes.
Get the Full Details

The main bottlenecks you'll hit are computational and logistical. Downloading and processing the full GHCN-Daily dataset for multiple stations with quality flag filtering typically takes 15 to 30 minutes on a standard laptop. Homogenization with homoCLI on a decade of daily data for three stations runs in under five minutes. The bottleneck isn't computation — it's the manual verification steps that can't be fully automated, like checking whether a flagged temperature outlier is a real extreme event or a data entry error. I recommend spending at least two hours per station per century of data on manual spot-checking before you trust any automated cleaning pipeline. If your goal is purely exploratory — getting a sense of what New York's weather was like in a given year — you can skip most of this and use the NCEI climate at a glance tool or the PRISM online map interface. They provide pre-processed daily and monthly data with basic adjustments applied. The tradeoff is that you lose transparency into exactly what adjustments were made and when, which matters if you're publishing anything or making decisions based on the data. For casual use, the pre-made grids are fine. For anything rigorous, go back to the raw GHCN data and do the work yourself. One final note on what this approach cannot do: you cannot reliably predict or reconstruct individual weather events before approximately 1890 for New York. The station network before that date was sparse, observations were inconsistent, and the technology for accurate barometric pressure and wind measurement wasn't standardized. There are anecdotal accounts and some ship-based observations that help fill gaps, but any model you build for the 1800s or earlier is reconstructing patterns at best, not individual storms or daily conditions. Don't present pre-1890 daily reconstructions as factual weather history. They're educated estimates with wide confidence intervals, and anyone who tells you otherwise hasn't actually looked at the raw records from that period.