Through 30 games this season, Ryan Zimmerman leads the majors in batting average, home runs, hits, total bases and OPS. (Rich Schultz/Getty Images)

Ryan Zimmerman’s bounce-back season is truly stunning.

The 32-year-old first baseman for the Washington Nationals was underwhelming in 2016, to say the least. His batting average (.218) and on-base plus slugging (.642, 21 percent lower than the league average) were career lows and his minus-1.3 wins above replacement was the second-worst in the majors among hitters with at least 450 plate appearances, causing some to speculate that Zimmerman was in the downward spiral typical of a player on the wrong side of 30. But rather than looking like a retiree-to-be this season, Zimmerman appears reborn.

Through 30 games, Zimmerman leads the majors in batting average (.435), home runs (13), hits (47) total bases (98) and OPS (1.382, more than two and a half times the league average). He won NL Player of the Month honors in April after hitting 11 home runs, including a 470-foot blast off New York Mets reliever Addison Reed, which tied for the second-longest home run of 2017.

(Source: ESPN Stats and Information)

“[Zimmerman is Barry] Bonds-like,” Washington Manager Dusty Baker told the Post’s Jorge Castillo.

It’s an appropriate comparison. In April of 2004, Bonds hit .472 with 10 home runs and a 1.828 OPS, creating runs at a rate that was more than triple the league average after adjusting for park and league effects (323 wRC+). Zimmerman doesn’t have the benefit of being walked like Bonds — 42.4 percent of plate appearances in April compared to 6.8 percent for Zimmerman — but he is still creating runs at a rate that is more than two and a half times the league average (253 wRC+).

Before you think this is a fluke, consider that not much has changed from last season to this. Zimmerman is swinging at the same percentage of pitches in the strike zone (56.6 percent in 2016 compared to 56.8 percent in 2017) and making contact at the same rate on those pitches (85.7 percent vs. 86.1 percent). But the quality of his contact has improved dramatically, resulting in a league-leading 19 barrels this season, or once every six plate appearances (16.1 percent). (For the uninitiated a “barrel” is the term for an “optimally hit ball” based on the metrics of MLB’s Statcast.) He had just 23 barrels over 467 plate appearances in 2016.

Statistically, a “barrel” is assigned to batted-ball events whose comparable hit types have led to a minimum .500 batting average and 1.500 slugging percentage since Statcast was implemented in the majors in 2015. It’s based on exit velocity and launch angle, two areas of improvement for Zimmerman. His average exit velocity improved from 92.5 mph to 93.8 mph in one season with his launch angle increasing from 9.0 to 12.1 degrees, increasing his line-drive rate from 16.7 to 23.5 percent with a corresponding decrease in ground balls (48.6 to 37.6 percent). The better contact and launch angle is also causing more than a third of all his fly balls to leave the yard (39.4 percent).

His biggest strides have come at the expense of a pitcher’s off-speed stuff. Per ESPN Stats and Information, Zimmerman was 0 for 6 last April against change-ups and ended the season hitting .163 against the pitch with 16 strikeouts in 49 at-bats. This year he is 10 for 15 with no strikeouts and five extra-base hits, punishing off-speed pitches low and in as well as those in the top of the zone.

(Source: ESPN Stats and Information)

Now the bad news. Even with his improved quality of contact, it is unlikely Zimmerman continues his torrid start. His .472 average on balls put in play is significantly higher than even the highest BABIP for a full season since 2006, the first year MLB instituted its leaguewide drug testing policy (Austin Jackson’s .396 BABIP in 2010). The league average, which has oscillated between .295 and .303 over the past decade, is what we would expect over a full 162 games.

But that doesn’t mean he is expected to swoon. The latest ZiPS projections have Zimmerman ending the season batting .313 with 29 home runs, producing 3.4 wins above replacement, which would qualify for his best season since 2012. The Nats would certainly take that outcome from a player who hit just 18 points above the Mendoza Line a season ago.