Je comprends que Pandas peut lire et écrire vers et depuis des fichiers Parquet en utilisant différents backends: pyarrow
et fastparquet
.
J'ai une distribution Conda avec la distribution Intel et "ça marche": je peux utiliser pandas.DataFrame.to_parquet
. Cependant je n'ai pas pyarrow
installé donc je suppose que fastparquet
est utilisé (que je ne trouve pas non plus).
Existe-t-il un moyen d'identifier le backend utilisé?
Une méthode serait d'appeler show_versions()
qui listera les dépendances (ainsi que d'autres éléments d'environnement):
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
Ici, incidemment, je n'ai ni pyarrow
ni fastparquet
installé
En fait, vous pouvez appeler 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
Comme je n'ai pas non plus installé cela déclenche une ImportError, probablement sur votre environnement, cela retournera en fait le moteur installé
Et après avoir installé fastparquet
j'obtiens maintenant:
In[194]:
pd.io.parquet.get_engine('auto')
Out[194]: <pandas.io.parquet.FastParquetImpl at 0xf5582b0>
Et si nous regardons le class
:
In[202]:
impl = pd.io.parquet.get_engine('auto')
impl.__class__
Out[202]: pandas.io.parquet.FastParquetImpl
il nous dit de quelle implication il s'agit.
Si pyarrow
est installé, on obtiendrait:
>>> 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'>
Il suffit d'exécuter ces 2 commandes dans linux Shell/bash
pip install pyarrow
pip install fastparquet