Cambiar las opciones por defecto en pandas

Me pregunto si hay alguna manera de cambiar las opciones de visualización predeterminadas para los pandas. Me gustaría cambiar el formato de la pantalla y el ancho de la pantalla cada vez que ejecuto python, por ejemplo:

pandas.options.display.width = 150 

Veo que los valores predeterminados están codificados de forma pandas.core.config_init en pandas.core.config_init . ¿Hay alguna manera en los pandas para hacer esto correctamente? O si no, ¿hay alguna manera de configurar ipython al menos para cambiar la configuración cada vez que importe pandas? Lo único que se me ocurre es crear mi propia biblioteca de mypandas que envuelve a los pandas con algunos comandos adicionales emitidos cada vez que se carga. ¿Alguna idea mejor?

Como se describe aquí, hay archivos de configuración de iPython :

 # Most of your config files and extensions will probably start # with this import import IPython.ipapi ip = IPython.ipapi.get() # You probably want to uncomment this if you did %upgrade -nolegacy # import ipy_defaults import os import pandas def main(): #ip.dbg.debugmode = True ip.dbg.debug_stack() # uncomment if you want to get ipython -p sh behaviour # without having to use command line switches import ipy_profile_sh import jobctrl # Configure your favourite editor? # Good idea eg for %edit os.path.isfile #import ipy_editors # Choose one of these: #ipy_editors.scite() #ipy_editors.scite('c:/opt/scite/scite.exe') #ipy_editors.komodo() #ipy_editors.idle() # ... or many others, try 'ipy_editors??' after import to see them # Or roll your own: #ipy_editors.install_editor("c:/opt/jed +$line $file") o = ip.options # An example on how to set options #o.autocall = 1 o.system_verbose = 0 #import_all("os sys") #execf('~/_ipython/ns.py') # -- prompt # A different, more compact set of prompts from the default ones, that # always show your current location in the filesystem: #o.prompt_in1 = r'\C_LightBlue[\C_LightCyan\Y2\C_LightBlue]\C_Normal\n\C_Green|\#>' #o.prompt_in2 = r'.\D: ' #o.prompt_out = r'[\#] ' # Try one of these color settings if you can't read the text easily # autoexec is a list of IPython commands to execute on startup #o.autoexec.append('%colors LightBG') #o.autoexec.append('%colors NoColor') o.autoexec.append('%colors Linux') pandas.options.display.width = 150 # some config helper functions you can use def import_all(modules): """ Usage: import_all("os sys") """ for m in modules.split(): ip.ex("from %s import *" % m) def execf(fname): """ Execute a file in user namespace """ ip.ex('execfile("%s")' % os.path.expanduser(fname)) main() 

Probablemente sea mejor hacer perfiles separados de Python . (El código no está probado).

Echa un vistazo a los documentos :

El uso de scripts de inicio para el entorno python / ipython para importar pandas y establecer opciones hace que trabajar con pandas sea más eficiente. Para hacer esto, cree un script .py o .ipy en el directorio de inicio del perfil deseado. Puede encontrar un ejemplo donde la carpeta de inicio está en un perfil ipython predeterminado en:

 $IPYTHONDIR/profile_default/startup 

Puede encontrar más información en la documentación de ipython. A continuación se muestra un ejemplo de script de inicio para pandas:

 import pandas as pd pd.set_option('display.max_rows', 999) pd.set_option('precision', 5) 

(o use el nuevo formulario pd.options.display.max_rows = 999 ).

Usted también preguntó:

– ¿hay alguna forma de ejecutar solo el código de pandas cuando importo pandas desde ipython? se necesita bastante tiempo para importar pandas, así que prefiero no hacerlo cada vez que lanzo una nueva instancia de ipython

Como solución alternativa, puede importar pandas en segundo plano. Consulte Importar módulos de python en el fondo en REPL .

Pude solucionar este problema entrando en la carpeta de pandas (que se encuentra utilizando pandas.__file__ ). Dentro de la carpeta pandas hay una carpeta central con el archivo config_init.py . Las líneas

 cf.register_option('large_repr', 'truncate', pc_large_repr_doc, validator=is_one_of_factory(['truncate', 'info'])) 

establecer las opciones predeterminadas. Así que puedes cambiar el segundo argumento a ‘info’

 cf.register_option('large_repr', 'info', pc_large_repr_doc, validator=is_one_of_factory(['truncate', 'info'])) 

y luego, por defecto, los pandas imprimirán la tabla de resumen si el dataframe excede max_rows o max_columns , por lo que también puede cambiar el valor predeterminado en este archivo. No estoy seguro si este es un comportamiento seguro, pero funcionó para mí.