python - 在 pandas 中查询数据,其中点按 hexbin 函数分组
问题描述
seaborn 和 pandas 都提供了 API,以便将二元直方图绘制为 hexbin 图(下图示例)。但是,我正在搜索对位于同一 hexbin 中的点执行查询。是否有一个函数可以检索与 hexbin 中的数据点关联的行?
举个例子:我的数据框包含 3 行A
:B
和C
。我sns.jointplot(x=A,y=B)
用来绘制密度。现在,我想对位于同一 bin 中的每个数据点执行查询。例如,对于每个 bin 计算C
与每个点关联的值的平均值。
解决方案
当前解决方案——快速破解
目前,我已经实现了以下函数,以将函数应用于与位于同一 hexbin 中的 (x,y) 坐标关联的数据:
def hexagonify(x, y, values, func=None):
hexagonized_list = []
fig = plt.figure()
fig.set_visible(False)
if func is not None:
image = plt.hexbin(x=x, y=y, C=values, reduce_C_function=func)
else:
image = plt.hexbin(x=x, y=y, C=values)
values = image.get_array()
verts = image.get_offsets()
for offc in range(verts.shape[0]):
binx, biny = verts[offc][0], verts[offc][1]
val = values[offc]
if val:
hexagonized_list.append((binx, biny, val))
fig.clear()
plt.close(fig)
return hexagonized_list
值(与 x 或 y 大小相同)通过values
参数传递。hexbin 是通过 的hexbin
函数计算的matplotlib
。这些值是通过get_array()
返回的函数检索的PolyCollection
。默认情况下,该np.mean
函数应用于每个 bin 的累积值。可以通过向参数提供函数来更改此功能func
。随后,该get_offsets()
方法允许我们计算箱的中心(在此处讨论)。通过这种方式,我们可以(默认情况下)关联每个 hexbin 提供的值的平均值。但是,此解决方案是一个 hack,因此欢迎对此解决方案进行任何改进。
推荐阅读
- visual-studio-code - 如何从 Visual Studio Code 的终端在 Visual Studio Code 的文本编辑器中打开文件?
- javascript - 在绘制对象期间添加延迟功能
- docker - 来自 nginx 的未知“服务器”变量
- windows - 在 Windows 环境变量中转义 @
- r - 如何根据条件从 R 中的大型数据集中删除一组特定数据?
- sql - 使用文本编辑器上的宏插入语句中的大型数据集
- sas - 命令变量出现在 proc freq 的绘图输出中
- connection - 如何阻止信号器连接将所有内容挂在多个打开的选项卡上?
- react-native-navigation - 静态 passProps 在 Navigation.push 上没有改变
- ios - 在使用 Bundle Identifier 轻按的按钮上打开应用程序(无 url 方案)