Python 有没有一种有效的方法从熊猫的散射数据创建彩色网格?

Python 有没有一种有效的方法从熊猫的散射数据创建彩色网格?,python,pandas,numpy,matplotlib,Python,Pandas,Numpy,Matplotlib,我有一个像这样的熊猫数据框 xy值 140 45 124 15 129 219 189 90 125 我试图通过对每个“网格”中的所有值进行求和,从这个数据帧创建一个2D颜色网格 将numpy导入为np 作为pd进口熊猫 将matplotlib.pyplot作为plt导入 步骤=5 xx=np.arange(0,200+步,步) yy=np.arange(0,200+步,步) 数组=np.空(xx.size*yy.size) ctr=0 对于np.nditer(yy)中的y: 对于np.ndi

我有一个像这样的熊猫数据框

xy值
140 45 124
15 129 219
189 90 125
我试图通过对每个“网格”中的所有
值进行求和,从这个数据帧创建一个2D颜色网格

将numpy导入为np
作为pd进口熊猫
将matplotlib.pyplot作为plt导入
步骤=5
xx=np.arange(0,200+步,步)
yy=np.arange(0,200+步,步)
数组=np.空(xx.size*yy.size)
ctr=0
对于np.nditer(yy)中的y:
对于np.nditer(xx)中的x:
网格=df[(df['X']>=X)和(df['X']=Y)和(df['Y']

这确实达到了我的目的,但速度非常慢,因为我使用的是Python for循环。有没有一种方法可以使用numpy广播功能来避免使用python for loop并创建相同的网格(ndarray)?

您可能希望使用这些值作为权重进行研究:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

import random

xs = [random.randrange(0,201,1) for _ in range(100)]
ys = [random.randrange(0,201,1) for _ in range(100)]
value = [random.randrange(0,500,1) for _ in range(100)]

hist, xedges, yedges = np.histogram2d(xs, ys, bins=42, range=None, normed=None, weights=value, density=None)
plt.pcolormesh(xedges, yedges, hist)

这比我机器上的循环版本快10倍左右。

像这样简单的东西怎么样

mesh = np.zeros((len(xx), len(yy)))
for row in df.itertuples():
    mesh[row.Y//step, row.X//step] = row.VALUE
plt.pcolormesh(yy, xx, mesh)

你确定你想用
df['X']进行上限独占吗?它对我的特殊目的更有效——但这是一个好的观点*修正了不平等符号
historogram2d
的问题,速度更快,谢谢!有没有办法取每个网格中的值的平均值而不是求和?@dededaio再次尝试使用np.historogram2d,但不使用权重,然后使用它将第一个结果元素按np.divide进行划分