Pandas Dask数据帧的数据流分析

Pandas Dask数据帧的数据流分析,pandas,dask,dask-distributed,Pandas,Dask,Dask Distributed,我有一个数据集存储在一个选项卡分隔的文本文件中。该文件如下所示: date time temperature 2010-01-01 12:00:00 10.0000 ... 其中,温度列包含以摄氏度(°C)为单位的值。 我用Dask计算每日平均温度。这是我的密码: from dask.distributed import Client import dask.dataframe as dd client = Client("<scheduler URL") inp

我有一个数据集存储在一个选项卡分隔的文本文件中。该文件如下所示:

date    time    temperature
2010-01-01  12:00:00    10.0000 
...
其中,
温度
列包含以摄氏度(°C)为单位的值。 我用Dask计算每日平均温度。这是我的密码:

from dask.distributed import Client
import dask.dataframe as dd

client = Client("<scheduler URL")
inputDataFrame = dd.read_table("<input file>").drop('time', axis=1)
groupedData = inputDataFrame.groupby('date')
meanDataframe = groupedData.mean()
result = meanDataframe.compute()
result.to_csv('result.out', sep='\t')

client.close()
来自dask.distributed import客户端
将dask.dataframe作为dd导入
client=client(1)工作程序读取数据。客户端确实会提前一点读取数据,以确定列名和类型,还可以选择查找用于拆分文件的行分隔符。请注意,所有工作程序都必须能够访问感兴趣的文件,在群集上工作时可能需要一些共享文件系统

2) 实际上,
drop
groupby
mean
方法根本不生成中间数据帧,它们只是累积要执行的操作图(即,它们是惰性的)。您可以对这些步骤计时并查看它们是否快速。在执行过程中,会在辅助进程上生成中间进程,根据需要复制到其他辅助进程,并尽快丢弃。除非您明确请求,否则不会复制到计划程序或客户端

因此,从根本上说,您可以通过查看

控制事情进展速度的因素有很多:进程可能共享一个IO通道;某些任务不释放GIL,因此线程中的并行性较差;组的数量将极大地影响将数据随机分组的数量……此外,schedu执行的每个任务都会有一些开销莱尔


由于Pandas的效率很高,因此,与Dask相比,Pandas的性能非常好,这并不奇怪。

非常感谢。我已经在使用仪表板,但您在答案中链接的页面中的视频似乎非常有用。顺便说一句,我设置中的所有工作人员都在虚拟机上运行,并访问一个通用的
nfs挂载。