背景
本文旨在结合实例解决Excel多表格的合并、对齐问题。
石榴妈——即老石榴的爱妻,有时会质疑老石榴学习编程的意义。但这回石榴妈在工作中遇到一点点小问题,希望老石榴能用编程的方法解决以提高工作量,老石榴表现的机会来了(搓手(▽))。
背景如下,我们工作中或多或少也遇到过,石榴妈需要汇总各个自总司的表格,总表的格式是统一的,然而各个子公司报上来的表格却个有差别,石榴妈需要一个个列去汇总到总表上,以统一格式。工作量很大,待汇总的表成百上千,如此一来还容易发生人为差错。
那么怎么办呢?怎么解决Excel表格的对齐、合并问题呢?
Life is short,you need python!
所以我们学习编程,并不一定是要从事某一具体专业,而是作为一种技能,更好的完成我们的工作、学业。
数据
数据老石榴在kaggle上随便找的Excel表格,将表格拆分成了3个表格,并将表格3的Smoking、Diabetes进行了打乱,以模拟背景案例。
知识点
言归正传,介绍本文知识点。首先我们要了解数据处理都分为哪几个阶段,数据准备中又有哪几个过程,着重介绍了数据准备的加载,拼接的一些基本用法。。我们需要用到哪些函数(方法)。
1.数据处理的三个阶段
- 数据准备
- 数据转换
- 数据聚合
数据准备
数据准备主要包括以下几个步骤
-
加载(读入)
-
组装
-
合并(merging)
-
拼接(concatenation)
-
组合(combine)
-变形(轴向旋转)
2.函数
Excel的读写
pd…read_excel()
pd.DataFrame.to_excel()
数据拼接
pd.DataFrame.concat()
pd.DataFrame.reindex() 对列重组
具体用法在下文介绍
代码
导入pandas包,我们还是用pandas 实现
- 读excel、写excel,
- 数据合并
- 列的重新排序
import pandas as pd
将读入的三个表 表1,2,3,分别转化成DataFrame数据类型,以进行下一步操作。
- 导入数据,应用read_excel()函数,index_col这一参数,index_col : int, list of int, default None,他的目的是以第几列作为index,默认的none则是创建一个新的整数index
df1 = pd.read_excel('1.xlsx',index_col=None) #index_col 代表从哪一行开始做索引,0 12345这个序列
df2 = pd.read_excel('2.xlsx')
df3 = pd.read_excel('3.xlsx')
把这三个数据输出出来瞜一眼
df1
df2
df3
Gender | Symptoms | Alcohol | Smoking | HBsAg | HBeAg | HBcAb | HCVAb | Diabetes | Cirrhosis | Endemic | |
---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
1 | 1 | 1 | 0 | 1 | 1 | 0 | 1 | 0 | 0 | 1 | 1 |
2 | 1 | 1 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 1 | 0 |
3 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
4 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 0 |
5 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
6 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
7 | 1 | 1 | 1 | 1 | 0 | 0 | 1 | 0 | 0 | 1 | 0 |
8 | 1 | 1 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 |
9 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 |
10 | 0 | 1 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 |
11 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 1 |
12 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
13 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
14 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
15 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
16 | 1 | 1 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 1 | 0 |
17 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
18 | 1 | 1 |