精华内容
下载资源
问答
  • python读取多个excel文件
    万次阅读
    2018-12-05 09:46:54

    代码如下,方法比较粗暴,以后继续改进:

    import xlwt
    import xlrd
    
    #数模比赛中的excel文件的数据整理
    #仅供参考,菜鸡数模T T
    
    financials = ['Sales management', 'market/marketing', 'Sales ', 'Finance/auditing/tax']
    IT = ['Computer software ', 'Computer hardware', 'Internet development and application', 'IT-Management',
          'IT-QM, technical support and more', 'Communications technology', 'Internet development and application']
    industrials = ['Engineering/machinery/energy', 'Senior management', 'Art/graphics/Animation design',
                   'Counsel/consulting', 'Construction/infrastructure/gardening',
                   'QMS/safety/environmental protection', 'Technical work', 'HR', 'Logistics/warehousing',
                   'Science & Technology', 'Transportation service', 'Office administration/logistics',
                   'Production/operation', 'Procurement', 'Biology/chemicals/pharmaceuticals/medical equipment',
                   'Electronics/appliances/semiconductor/instrumentation', 'Other','Gradu']
    ConsumerDiscretionary = ['Education', 'Literature/screenwriting/writing', 'Beauty and personal care',
                             'Customer service and technical support', 'Movies, TV and recreation',
                             'Restaurants & recreation', 'Advertising', 'PRs and news media','Graduates']
    HealthCare = ['Hospital/medical/care', 'Security/housekeeping/other']
    ConsumerStaples = ['General merchandise/chains/retail']
    property = ['Real property', 'Property management', 'Hotels/tourism']
    
    it_num = []
    finan_num = []
    indus_num = []
    discre_num = []
    hea_num = []
    stap_num = []
    pro_num = []
    
    
    # 读excel
    def read_excel():
        # 打开文件
        # num = 1
        global it_num
        global finan_num
        global indus_num
        global discre_num
        global hea_num
        global stap_num
        global pro_num
    
        # file = "C://Users//cheer//Desktop//problem//2018 APMCM Problems//2018 APMCM Problem B//A//2016//"
        for page in range(1, 9):
            it_num.clear()
            finan_num.clear()
            indus_num.clear()
            discre_num.clear()
            hea_num.clear()
            stap_num.clear()
            pro_num.clear()
            if page < 10:
                k = str(page)
                name = "0" + k
                # print(name)
                file = "C://Users//cheer//Desktop//problem//2018 APMCM Problems//2018 APMCM Problem B//A//2018//" + name + ".xlsx"
            else:
                file = "C://Users//cheer//Desktop//problem//2018 APMCM Problems//2018 APMCM Problem B//A//2018//" + str(
                    page) + ".xlsx"
            workbook = xlrd.open_workbook(file, "rb")
            sheet = workbook.sheet_by_index(0)
            # print(sheet.nrows)
            # 插入数据
            for row in range(3, sheet.nrows):  # row --行数
                data = str(sheet.cell_value(row, 1))
                for names in IT:
                    if names == data:
                        # print(data)
                        if len(it_num) == 0:
                            for index in range(2, 12):
                                it_num.append(sheet.cell_value(row, index))
                        else:
                            for index in range(2, 12):
                                it_num[index - 2] += sheet.cell_value(row, index)
                        break
                for names in financials:
                    if names == data:
                        # print(data)
                        if len(finan_num) == 0:
                            for index in range(2, 12):
                                finan_num.append(sheet.cell_value(row, index))
                        else:
                            for index in range(2, 12):
                                finan_num[index - 2] += sheet.cell_value(row, index)
                        break
                for names in industrials:
                    if names == data:
                        # print(data)
                        # num += 1
                        if len(indus_num) == 0:
                            for index in range(2, 12):
                                indus_num.append(sheet.cell_value(row, index))
                        else:
                            for index in range(2, 12):
                                indus_num[index - 2] += sheet.cell_value(row, index)
                        break
                for names in ConsumerDiscretionary:
                    if names == data:
                        # print(data)
                        if len(discre_num) == 0:
                            for index in range(2, 12):
                                discre_num.append(sheet.cell_value(row, index))
                        else:
                            for index in range(2, 12):
                                discre_num[index - 2] += sheet.cell_value(row, index)
                        break
                for names in HealthCare:
                    if names == data:
                        # print(data)
                        if len(hea_num) == 0:
                            for index in range(2, 12):
                                hea_num.append(sheet.cell_value(row, index))
                        else:
                            for index in range(2, 12):
                                hea_num[index - 2] += sheet.cell_value(row, index)
                        break
                for names in ConsumerStaples:
                    if names == data:
                        if len(stap_num) == 0:
                            for index in range(2, 12):
                                stap_num.append(sheet.cell_value(row, index))
                        else:
                            for index in range(2, 12):
                                stap_num[index - 2] += sheet.cell_value(row, index)
                        break
                for names in property:
                    if names == data:
                        # print(data)
                        if len(pro_num) == 0:
                            for index in range(2, 12):
                                pro_num.append(sheet.cell_value(row, index))
                        else:
                            for index in range(2, 12):
                                pro_num[index - 2] += sheet.cell_value(row, index)
                        break
                # sum = 0
                # for i in range(0, 8):
                #     sum += i
                # it_num.append(sum)
                if len(stap_num)==0:
                    for indexs in range(2,12):
                        stap_num.append(0)
            write_excel(page)
    
    
    
    def write_excel(page):
        f = xlwt.Workbook()  # 创建工作簿
        # num = 1
        global it_num
        global finan_num
        global indus_num
        global discre_num
        global hea_num
        global stap_num
        global pro_num
        '''
        创建第一个sheet:
            sheet
        '''
    
        sheet = f.add_sheet(u'sheet')  # 创建sheet
        row0 = [u'profession', u'Junior middle school', u'	Senior middle school', u'Technical secondary school',
                u'Junior college', u'Bachelor \' s degree', u'Master\'s degree', u'Doctor\'s degree', u'MBA', u'Unlimited',
                u'the desired profession', u'job demand']
        column0 = [u'Information Technology', u'financials', u'industrials', u'Consumer Discretionary', u'Health Care',
                   u'Consumer Staples', u'property']
    
        # 生成第一行
        for i in range(0, len(row0)):
            sheet.write(0, i, row0[i])
    
        # 生成第一列
        for i in range(0, len(column0)):
            sheet.write(i + 1, 0, column0[i])
    
        # Information Technology
        sum1 = 0
        for i in range(1, len(row0) - 2):
            sheet.write(1, i, it_num[i])
            sum1 += it_num[i]
        # print(sum1)
        sheet.write(1, len(row0) - 1, it_num[0])
        sheet.write(1, len(row0) - 2, sum1)
    
        # sheet.write(1, len(row0) - 2, it_num[-1])
        sum1 = 0
        for i in range(1, len(row0) - 2):
            sheet.write(2, i, finan_num[i])
            sum1 += finan_num[i]
        sheet.write(2, len(row0) - 1, finan_num[0])
        sheet.write(2, len(row0) - 2, sum1)
    
        sum1 = 0
        for i in range(1, len(row0) - 2):
            sheet.write(3, i, indus_num[i])
            sum1 += indus_num[i]
        sheet.write(3, len(row0) - 1, indus_num[0])
        sheet.write(3, len(row0) - 2, sum1)
    
        sum1 = 0
        for i in range(1, len(row0) - 2):
            sheet.write(4, i, discre_num[i])
            sum1 += discre_num[i]
        sheet.write(4, len(row0) - 1, discre_num[0])
        sheet.write(4, len(row0) - 2, sum1)
    
        sum1 = 0
        for i in range(1, len(row0) - 2):
            sheet.write(5, i, hea_num[i])
            sum1 += hea_num[i]
        sheet.write(5, len(row0) - 1, hea_num[0])
        sheet.write(5, len(row0) - 2, sum1)
    
        sum1 = 0
        for i in range(1, len(row0) - 2):
            sheet.write(6, i, stap_num[i])
            sum1 += stap_num[i]
        sheet.write(6, len(row0) - 1, stap_num[0])
        sheet.write(6, len(row0) - 2, sum1)
    
        sum1 = 0
        for i in range(1, len(row0) - 2):
            sheet.write(7, i, pro_num[i])
            sum1 += pro_num[i]
        sheet.write(7, len(row0) - 1, pro_num[0])
        sheet.write(7, len(row0) - 2, sum1)
    
        # file = "C://Users//cheer//Desktop//problem//2018 APMCM Problems//2018 APMCM Problem B//A//2016//"
        k = str(page)
        name = "0" + k + " done"
        # print(name)
        file = "C://Users//cheer//untitled//" + name + ".xls"
        f.save(file)  # 保存文件
    
    
    read_excel()
    
    
    
    更多相关内容
  • # python读取ex表实现汇总统计 import pandas as pd import os # 合并excel文件到一表 dir_file = "销售表" df_list = [] for file in os.listdir(dir_file): if file.endswith(".xlsx"): .

    案例需求:

    一个电商卖背包、单肩包、双肩包,统计产品销售的总和、利润最大、最小和平均值


    在销售表文件下有3个ex表:

    其他双肩包和单肩包与背包数据类似。

    # python读取过个ex表实现汇总统计
    
    import pandas as pd
    import os
    
    # 合并excel文件到一个表
    dir_file = "销售表"
    df_list = []
    for file in os.listdir(dir_file):
        if file.endswith(".xlsx"):
            df_list.append(pd.read_excel(f"{dir_file}/{file}"))
    df_all = pd.concat(df_list)
    df_all.sample(3)
    
    
    def computer_data(df_sub):
        return pd.Series({
            "总和": round(df_sub["销售利润"].sum(), 2),
            "总小": round(df_sub["销售利润"].min(), 2),
            "总大": round(df_sub["销售利润"].max(), 2),
            "平均": round(df_sub["销售利润"].mean(), 2),
        })
    
    
    df_group = df_all.groupby("产品名称").apply(computer_data)
    
    
    # 输出结果excel
    df_group.to_excel("按照产品汇总统计.xlsx")
    
    

    效果实现如下: 

    展开全文
  • 主要为大家详细介绍了Python多个excel文件合并为一个文件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 工作中经常遇到要将十几个Excel(不管是xls、或者是CSV)合并到同一个文件中去,手工一个一个复制是不可能的,此时就轮到Python出马了 主要是利用for循环,读取每一个文件,作为df,然后再通过list的append加在一起...
  •   而每一个文件都是一位同学对全班除了自己之外的其他同学的各项打分,我们以其中一个Excel文件为例来看:   可以看到,全班同学人数(即表格行数)很、需要打分的项目(即表格列数)有11个(不算总分);...

      又到了一年一度的算综测时间,其中一大难点就是计算全班同学相互打分的平均值;而若借助Python,这一问题便迎刃而解。

      目前有一个文件夹,其中存放了大量Excel文件;文件名称是每一位同学的名字,即文件名称没有任何规律。
    在这里插入图片描述
      而每一个文件都是一位同学全班除了自己之外的其他同学的各项打分,我们以其中一个Excel文件为例来看:
    在这里插入图片描述
      可以看到,全班同学人数(即表格行数)很多、需要打分的项目(即表格列数)有11个(不算总分);同时,由于不能给自己打分,导致每一份表格中会有一行没有数据。

      而我们需要做的,就是求出每一位同学的、11个打分项目分别的平均分,并存放在一个新的、表头(行头与列头)与大家打分文件一致的总文件中,如下图。其中,每一个格子都代表了这位同学、这一项打分项目在经过班级除其之外的每一位同学打分后计算出的平均值。
    在这里插入图片描述

      可以看到,一个人就需要算11次平均,更何况一个班会有数十位同学。如果单独用Excel计算,是非常麻烦的。

      而借助Python,就会简单很多。具体代码如下。在这里,就不再像平日里机器学习、深度学习代码博客那样,对代码加以逐段、分部分的具体解释了,直接列出全部代码,大家参考注释即可理解。

    # -*- coding: utf-8 -*-
    """
    Created on Thu Apr  8 16:24:41 2021
    
    @author: fkxxgis
    """
    
    import os
    import numpy as np
    from openpyxl import load_workbook
    
    file_path='F:/班长/2020-2021综合测评与评奖评优/01_综合测评/地信XXXX班互评打分表/' #这里是每一位同学打分Excel文件存放的路径
    output_path='F:/班长/2020-2021综合测评与评奖评优/01_综合测评/地信XXXX班综合素质测评互评打分表.xlsx' #这里是最终结果存放路径,请不要和上述路径一致
    first_row=5 #第一个分数所在的行数
    first_column=3 #第一个分数所在的列数
    all_row=32 #班级同学总数
    all_column=11 #需要计算的分数项目个数
    
    all_excel=os.listdir(file_path) #获取打分文件路径下全部Excel文件
    file_row=first_row+all_row-1
    file_column=first_column+all_column-1
    all_mean_score=np.zeros((file_row,file_column),dtype=float) #新建一个二维数组,存放每一位同学、每一项项目的分数平均值
    for now_row in range(first_row,file_row+1):
        for now_column in range (first_column,file_column+1):
            all_score=[]
            for excel_num in range(0,len(all_excel)):
                now_excel=load_workbook(file_path+all_excel[excel_num]) #打开第一个打分Excel文件
                all_sheet=now_excel.get_sheet_names() #获取打分文件的全部Sheet名称
                now_sheet=now_excel.get_sheet_by_name(all_sheet[0]) #本文中分数全部存储于第一个Sheet,因此下标为0
                single_score=now_sheet.cell(now_row,now_column).value #获取对应单元格数据
                if single_score==None: #如果这个单元格为空(也就是自己不给自己打分的那一行)
                    pass
                else:
                    all_score.append(float(single_score))
            all_mean_score[now_row-1,now_column-1]=np.mean(all_score) #计算全部同学为这一位同学、这一个打分项目所打分数的平均值
    
    output_excel=load_workbook(output_path) #读取结果存放Excel
    output_all_sheet=output_excel.get_sheet_names() #这里代码含义同上
    output_sheet=output_excel.get_sheet_by_name(output_all_sheet[0])
    output_sheet=output_excel.active
    for output_now_row in range(first_row,file_row+1):
        for output_now_column in range (first_column,file_column+1):
            exec("output_sheet.cell(output_now_row,output_now_column).value=all_mean_score[output_now_row-1,output_now_column-1]") #将二维数组中每一位同学、每一项打分项目的最终平均分数写入结果文件的对应位置
    output_excel.save(output_path)
    

    欢迎关注公众号:疯狂学习GIS

    在这里插入图片描述

    展开全文
  • # 功能:遍历目录下的所有xls文件,合并到指定的一个文件 def main(): #指定目录 base = 'C:\\Users\\11578\\Desktop\\05' desktop = os.path.join(os.path.expanduser("~"), 'Desktop') #存放所有xls表的...
    import os
    import pandas as pd
    
    # 功能:遍历目录下的所有xls文件,合并到指定的一个文件
    
    def main():
        #指定目录
        base = 'C:\\Users\\11578\\Desktop\\05'
    
        desktop =  os.path.join(os.path.expanduser("~"), 'Desktop')
    
        #存放所有xls表的数据
        allLineData = pd.DataFrame()
    
        for excelFile in findAllFile(base):
            # 读取工作簿和工作簿中的工作表
            oneFileData =pd.read_excel(excelFile)
            # append忽略行头(忽略第一行)
            allLineData=allLineData.append(oneFileData, ignore_index=True)
        # print(allLineData)
        #写到桌面
        writer=pd.ExcelWriter(os.path.join(desktop,'合并后的文件.xls'))
        # 使用to_excel将之前读取的工作簿中工作表的数据写入到新建的工作簿的工作表中
        allLineData.to_excel(writer, index=False)
        # 保存并且关闭工作簿
        writer.save()
    
    #查找base目录下的所有xls和xlsx文件
    def findAllFile(base):
        for root, ds, fs in os.walk(base):
            for f in fs:
                if f.endswith('.xls') or f.endswith('.xlsx'):
                    fullname = os.path.join(root, f)
                    yield fullname
    
    if __name__ == '__main__':
        main()
    

    gui版本

    
    
    from tkinter import *
    import os
    import pandas as pd
    
    
    
    
    
    
    
    def gui():
        # 第1步,实例化object,建立窗口window
        window=Tk()
    
        # 第2步,给窗口的可视化起名字
        window.title('Aggregation Excel')
    
        window.geometry('530x150')  # 这里的乘是小x
    
        # 桌面
        desktop=os.path.join(os.path.expanduser("~"), 'Desktop')
    
        strvar=StringVar()
        strvar.set(desktop)
    
        l1=Label(window, text="扫描excel的目录")
    
        e1=Entry(window, show=None, width=50)
    
        l2=Label(window, text="合并后文件的存放路径")
        e2=Entry(window, show=None, width=50, textvariable=strvar)
    
        def insert_point():  # 在鼠标焦点处插入输入内容
            # 扫描excel的目录路径
            e1value=e1.get()
            # 合并后存放的目录路径
            e2value=e2.get()
            # t.insert('insert', var)
            aggExcel(e1value,e2value)
    
    
        # 第6步,创建并放置两个按钮分别触发两种情况
        btn1=Button(window, text='开始合并', width=10,
                    height=2, command=insert_point)
    
    
    
    
        t=Text(window, height=3)
        l1.grid(row=1, column=1, sticky=E)
        e1.grid(row=1, column=2, sticky=E)
        l2.grid(row=2, column=1, sticky=E)
        e2.grid(row=2, column=2, sticky=E)
        btn1.grid(row=4, column=1, sticky=E)
    
        # 第8步,主窗口循环显示
        window.mainloop()
    
    
    
    def aggExcel(filedir,writePlace):
        # 指定目录
        # base='C:\\Users\\11578\\Desktop\\05'
        # base = e1value
    
        # 存放所有xls表的数据
        allLineData=pd.DataFrame()
    
        for excelFile in findAllFile(filedir):
            # 读取工作簿和工作簿中的工作表
            oneFileData=pd.read_excel(excelFile)
            # append忽略行头(忽略第一行)
            allLineData=allLineData.append(oneFileData, ignore_index=True)
        # print(allLineData)
        # 写到桌面
        writer=pd.ExcelWriter(os.path.join(writePlace, '合并后的文件.xls'))
        # 使用to_excel将之前读取的工作簿中工作表的数据写入到新建的工作簿的工作表中
        allLineData.to_excel(writer, index=False)
        # 保存并且关闭工作簿
        writer.save()
    
    
    #查找base目录下的所有xls和xlsx文件
    def findAllFile(base):
        for root, ds, fs in os.walk(base):
            for f in fs:
                if f.endswith('.xls') or f.endswith('.xlsx'):
                    fullname = os.path.join(root, f)
                    yield fullname
    
    if __name__ == '__main__':
        gui()
    
    

    打包成exe:
    打开文件所在的目录下:cmd执行命令

    pyinstaller -w xxx.py
    

    GUI参考:https://www.cnblogs.com/shwee/p/9427975.html
    pandas参考:https://zhuanlan.zhihu.com/p/31541902
    打包教程:https://blog.51cto.com/u_15284226/2988724

    展开全文
  • python批量读取Excel文件

    千次阅读 2022-02-25 11:03:05
    将同一文件夹下的xlsx文件读取: import os import pandas as pd path = r'./path of file' for i in os.listdir(path): df = pd.read_excel(os.path.join(path,i))
  • 今天小编就为大家分享一篇python 实现读取个excel多个sheet表并合并的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 相关代码:import osimport pandas as pd# 将文件读取出来放一个列表里面pwd = 'test' # 获取文件目录# 新建列表,存放文件名file_list = []# 新建列表存放每个文件数据(依次读取多个相同结构的Excel文件并创建...
  • 一、将excel数据源存储到同一个excel的不同sheet 中 例如A.xlsx 中有test1,test2 两张sh eet。B.xlsx中有test3 一张sheet,存储到C.xlsx中后,C有三张sheet,分别是test1,test2,test3 代码: file_...
  • 摘要:不同方法读取excel中的多个不同sheet表格性能比较 # 方法1 def read_excel(path): df=pd.read_excel(path,None) print(df.keys()) # for k,v in df.items(): # print(k) # print(v) # print(type(v)) ...
  • Python使用pandas读取两个或者多个excel文件(xlsx)并进行数据连接(join)合并两个或者多个excel的信息 目录 Python使用pandas读取两个或者多个excel文件(xlsx)并进行数据连接(join)合并两个或者多个excel...
  • 主要介绍了python批量设置多个Excel文件页眉页脚的源码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 今天小编就为大家分享一篇python3读取excel文件只提取某些行某些列的值方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 好久没写了,今天来说说python读取excel的常见方法。首先需要用到xlrd模块,pip install xlrd 安装模块。 首先打开excel文件: xl = xlrd.open_workbook(r’D:\file\data.xlsx’) 传文件路径 通过索引获取要操作的...
  • 通常,我们正在使用 Excel 文件,并且我们肯定遇到过需要将多个 Excel 文件合并为一个的场景。传统方法一直是在 excel 中使用 VBA 代码来完成这项工作,但这是一个多步骤的过程,并不那么容易理解。另一种方法是手动...
  • python快速读取excel

    2020-12-22 12:24:58
    python处理excel数据也是经常需要用到的。 这里使用的包是openpyxl import openpyxl excel_name = 't1.xlsx' wb = openpyxl.load_workbook(excel_name) ws = wb.active print(ws.cell(row=1, column=1).value) # or...
  • 主要介绍了Python读取excel文件中带公式的值的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • filePath = r"C:\Users\HP\Desktop\数据包" ... temp = pd.read_excel("C://Users//HP//Desktop//数据包//"+i, index_col=0) # data = data.asfreq('D') #粒度 temp[temp == 0] = np.nan temp.interpolate(inpl
  • 主要为大家详细介绍了Python读取Json字典写入Excel表格的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 如何使用python合并多个excel文件

    千次阅读 2022-05-26 13:52:38
    当你有多个列名一致的excel文件的时候,你想要把多个excel文件合并成一个excel文件 Python代码实现 首先导入需要的库 import pandas as pd import os 将所有需要合并的excel放进一个单独的文件夹里 定义一个函数...
  • 我希望用户从计算机中选择两个...我目前无法同时将两个Excel文件读入程序。这是我的密码import numpy as npimport pandas as pdfrom tkinter import filedialog as fdfrom tkinter import ttkfrom tkinter import ...
  • 下面小编就为大家分享一篇python 读取txt中每行数据,并且保存到excel中的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 主要介绍了解决python执行较大excel文件openpyxl慢问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • Python批量合并多个excel文件

    千次阅读 2022-04-16 13:28:21
    Python批量合并多个excel文件 1.首先准备数据文件 我这里本来只有一个csv文件,我就把它复制了两份改了一下名字 下面是我最近毕设机械臂抓取任务的交互数据,第一列是reward,第二列是长度,第三列是时间 2.编写...
  • 如何将excel中的不同sheet中的数据快速合到一dataframe中

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 33,298
精华内容 13,319
关键字:

python读取多个excel文件

友情链接: midi_drum.ZIP