Pandas数据分析之批量拆分/合并Excel
作者:Wumbuk 发布时间:2023-03-28 19:39:58
标签:pandas,拆分,合并
前言
笔者最近正在学习Pandas数据分析,将自己的学习笔记做成一套系列文章。本节主要记录Pandas中数据的合并(concat和append)
将一个大的Excel等份拆成多个Excel将多个小Excel合并成一个大的Excel并且标记来源
一、假造数据
work_dir="./datas"
splits_dir=f"{work_dir}/splits"
import os
if not os.path.exists(splits_dir):
os.mkdir(splits_dir)
#0.读取源Excel到Pandas
import pandas as pd
df_source=pd.read_excel(f"{work_dir}/1.xlsx")
df_source.head()
df_source.index
df_source.shape
total_row_count=df_source.shape[0]
total_row_count
二、程序演示
1、将一个大Excel等份拆成多个Excel
使用df.iloc方法,将一个大的dataframe,拆分成多个小的dataframe
将使用dataframe.to_excel保存每个小的Excel
#1.计算拆分后的每个excel的行数
#这个大excel,会拆分给这几个人
user_names=['xiao_shuai',"xiao_wang","xiao_ming","xiao_lei","xiao_bo","xiao_hong"]
#每个人的人数数目
split_size=total_row_count//len(user_names)
if total_row_count%len(user_names)!=0:
split_size+=1
split_size
#拆分成多个dataframe
df_subs=[]
for idx,user_name in enumerate(user_names):
#iloc的开始索引
begin=idx*split_size
#iloc的结束索引
end=begin+split_size
#实现df按照iloc拆分
df_sub=df_source.iloc[begin:end]
#将每个子df存入到列表
df_subs.append((idx,user_name,df_sub))
#3. 将每个dataframe存入到excel
for idx,user_name,df_sub in df_subs:
file_name=f"{splits_dir}/articles_{idx}_{user_name}.xlsx"
df_sub.to_excel(file_name,index=False)
2、合并多个小Excel到一个大Excel
遍历文件夹,得到要合并的Excel文件列表
分别读取到dataframe,给每个df添加一列用于标记来源
使用pd.concat进行df批量合并
将合并后的dataframe输出到excel
#1.遍历文件夹,得到要合并的Excel名称列表
import os
excel_names=[]
for excel_name in os.listdir(splits_dir):
excel_names.append(excel_name)
excel_names
#2分别读取到dataframe
df_list=[]
for excel_name in excel_names:
#读取每个excel到df
excel_path=f"{splits_dir}/{excel_name}"
df_split=pd.read_excel(excel_path)
#得到username
username=excel_name.replace("articles_","").replace(".xlsx","")[2:]
print(excel_name,username)
#给每个df添加1列,即用户名字
df_split["username"]=username
df_list.append(df_split)
#3.使用pd.concat进行合并
df_merged=pd.concat(df_list)
df_merged.shape
df_merged.head()
df_merged["username"].value_counts()
#4.将合并后的dataframe输出到excel
df_merged.to_excel(f"{work_dir}/result_merged.xlsx",index=False)
来源:https://blog.csdn.net/qq_48081868/article/details/120007757
0
投稿
猜你喜欢
- mssql的每个varchar、text字段都被自动插入一段js代码,即使删除这段代码,如果没有从源头上解决,几分钟后,js代码就又会自动插
- 本文实例讲述了Python闭包和装饰器用法。分享给大家供大家参考,具体如下:Python的装饰器的英文名叫Decorator,作用是完成对一
- acronym从字义上理解,是取首字母的缩写词,abbr是缩写,在应用过程中,两个标签看起来差不多,但个人觉得还是有区别的。看下面的例子:&
- 假设我们需要一个函数什么事都不干,只是抛出异常(在某些系统中有些handler就是干这事的),我们可以很直观的写出下面的代码:def fun
- 以前游戏2048火的时候,正好用其他的语言编写了一个,现在学习python,正好想起来,便决定用python写一个2048,由于没学过pyt
- 复杂度可能高了点- - 也没太注意我想了好久 也找了好久 没看到什么能够用python解决n皇后问题而且不调用递归的 因为我不太能理解递归(
- 一、Sql Server中的日期与时间函数 1. 当前系统日期、时间 select getdate() 2. dateadd 在向指定日期加
- 总经一下前段时间用于的jQuery方法:find及children。需要的朋友可以参考下。首先看看英文解释吧: children方法:fin
- 本次爬虫用到的网址是:http://www.netbian.com/index.htm: 彼岸桌面.里面有很多的好看壁纸,而且都是可以下载高
- django 模版显示的html中出现'类似的ascii字符,这是由于django对单引号进行了转义,可以通过关闭转 * 决h
- 前言相信每位家长都有所体会,因为要在孩子出生后两周内起个名字(需要办理出生证明了),估计很多人都像我一样,刚开始是很慌乱的,虽然感觉汉字非常
- 一、概念介绍嵴线图(ridgeline plot),用来展示同一维度的几个数据的分布情况,每一层嵴线(峰峦)都是一个直方图或者密度图,层层堆
- 本文实例讲述了Python基于pillow判断图片完整性的方法。分享给大家供大家参考,具体如下:1、安装第三方库。pip install p
- 前言本项目主要通过python的matplotlib pandas pyecharts等库对疫情数据进行可视化分析数据来源:本数据集来源于k
- 我们都知道有很多的非常著名的注册服务器,例如: Consul、ZooKeeper、etcd,甚至借助于redis完成服务注册发现。但是本篇文
- 本文研究的主要是Python使用requests发送POST请求的相关内容,具体介绍如下。一个http请求包括三个部分,为别为请求行,请求报
- 前言matplotlib是基于Python语言的开源项目,旨在为Python提供一个数据绘图包。在使用Python matplotlib库绘
- 1。总体概要kNN算法已经在上一篇博客中说明。对于要处理手写体数字,需要处理的点主要包括: (1)图片的预处理:将png,jpg等格式的图片
- 一图胜“十”言:SQL Server 数据库总结 一个大概的总结 经过一段时间的学习,也对数据库有了一些认识。 数据库基本是由表,关系,操作
- IDA插件是经过编译的、功能更强大的IDC脚本,与仅仅使用脚本相比,插件能够执行更加复杂的任务。与编写IDC脚本相比,python显得更为轻