美文网首页
Python常规处理excel文件

Python常规处理excel文件

作者: overad | 来源:发表于2018-09-02 15:53 被阅读0次

    1. os.walk() :遍历制定文件夹下的所有文档

    os.walk(): 返回Directory tree generator。
    每次生成格式为(dirpath, dirnames, filenames) 的tuple,元素依次是当前路径、当前路径下文件夹列表、当前路径下文件名列表。

    In [7]: import os
    
    In [8]: path = 'd:/ex2'
    
    In [9]: for dirname,dirpath,filename in os.walk(path):
       ...:     print(dirname,dirpath,filename)
    

    2. pd.read_excel

    除了使用xlrd库或者xlwt库进行对excel表格的操作读与写,而且pandas库同样支持excel的操作;且pandas操作更加简介方便

    pd.read_excel(io, sheetname=0,header=0,skiprows=None,index_col=None,names=None,
                    arse_cols=None,date_parser=None,na_values=None,thousands=None, 
                    convert_float=True,has_index_names=None,converters=None,dtype=None,
                    true_values=None,false_values=None,engine=None,squeeze=False,**kwds)
    
    1. sheetname:默认是sheetname为0,返回多表使用sheetname=[0,1],若sheetname=None是返回全表 。注意:int/string返回的是dataframe,而none和list返回的是dict of dataframe。
      sheet = pd.read_excel('example.xls',sheetname= [0,1])
    2. header :指定作为列名的行,默认0,即取第一行,数据为列名行以下的数据;若数据不含列名,则设定 header = None;
      sheet = pd.read_excel('example.xls',sheetname= 1,header = None)
    3. skiprows:省略指定行数的数据
      sheet = pd.read_excel('example.xls',sheetname= 1,header = None,skiprows= 1)
    4. skip_footer:省略从尾部数的行数据
      pd.read_excel('example.xls',sheetname= 1,header = None,skip_footer= 1)
    5. index_col :指定列为索引列,也可以使用 u’string’
      sheet = pd.read_excel('example.xls',sheetname= 1,header = None,skip_footer= 1,index_col=1)
    6. names:指定列的名字,传入一个list数据
      sheet = pd.read_excel('example.xls',sheetname= 1,header = None,skip_footer= 1,index_col=1,names=['a','b','c'])

    3. xlrd

    import xlrd
    data = xlrd.open_workbook('teste.xls') # 打开xls文件
    table = data.sheets()[0] # 打开第一张表
    nrows = table.nrows      # 获取表的行数
    for i in range(nrows):   # 循环逐行打印
        if i == 0: # 跳过第一行
            continue
        print table.row_values(i)[:10] # 取前十三列
    

    使用xlrd读取文件,使用xlwt生成Excel文件(可以控制Excel中单元格的格式)。但是用xlrd读取excel是不能对其进行操作的;而xlwt生成excel文件是不能在已有的excel文件基础上进行修改的,如需要修改文件就要使用xluntils模块。

    import xlrd
    import xlutils.copy
    #打开一个workbook
    rb = xlrd.open_workbook('E:\\Code\\Python\\test1.xls') 
    wb = xlutils.copy.copy(rb)
    #获取sheet对象,通过sheet_by_index()获取的sheet对象没有write()方法
    ws = wb.get_sheet(0)
    #写入数据
    ws.write(1, 1, 'changed!')
    #添加sheet页
    wb.add_sheet('sheetnnn2',cell_overwrite_ok=True)
    #利用保存时同名覆盖达到修改excel文件的目的,注意未被修改的内容保持不变
    wb.save('E:\\Code\\Python\\test1.xls')
    

    4. Xlsxwrite

    创建一个Workbook的实例对象。可以传入一个文件名字,如果不想生成的文件在当前路径下面,可以在文件名字前面带上绝对路径。
    add_worksheet()就是增加一个sheet
    然后关闭这个对象,完成xlsx文件的生成。

    import xlsxwriter
     
    workbook = xlsxwriter.Workbook('hello.xlsx')
    worksheet = workbook.add_worksheet()
    worksheet.set_column('B:B', len('hello world')+1)
    worksheet.write('B5', 'hello world')
    # 或者:worksheet.write('A1', 'hello world')
    workbook.close()
    
    #写入Excel
    write_2 = pd.ExcelWriter('D:\\ex2\\due\\finally_2.xlsx')
    tar_data.to_excel(write_2,'tar')
    
    #写入csv
    data2.to_csv('d:/ex2/tmp_matance_2016.csv',sep=',')
    

    5. pandas对指定列进行填充的方法

    #读取表头文件,用来做合并后的表的标题;
    name = pd.read_excel("D:\\ex2\\1\\titlename.xlsx")
    #在read_excel中names需要传入一个list
    title = list(name)
    #读取文件;
    data1 = pd.read_excel("D:\\ex2\\1\\tar_2016.xlsx",header=None,skiprows=4,names = title)
    #需要填充NA所在的行;
    col_to_fill = [‘a','b']
    #Fillna():填充
    data1[col_to_fill] = data1[col_to_fill].ffill()
    
    

    6. DataFrame.to_excel多次写入不同Sheet

    """
    d_f1,d_f2均为sql查询来的数据
    excelfilepath为要生成保存的excel文件地址
    """
    
    
    write = pd.ExcelWriter(excelfilepath)
    df1 = pd.DataFrame(d_f1)
    #excel的标题
    excel_header = ['日期','年龄']
    df1.to_excel(write,sheet_name='Sheet1',header=excel_header,index=False)
    
    
    df2 = pd.DataFrame(d_f2)
    excel_header = ['日期','人数']
    df2.to_excel(write,sheet_name='Sheet2',header=excel_header,index=False)
    write.save()
    

    相关文章

      网友评论

          本文标题:Python常规处理excel文件

          本文链接:https://www.haomeiwen.com/subject/baapwftx.html