Python 什么';将数据帧转换为位图更有效的方法是什么?

Python 什么';将数据帧转换为位图更有效的方法是什么?,python,pandas,numpy,matplotlib,python-imaging-library,Python,Pandas,Numpy,Matplotlib,Python Imaging Library,我有一个熊猫数据框,有3列(x,y,d),大约有200000行x和y是整数,表示网格的位置d表示栅格的点密度。大约有90行丢失(不包括在df中),所有这些行的d都为0 我想将数据帧绘制成一个501*501像素,每个像素的颜色由其对应的d确定 我可以使用numpy、matplotlib和PIL来实现它,图像如下所示:然而,运行时大约为16s。我想知道还有什么可以提高性能的吗 代码如下: 最后一步,遍历数据帧并对像素着色是最耗时的(~16s),我可以使用其他方法吗?多谢各位 更新: 在我的代码中,

我有一个熊猫数据框,有3列(x,y,d),大约有200000行xy是整数,表示网格的位置d表示栅格的点密度。大约有90行丢失(不包括在df中),所有这些行的d都为0

我想将数据帧绘制成一个501*501像素,每个像素的颜色由其对应的d确定

我可以使用numpy、matplotlib和PIL来实现它,图像如下所示:然而,运行时大约为16s。我想知道还有什么可以提高性能的吗

代码如下:

最后一步,遍历数据帧并对像素着色是最耗时的(~16s),我可以使用其他方法吗?多谢各位

更新:
在我的代码中,我没有使用[]操作符,而是使用.at[]对数据帧进行索引。运行时间提高了100%(~8s)。然而,我仍然想知道如何进一步改进它

使用
像素
作为三维数组,我们可以以矢量化的方式分配-

pixels = np.zeros((501,501,3),dtype=np.uint8)
pixels[df['x'], df['y']] = np.vstack(df['d'].values)

熊猫数据帧可以很容易地用枕头转换成图像。希望这些语法能帮助你解决这个问题

dataframe = pd.read_csv('A.csv'), header=None)
dataframe.to_numpy()

# create Pillow image
image = Image.fromarray(dataframe, 'L')        # L is mode for grayscale
print(type(image))

# summarize image details
print(image.mode)
print(image.size)

#save image
img_filename = 'A.bmp'
image.save(img_filename)
print('saved:', img_filename)

使用像素数组怎么样:
pixels=np.zero((501501,3),dtype=np.uint8)
?@Divakar谢谢你的建议。我曾尝试将数组用于像素,但对运行时没有帮助。我在想是不是访问熊猫数据帧太贵了?
dataframe = pd.read_csv('A.csv'), header=None)
dataframe.to_numpy()

# create Pillow image
image = Image.fromarray(dataframe, 'L')        # L is mode for grayscale
print(type(image))

# summarize image details
print(image.mode)
print(image.size)

#save image
img_filename = 'A.bmp'
image.save(img_filename)
print('saved:', img_filename)