代码之家  ›  专栏  ›  技术社区  ›  Cedric H.

如何识别熊猫拼花的后端

  •  6
  • Cedric H.  · 技术社区  · 7 年前

    我知道熊猫可以用不同的后端读写拼花文件: pyarrow fastparquet .

    我有一个带有intel发行版的conda发行版和“it works”:我可以使用 pandas.DataFrame.to_parquet . 但是我没有 皮亚罗 所以我想 快速拼花 使用(我也找不到)。

    有没有办法确定使用哪一个后端?

    2 回复  |  直到 7 年前
        1
  •  3
  •   Cedric H.    7 年前

    一种方法是调用 show_versions() 其中将列出依赖项(以及其他环境内容):

    pd.show_versions()
    
    INSTALLED VERSIONS
    ------------------
    commit: None
    python: 3.6.0.final.0
    python-bits: 64
    OS: Windows
    OS-release: 7
    machine: AMD64
    processor: Intel64 Family 6 Model 42 Stepping 7, GenuineIntel
    byteorder: little
    LC_ALL: None
    LANG: None
    LOCALE: None.None
    
    pandas: 0.23.0
    pytest: 3.0.5
    pip: 9.0.3
    setuptools: 27.2.0
    Cython: 0.25.2
    numpy: 1.14.3
    scipy: 1.1.0
    pyarrow: None
    xarray: None
    IPython: 5.1.0
    sphinx: 1.5.1
    patsy: 0.4.1
    dateutil: 2.6.0
    pytz: 2016.10
    blosc: None
    bottleneck: 1.2.1
    tables: 3.4.3
    numexpr: 2.6.5
    feather: None
    matplotlib: 2.2.2
    openpyxl: 2.4.1
    xlrd: 1.0.0
    xlwt: 1.2.0
    xlsxwriter: 0.9.6
    lxml: 3.7.2
    bs4: 4.5.3
    html5lib: 0.9999999
    sqlalchemy: 1.1.5
    pymysql: None
    psycopg2: None
    jinja2: 2.9.4
    s3fs: None
    fastparquet: None
    pandas_gbq: None
    pandas_datareader: None
    

    顺便说一句,我也没有 pyarrow fastparquet 安装

    实际上你可以打电话 pd.io.parquet.get_engine('auto') :

    In[193]:
    pd.io.parquet.get_engine('auto')
    
    ---------------------------------------------------------------------------
    ImportError                               Traceback (most recent call last)
    <ipython-input-193-929185e5aca8> in <module>()
    ----> 1 pd.io.parquet.get_engine('auto')
    
    C:\ProgramData\Anaconda3\lib\site-packages\pandas\io\parquet.py in get_engine(engine)
         27             pass
         28 
    ---> 29         raise ImportError("Unable to find a usable engine; "
         30                           "tried using: 'pyarrow', 'fastparquet'.\n"
         31                           "pyarrow or fastparquet is required for parquet "
    
    ImportError: Unable to find a usable engine; tried using: 'pyarrow', 'fastparquet'.
    pyarrow or fastparquet is required for parquet support
    

    由于我没有安装,这会引起一个严重的问题,可能在您的环境中,这会实际返回已安装的引擎

    安装后 快速拼花 我现在得到:

    In[194]:
    pd.io.parquet.get_engine('auto')
    
    Out[194]: <pandas.io.parquet.FastParquetImpl at 0xf5582b0>
    

    如果我们看看 class :

    In[202]:
    impl = pd.io.parquet.get_engine('auto')
    impl.__class__
    
    Out[202]: pandas.io.parquet.FastParquetImpl
    

    它告诉我们它是哪个impl。

    如果 皮亚罗 安装后将得到:

    >>> pd.io.parquet.get_engine('auto')
    <pandas.io.parquet.PyArrowImpl object at 0xa13fb1ef0>
    >>> pd.io.parquet.get_engine('auto').__class__
    <class 'pandas.io.parquet.PyArrowImpl'>
    
        2
  •  3
  •   Zoe - Save the data dump 张群峰    6 年前

    只需在linux shell/bash中执行这两个命令

    pip install pyarrow
    
    pip install fastparquet