【问题标题】:How can I work on a large dataset without having to use Pyspark?如何在不使用 Pyspark 的情况下处理大型数据集?
【发布时间】:2022-07-25 21:20:00
【问题描述】:

我正在尝试处理具有 510,000 行和 636 列的数据集。我使用 dask 数据框方法将其加载到数据框中,但无法显示条目。当我尝试获得形状时,会导致延迟。有没有办法让我在不使用 Pyspark 等大数据技术的情况下分析整个数据集?

from dask import dataframe
import requests
import zipfile
import os
import pandas as pd

if os.path.exists('pisa2012.zip') == False:
    r = requests.get('https://s3.amazonaws.com/udacity-hosted-downloads/ud507/pisa2012.csv.zip', allow_redirects=True)
    open('pisa2012.zip', 'wb').write(r.content)

if os.path.exists('pisa2012.csv') == False:
    with zipfile.ZipFile('pisa2012.zip', 'r') as zip_ref:
        zip_ref.extractall('./')

df_pisa = dataframe.read_csv('pisa2012.csv')

df_pisa.shape #Output:(Delayed('int-e9d8366d-1b9e-4f8e-a83a-1d4cac510621'), 636)

【问题讨论】:

    标签: python-3.x pandas data-science bigdata dask


    【解决方案1】:

    首先,spark、dask、vaex都是“大数据”技术。

    这会导致延迟

    如果您阅读文档,您会发现 dask 是惰性的,仅按需执行操作,您必须要这样做。原因是,仅获取形状就需要读取所有数据,但数据不会保存在内存中 - 这就是重点和让您使用大于内存的功能数据(否则,只需使用 pandas)。

    这行得通:

    df_pisa.shape.compute()
    

    但是,更好的是,弄清楚你真正想要对数据做什么;我假设你不只是追求形状。您可以将多个操作/延迟对象放入 dask.compute() 中以一次执行它们,而不必重复读取/解析文件等昂贵的任务。

    【讨论】:

      【解决方案2】:

      您可以使用 vaex,它是大数据的绝佳替代品 https://vaex.io/ 非常适合这类问题。

      【讨论】:

        猜你喜欢
        • 2021-04-15
        • 2019-12-26
        • 2020-05-28
        • 2011-07-16
        • 2019-09-25
        • 1970-01-01
        • 2012-04-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多