Python计算散点数据密度并保存结果至Excel
import pandas as pd
import numpy as np
from scipy.spatial import KDTree
# 从Excel文件读取经纬度数据
dp = pd.read_excel('D:\pythonProject3\会员信息\附件二:会员信息数据.xlsx')
x = np.array(dp['商品GPS纬度'])
y = np.array(dp['商品GPS经度'])
# 构建二维坐标数组
points = np.column_stack((x, y))
# 创建KDTree对象
kdtree = KDTree(points)
# 设置搜索半径并计算密度
r = 0.1 # 调整r的值以控制密度的计算范围
density = kdtree.query_ball_point(points, r=r)
density_list = [len(d) for d in density]
# 保存结果到DataFrame并输出到Excel
df_density = pd.DataFrame({'Density': density_list})
df_density.to_excel('D:\pythonProject3\商品信息\商品密度.xlsx', index=False)
print('密度计算完成,结果已保存至Excel文件。')
这段代码演示了如何使用Python计算散点数据的密度并将结果保存到Excel文件。
代码解析:
- 首先,代码从Excel文件读取商品的GPS纬度和经度数据,存储在NumPy数组
x和y中。 - 然后,将
x和y数组合并为一个二维数组points,每一行表示一个点的坐标。 - 接着,使用
scipy.spatial.KDTree类创建一个KD树对象kdtree,利用KD树可以快速查找最近邻点。 - 使用
kdtree的query_ball_point方法计算每个点的密度。该方法返回与每个点在给定半径r范围内的所有点的索引。 - 通过统计每个点在半径
r内的邻居数量,计算出每个点的密度,并将结果存储在density_list列表中。 - 最后,创建一个DataFrame对象
df_density,将密度列表转换为DataFrame,并将结果保存到Excel文件中。
注意事项:
- 请根据实际情况修改代码中的文件路径和文件名。
- 需要安装
pandas、numpy和scipy库才能运行这段代码。 - 调整搜索半径
r的值可以控制密度的计算范围,r越大,密度计算结果越平滑。
原文地址: https://www.cveoy.top/t/topic/fzNe 著作权归作者所有。请勿转载和采集!