Je travaille beaucoup avec Series et DataFrames sur le terminal. La valeur par défaut __repr__
pour une série renvoie un échantillon réduit, avec quelques valeurs de tête et de queue, mais le reste est manquant.
Existe-t-il un moyen intégré d’imprimer joliment l’ensemble de Series/DataFrame? Idéalement, cela permettrait un bon alignement, peut-être des frontières entre les colonnes et même un code couleur pour les différentes colonnes.
Vous pouvez également utiliser le option_context
, avec une ou plusieurs options:
_with pd.option_context('display.max_rows', None, 'display.max_columns', None): # more options can be specified also
print(df)
_
Cela ramènera automatiquement les options à leurs valeurs précédentes.
Si vous travaillez sur jupyter-notebook, utiliser display(df)
au lieu de print(df)
utilisera la logique d'affichage riche de jupyter (comme si) .
Pas besoin de pirater les paramètres. Il y a un moyen simple:
print(df.to_string())
Bien sûr, si cela revient souvent, créez une fonction comme celle-ci. Vous pouvez même le configurer pour qu'il se charge chaque fois que vous démarrez IPython: https://ipython.org/ipython-doc/1/config/overview.html
def print_full(x):
pd.set_option('display.max_rows', len(x))
print(x)
pd.reset_option('display.max_rows')
Pour ce qui est de la coloration, être trop élaboré avec des couleurs me semble contre-productif, mais je suis d’accord pour dire que quelque chose comme le bootstrap .table-striped
serait bien. Vous pouvez toujours créer un problème suggérer cette fonctionnalité.
Après avoir importé des pandas, au lieu d'utiliser le gestionnaire de contexte, définissez ces options pour afficher des images complètes:
pd.set_option('display.max_columns', None) # or 1000
pd.set_option('display.max_rows', None) # or 1000
pd.set_option('display.max_colwidth', -1) # or 199
Pour une liste complète des options utiles, voir:
pd.describe_option('display')
Utilisez le package tabulate:
pip install tabulate
Et considérons l'utilisation d'exemple suivante:
import pandas as pd
from io import StringIO
from tabulate import tabulate
c = """Chromosome Start End
chr1 3 6
chr1 5 7
chr1 8 9"""
df = pd.read_table(StringIO(c), sep="\s+", header=0)
print(tabulate(df, headers='keys', tablefmt='psql'))
+----+--------------+---------+-------+
| | Chromosome | Start | End |
|----+--------------+---------+-------|
| 0 | chr1 | 3 | 6 |
| 1 | chr1 | 5 | 7 |
| 2 | chr1 | 8 | 9 |
+----+--------------+---------+-------+
Si vous utilisez Ipython Notebook (Jupyter). Vous pouvez utiliser HTML
from IPython.core.display import HTML
display(HTML(df.to_html()))
Essaye ça
pd.set_option('display.height',1000)
pd.set_option('display.max_rows',500)
pd.set_option('display.max_columns',500)
pd.set_option('display.width',1000)
Cette réponse est une variante de l'antérieur réponse de lucidyan . Cela rend le code plus lisible en évitant l'utilisation de set_option
.
Après avoir importé des pandas, au lieu d'utiliser le gestionnaire de contexte, définissez ces options pour afficher des images de grande taille:
def set_pandas_options() -> None:
pd.options.display.max_columns = 1000
pd.options.display.max_rows = 1000
pd.options.display.max_colwidth = 199
pd.options.display.width = None
# pd.options.display.precision = 2 # set as needed
set_pandas_options()
Ensuite, vous pouvez utiliser display(df)
ou simplement df
si vous utilisez un ordinateur portable, sinon print(df)
.
Vous pouvez y parvenir en utilisant la méthode ci-dessous. il suffit de passer le non total. des colonnes présentes dans le DataFrame comme argument à
'display.max_columns'
Pour par exemple:
df= DataFrame(..)
with pd.option_context('display.max_rows', None, 'display.max_columns', df.shape[1]):
print(df)