Update
Hey, so in general you have multiple problems here...
- as initially mentioned your data is given in lon/lat so your crs is most probably epsg=4326 not epsg=3857 (also note its lon/lat not lat/lon !)
- Looking at your data (from here), you are missing accompanying files to geolocate the shape (e.g. the spatial-index file
<filename>.shx
and the projection description <filename>.prj
). I downloaded the shapefile incl. all aux. files from here.
- since you use normal matplotlib axes, you need to handle reprojections manually! (e.g. you need to bring all your data and the shape in the same crs before you can put them on the same plot... (your data is in epsg=4326 but your shape is in epsg=2264) for GeoDataFrames you can use
gdf.to_crs(...)
)
I strongly recommend that you have a look at cartopy or EOmaps and use projection-aware matplotlib axes to visualize your data!
... finally, here's how I would plot it using EOmaps :-)
from eomaps import Maps
import geopandas as gpd
import pandas as pd
# read the data (no need to manually specify crs if .prj and .shx files are available!)
gdf = gpd.read_file(r"Asheville_City_Limits\Asheville_City_Limits.shp")
data = pd.read_csv(r"Asheville_listings.csv")
m = Maps(crs=Maps.CRS.GOOGLE_MERCATOR, figsize=(6, 8))
m.add_gdf(gdf, fc="none", ec="darkblue", lw=2)
# plot the data
m.set_data(data, "longitude", "latitude", crs=4326, parameter="availability_365")
m.set_shape.scatter_points(size=5)
m.set_classify.EqualInterval(k=5)
m.plot_map(ec="k", lw=0.25)
m.add_colorbar(hist_bins=100, label="Availability 365")
# add a background map
m.add_wms.OpenStreetMap.add_layer.default(alpha=0.5)

Old answer
It's difficult to say without having access to the actual data, but from what I see you simply picked the wrong epsg code for your data!
epsg 3857 is a pseudo-mercator projection (with units of "meters") not lon/lat... you most probably want epsg 4326!
e.g. since geometry
is provided in lon/lat, the crs should be:
crs = {'init': 'epsg:4326'}