• Pandas操作excel


    读取excel:Pandas库read_excel()参数详解

      

    pandas.read_excel(io,sheet_name = 0,header = 0,names = None,index_col = None,usecols = None,squeeze = False,dtype = None, ...)

    io:字符串,文件的路径对象。

    sheet_name:None、string、int、字符串列表或整数列表,默认为0。字符串用于工作表名称,整数用于零索引工作表位置,字符串列表或整数列表用于请求多个工作表,为None时获取所有工作表。

    对应操作
    sheet_name=0 第一张作为DataFrame
    sheet_name=1 第二张作为DataFrame
    sheet_name=“Sheet1” 第一张作DataFrame
    sheet_name=[0,1,'Sheet5'] 第1页,第2页和第5页作为DataFrames的字典。

    header:指定作为列名的行,默认0,即取第一行的值为列名。数据为列名行以下的数据;若数据不含列名,则设定 header = None。


    names:默认为None,要使用的列名列表,如不包含标题行,应显示传递header=None


    index_col:指定列为索引列,默认None列(0索引)用作DataFrame的行标签。


    usecols:int或list,默认为None。

    • 如果为None则解析所有列
    • 如果为int则表示要解析的最后一列
    • 如果为int列表则表示要解析的列号列表
    • 如果字符串则表示以逗号分隔的Excel列字母和列范围列表(例如“A:E”或“A,C,E:F”)。范围包括双方。

    squeeze:boolean,默认为False,如果解析的数据只包含一列,则返回一个Series。


    dtype:列的类型名称或字典,默认为None。数据或列的数据类型。例如{'a':np.float64,'b':np.int32}使用对象保存存储在Excel中的数据而不解释dtype。如果指定了转换器,则它们将应用于dtype转换的INSTEAD。

    (2020年12月15日10:12:23  记一个坑,如果读取列有空值的时候,pandas会将其列类型设置为float类型,如果之后再用astype去转化成文本的话,会带一个0,所以最好就是直接在读取的时候制定dtype:{‘会员编码’: ‘object’})

    写入excel:pandas.dataframe.to_excel()

    to_excel(self, excel_writer, sheet_name='Sheet1', na_rep='', float_format=None,columns=None, header=True, index=True, index_label=None,startrow=0, startcol=0, engine=None, merge_cells=True, encoding=None,
    inf_rep='inf', verbose=True, freeze_panes=None)

    常用参数解析

    • excel_writer : ExcelWriter对象或者目标路径

    • sheet_name : excel表名命名

    • na_rep : 缺失值填充 ,可以设置为字符串

    • float_format : string, default None Format string for floating point numbers

    • columns : 选择输出的的列存入。

    • header : 指定作为列名的行,默认0,即取第一行,数据为列名行以下的数据;若数据不含列名,则设定 header = None;

    • index : 默认为True,显示index,当index=False 则不显示行索引(名字)

    • index_label : 设置索引列的列名

    • startrow :upper left cell row to dump data frame

    • startcol :upper left cell column to dump data frame

    • engine : string, default None ,write engine to use - you can also set this via the options,io.excel.xlsx.writer, io.excel.xls.writer, andio.excel.xlsm.writer.

    • merge_cells : boolean, default True Write MultiIndex and Hierarchical Rows as merged cells.

    • encoding: string, default None encoding of the resulting excel file. Only necessary for xlwt,other writers support unicode natively.

    • inf_rep : string, default ‘inf’ Representation for infinity (there is no native representation for infinity in Excel)

    • freeze_panes : tuple of integer (length 2), default None Specifies the one-based bottommost row and rightmost column that is to be frozen

      工作之中一个excel内会有多个sheet。但是将两组数据先后保存到一个excel内会发现只有后一组保存的数据,因为前一组的数据被后写入的数据覆盖了。如:

     这是两组数据,df1与df2,我们分别使用to_excel将这两组数据保存到同一个excel内。这里我们将sheet_name这个参数改成不同的

    但是结果只有一个df2,即df1被df2这组数据覆盖了。但是能不能两组数据同时写入、保存,但是不分先后顺序。答案是可以的!

    为了这一方法,我们需要使用到ExcelWriter

    方法很简单,不用再重新导入新的模块,只要使用pd.ExcelWriter建立一个writer,然后,将df1,df2都使用to_excel(writer, sheet名),最后一次性将这些数据保存,并关闭writer就完成了

     当然跟open文件一样,上面的5行代码也可以简写如下:

    with pd.ExcelWriter(r'C:Users数据Desktopdata	est2.xls') as writer:
        df1.to_excel(writer, sheet_name='df1')
        df2.to_excel(writer, sheet_name='df2'
    简单高效,不需要再单独写save和close,自动完成。
     
     
  • 相关阅读:
    centos安装--两张光盘
    ubuntu启动报错 Errors were found while checking the disk-drive for /
    gdb server调试步骤
    交叉编译VIM并移植到ARM嵌入式Linux系统
    交叉编译HTOP并移植到ARM嵌入式Linux系统
    为基于busybox根文件系统的ARM嵌入式Linux交叉编译dropbear使能SSH
    linux下对/sys/class/gpio中的gpio的控制 (转)
    [转]busybox登陆后没要求输入密码的解决办法
    [转]busybox中telnet 功能添加
    [转]Linux下阅读源代码:(g)vim+Taglist+ctags
  • 原文地址:https://www.cnblogs.com/yc3110/p/11995328.html
Copyright © 2020-2023  润新知