首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从CSV文件到python的实时数据流

从CSV文件到python的实时数据流
EN

Stack Overflow用户
提问于 2017-01-18 02:40:39
回答 3查看 9.6K关注 0票数 5

我有一个CSV文件,其中包含在几分钟内记录的来自随机传感器的数据。现在,我想将CSV文件中的数据流式传输到pyhton代码中,就好像它直接从传感器本身接收数据一样。(代码是从两个不同的传感器/csv文件中获取读数并取其平均值)有人建议使用Apache Spark来流式传输数据,但我觉得这对我来说太复杂了。有没有更简单的解决方案?

EN

回答 3

Stack Overflow用户

发布于 2017-10-04 18:54:16

您也可以使用pandas read_csv()函数来读取小块的大csv文件,基本代码如下:

代码语言:javascript
复制
import pandas as pd
chunksize = 100
for chunk in pd.read_csv('myfile.csv', chunksize=chunksize):
    print(chunk)

这个链接解释了这是如何工作的:http://pandas.pydata.org/pandas-docs/stable/io.html#io-chunking

票数 6
EN

Stack Overflow用户

发布于 2017-01-18 02:55:31

您可以使用python中的tail -f来实现这一点。这应该可以做你想要的事情。http://lethain.com/tailing-in-python/

票数 0
EN

Stack Overflow用户

发布于 2018-10-19 16:57:43

您还可以在Numpy/Matplotlib上使用Python。这是一种将csv数据临时作为变量而不是额外文件进行流式传输的简单方法。

代码语言:javascript
复制
´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)´
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41704613

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档