更改pandas中的默认选项

时间:2014-05-29 23:55:41

标签: python configuration pandas ipython

我想知道是否有任何方法可以更改pandas的默认显示选项。我想在每次运行python时更改显示格式以及显示宽度,例如:

pandas.options.display.width = 150

我看到pandas.core.config_init中的默认值是硬编码的。大熊猫有什么方法可以做到这一点吗?或者如果没有,有没有办法设置ipython至少每次导入pandas时都要更改配置?我唯一能想到的就是制作我自己的mypandas库,它包装了pandas,并在每次加载时发出一些额外的命令。有更好的想法吗?

3 个答案:

答案 0 :(得分:3)

如此处所述,有iPython config files

# 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 e.g. 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()

可能更好地制作separate Python profiles。 (代码未经测试)。

答案 1 :(得分:3)

查看the docs

  

使用启动脚本导入python / ipython环境   pandas和set选项使得使用pandas更有效率。去做   这个,在启动目录中创建一个.py或.ipy脚本   期望的个人资启动文件夹处于默认状态的示例   ipython简介可在以下网址找到:

$IPYTHONDIR/profile_default/startup
     

更多信息可以在ipython文档中找到。一个例子   pandas的启动脚本显示如下:

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

(或使用新表格pd.options.display.max_rows = 999)。

您还问:

  

- 当我从ipython中导入pandas时,有没有办法只运行pandas代码?导入pandas需要一段时间,所以每次启动新的ipython实例时我都不愿意这样做

作为解决方法,您可以在后台导入pandas。请参阅Import python modules in the background in REPL

答案 2 :(得分:0)

我能够通过实际进入pandas文件夹(使用pandas.__file__找到)来解决这个问题。在pandas文件夹中有一个带有config_init.py文件的核心文件夹。行

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

设置默认选项。因此,您可以将第二个参数更改为“info”

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

然后默认情况下,如果数据框超过max_rowsmax_columns,pandas将打印摘要表,您也可以更改此文件中的默认值。我不确定这是否是安全行为,但它对我有用。