分享

Python报表自动化:10000个Excel表纵向合并成1张表

 白河baihe 2023-09-01 发布于浙江

01

准备数据

    为了方便练习,这里直接借用随机函数生成30个Excle表格,每个表格存放10行数据。

import pandas as pdimport numpy as npimport randomimport datetimeimport osos.chdir('D:\Python\方知数据\data')
# 随机数据准备region = ['北京','上海', '广州','武汉','南京','长沙','成都']random.choice(region) # 随机生成地区product = ['A1','A2', 'A3','B1','C1','D1','D2']random.choice(product) # 随机生成产品编号random.randrange(30) # 随机生成销售数量# 生成30个Excle表格,每个表格10行数据for i in range(20): df = pd.DataFrame(columns= ['地区' ,'产品编号','销量']) for rows in range(10): date = pd.to_datetime('2023-1-1') + datetime.timedelta(days=i) date = date.strftime('%Y-%m-%d') temp = pd.DataFrame( [[ random.choice(region), random.choice(product), random.randrange(20)]],columns=df.columns) df = pd.concat([df,temp]) df.to_excel('销售明细' + date + '.xlsx',index=False)

     工作文件夹通过os.chdir()设置在'D:\Python\方知数据\data',在运行完上述代码后生成的文件就在该文件夹内。生成的其中一个Excel数据如下:

图片

02


合并数据

    通过for循环一一读取os.listdir()获取到工作目录下的所有Excel表格数据,再存入list内,最后通过pd.concat()纵向拼接list内的全部数据。

# 新建空的列表,来装所有的列表df_list = []
# 循环读取Excelfor i in os.listdir('D:\Python\方知数据\data'): if i.split('.')[-1] == 'xlsx':        data = pd.read_excel(i)        # 放入list内        df_list.append(data)        # 拼接全部 DataFrameresult = pd.concat(df_list,ignore_index=True) result.shape

      这样数据就成功拼接了,每个表格10行数据,30个表格数据拼成了1个300行的表格数据。 如果想使用代码删除刚生成的模拟数据,可以使用os.remove()。

for i in os.listdir('D:\Python\方知数据\data'):    os.remove(i)

     需要jupyter格式的源代码,可以直接在后台发送230621。

图片

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多