´import matplotlib.pyplot as plt
from matplotlib import style
import numpy as np
import io
def draw_graph_stream(csv_content):
csv_stream = io.StringIO(csv_content)
svg_stream = io.StringIO()
data = np.genfromtxt(csv_stream, delimiter = ';') # generate the stream
x = data[0,:] #first row in csv
y = np.mean(data[1:,:], axis=0) # first column with mean generate the average
plt.plot(x,y)
plt.savefig(svg_stream, format = 'svg') #just safe it as svg
svg_stream.seek(0) #Position 0 for reading after writing
return svg_stream.read()
print("Start test")
with io.open('/filepathtodata','r') as csv_file: #works like a Loop
print("Reading file")
csv_content = csv_file.read()
print("Drawing graph")
svg_content = draw_graph_stream(csv_content)
with io.open('thefilepathforsafe','w+') as svg_file:
print("Write back")
svg_file.write(svg_content)´
4条答案
按热度按时间crcmnpdw1#
你也可以使用pandas read_csv()函数来读取大csv文件中的小块,基本代码如下:
这个链接解释了它是如何工作的:http://pandas.pydata.org/pandas-docs/stable/io.html#io-chunking
tjjdgumg2#
你可以在python中使用类似
tail -f
的东西来实现这一点。这应该能满足你的要求http://lethain.com/tailing-in-python/svdrlsy43#
你也可以在Numpy/Matplotlib上使用Python。这是一个简单的方法来流你的csv数据temporay作为一个变量,而不是一个额外的文件。
eiee3dmh4#
它在fastapi中工作,用于将数据流传输到用户界面。