如何将 `dask.DataFrame` 的结果映射到 csvs
How to map results of `dask.DataFrame` to csvs
我用 df=dask.DataFrame.read_csv('s3://bucket/*.csv')
创建了一个数据框。当我执行 df[df.a.isnull()].compute
操作时,我得到一组返回的符合过滤条件的行。我想知道这些返回的行属于哪些文件,以便我可以调查为什么这些记录具有空值。 DataFrame
有数十亿行,缺失值的记录是个位数。有什么有效的方法吗?
如果您的 CSV 文件很小,那么我建议为每个文件创建一个分区
df = dd.read_csv('s3://bucket/*.csv', blocksize=None)
然后计算每个分区的空元素数:
counts = df.a.isnull().map_partitions(sum).compute()
然后您可以找到文件名
from s3fs import S3FileSystem
s3 = S3FileSystem()
filenames = s3.glob('s3://bucket/*.csv')
并比较两者
dict(zip(filenames, counts))
我用 df=dask.DataFrame.read_csv('s3://bucket/*.csv')
创建了一个数据框。当我执行 df[df.a.isnull()].compute
操作时,我得到一组返回的符合过滤条件的行。我想知道这些返回的行属于哪些文件,以便我可以调查为什么这些记录具有空值。 DataFrame
有数十亿行,缺失值的记录是个位数。有什么有效的方法吗?
如果您的 CSV 文件很小,那么我建议为每个文件创建一个分区
df = dd.read_csv('s3://bucket/*.csv', blocksize=None)
然后计算每个分区的空元素数:
counts = df.a.isnull().map_partitions(sum).compute()
然后您可以找到文件名
from s3fs import S3FileSystem
s3 = S3FileSystem()
filenames = s3.glob('s3://bucket/*.csv')
并比较两者
dict(zip(filenames, counts))