Python基于经纬度网格聚合商品数据及可视化
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# 读取数据
data = pd.read_excel(r'D:\pythonProject3\会员信息\附件二:会员信息数据.xlsx')
# 删除NaN值
data.dropna(inplace=True)
# 创建网格
grid_size = 0.1
min_lat = data['商品GPS纬度'].min()
max_lat = data['商品GPS纬度'].max()
min_lon = data['商品GPS经度'].min()
max_lon = data['商品GPS经度'].max()
lat_bins = np.arange(min_lat, max_lat + grid_size, grid_size)
lon_bins = np.arange(min_lon, max_lon + grid_size, grid_size)
# 分类并聚合商品
data['网格编号'] = pd.cut(data['商品GPS纬度'], lat_bins, labels=False)
data['网格编号'] = data['网格编号'].astype(str) + '-' + pd.cut(data['商品GPS经度'], lon_bins, labels=False).astype(str)
data['商品数量'] = 1
aggregated_data = data.groupby('网格编号').agg({'商品数量': 'sum', '商品GPS纬度': 'mean', '商品GPS经度': 'mean'}).reset_index()
aggregated_data['新商品编号'] = range(1, len(aggregated_data) + 1)
# 可视化
plt.scatter(data['商品GPS经度'], data['商品GPS纬度'], c='blue', alpha=0.5, label='原始商品')
plt.scatter(aggregated_data['商品GPS经度'], aggregated_data['商品GPS纬度'], s=aggregated_data['商品数量'], c='red', alpha=0.5, label='聚合商品')
plt.xlabel('商品GPS经度')
plt.ylabel('商品GPS纬度')
plt.legend()
plt.show()
# 输出结果
print(aggregated_data[['新商品编号', '商品数量', '商品GPS纬度', '商品GPS经度']])
原文地址: https://www.cveoy.top/t/topic/fAnv 著作权归作者所有。请勿转载和采集!