gpt4 book ai didi

python - 来自大型 CSV 文件的热图

转载 作者:太空宇宙 更新时间:2023-11-03 16:22:27 25 4
gpt4 key购买 nike

我正在尝试从大型 CSV 中绘制热图。具体来说,我有一个像这样的矩阵:

O0 X1 X2 X3 . . . Xn
Y1 Z1 Z2 Z3 . . . Zn
Y2 Z1 Z2 Z3 . . . Zn
Y3 Z1 Z2 Z3 . . . Zn
. . . . . . . .
. . . . . . . .
. . . . . . . .
Yn Z1 Z2 Z3 . . . Zn

对于超过 4K X 值和 15K Y 值,Z 值在 0 到 1000 之间,我需要生成图像,其中 0 值是冷蓝色像素,1000 值是热红色值,其余值降级,我尝试使用一些 python 实用程序,但它们都说 fata 太大,有人有一个库来绘制如此大量的数据吗?

这是我用来减去数据的代码:

reader = csv.reader(open('../Data/160627_185815_1_OK.csv', 'rt'), delimiter=';')
reader2 = csv.reader(open('../Data/160627_195553_1_OK.csv', 'rt'), delimiter=';')
first = True
valuesGT1 = 0
print(reader)
Z = []
for row in reader:
row2 = next(reader2)
row2.pop(0)
row.pop(0)
if not first:
C = [float(a) - float(b) for a, b in zip(row, row2)]
with open('results_test.csv', 'a') as csvfile:
spamwriter = csv.writer(csvfile, delimiter=',',
quotechar='|', quoting=csv.QUOTE_MINIMAL)
spamwriter.writerow(C)
csvfile.close()
Z.append(C)
else:
first = False;

提前致谢。

编辑:Example CSV

最佳答案

我使用 vips 尝试了您的问题。这是我的程序:

#!/usr/bin/python

import sys

import gi
gi.require_version('Vips', '8.0')
from gi.repository import Vips

im = Vips.Image.new_from_file(sys.argv[1])
im = (255 * im / 1000).falsecolour()
im.write_to_file(sys.argv[2])

我在笔记本电脑上根据我所做的一些测试数据运行了它:

$ wc x.csv
14990 122873030 362045970 x.csv
$ time ./heatmap.py x.csv x.tif

real 0m36.415s
user 0m37.508s
sys 0m0.904s
$ ls -l x.tif
-rw-rw-r-- 1 john john 184333196 Jul 14 10:01 x.tif
$ vipsheader x.tif
x.tif: 4099x14990 uchar, 3 bands, srgb, tiffload

因此,它在 35 秒多一点的时间内生成了一个 200MB 的 tif 文件。内存使用峰值约为 30MB RAM,但也会使用临时文件。

您不提供平台,但您可以使用 brew install vips 在 OS X 上安装,或者通过包管理器在 Linux 上安装。 Windows 上有点难。

编辑:我看到您的文件是其他两个 CSV 文件之间的差异。您可以在 VIP 中完成整个操作,例如:

a = Vips.Image.new_from_file(sys.argv[1])
b = Vips.Image.new_from_file(sys.argv[2])
heatmap = (255 * (a - b) / 1000).falsecolour()
heatmap.write_to_file(sys.argv[3])

关于python - 来自大型 CSV 文件的热图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38303661/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com