金牌厨师Pandas:听说Excel处理数据分行快得很?

本文展示了如何使用Python的Pandas库处理Excel数据,通过explode方法将多列数据转换为多行,并进行数据清洗。文章详细解释了筛选核心列、合并数据、拆分嵌套列表等步骤,提供了数据清洗的实战案例。
摘要由CSDN通过智能技术生成

作者简介
HeoiJin:立志透过数据看清世界的产品策划,专注爬虫、数据分析、产品策划领域。
万物皆营销 | 资本永不眠 | 数据恒真理
CSDN:https://me.csdn.net/weixin_40679090

目录

在这里插入图片描述

一、前言

最近收到一个小朋友(无中生友)发过来的需求,要将多列数据转化成多行数据,并提取指定列的数据。但因为数据结构有点丑,而且数据量大,不好通过excel公式进行清洗,希望我利用python帮他清洗下。那么这位小朋友碰上了什么幺蛾子,接下来一起一探究竟吧。

二、项目准备

  • 语言:Python 3.7
  • IDE:Pycharm
  • 相关库:Pandas、re、xlrd、xlwt

三、项目特色

  • 利用ExcelFile方法读取单个Excel文件中的多个sheets
  • 利用explode方法为dataframe中嵌套的列表解嵌套为多行数据

四、项目需求

拿到样本数据和最终效果图的那一刻,有句话想跟设计表格的大佬说,不知当讲不当讲…各位先品一品这堆数据。

吐槽归吐槽,金牌厨师胖大师表示:“这波问题不大,接下来我要展示我王者水平的操作!”

在这里插入图片描述

五、核心厨具介绍

pandas.DateFrame.explode能将dataframe的嵌套列表拆分成多行,并会复制同一行的其他元素。

方法 参数详解
DataFrame.explode(self, column: Union[str, Tuple]) → ‘DataFrame’ column:要进行操作的列名,可以传入字符串或者元组;
注意列名应该是唯一的,否则会引发ValueError
返回dataframe(如果整个dataframe仅有一列,会自动在转换为series)

六、烹饪开始

6.1 确认烹饪思路

  1. 遍历所有sheet
  2. 筛选出核心的房号、姓名、电话信息
  3. 将信息拼接成为列表
  4. 将列表拆分为多行数据
  5. 输出为csv

6.2 筛选核心食材(获取特定的columns)

观察可知,三个sheets的表头顺序都不一样,如果只利用简单粗暴的切片方式,并不能精准地获取到需要的表头。但庆幸表头名称都相同,派出正则表达式这把利刃便能轻松地完成任务。

def get_new_columns(df):
    '''
    >> 利用正则匹配出目标columns
    >> df.columns=['栋数', '户型', '姓名', '性别', '电话', '房号', '姓名.1', '性别.1', '电话.1', '房号.1','姓名.2', '性别.2', '电话.2', '房号.2']
    >> 当我们的columns重复的时候,pandas会自动帮我们在重复的columns后面加上.编号。
    :param df:
    :return:
    '''
    # 提取columns对应的字段
    pattern_name=r',(姓名.?\d?),'
    pattern_room=r',(房号.?\d?),'
    pattern_phoone=r',(电话.?\d?),'
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值