Pandas实战——灵活使用pandas基础知识轻松处理不规则数据

news/2024/11/23 5:52:19/

点击上方“Python爬虫与数据挖掘”,进行关注

回复“书籍”即可获赠Python从入门到进阶共10本电子书

剑阁峥嵘而崔嵬,一夫当关,万夫莫开。

大家好,我是皮皮。

一、前言

前几天在Python最强王者群【wen】问了一个pandas数据合并处理的问题,一起来看看吧。他的原始数据如下所示:

f4f358710e5d33a0c113e546fda2796d.png

然后预期的结果如下所示:

b03bf6769b80c4d066c71dbcb1e4985a.png

二、实现过程

这里【瑜亮老师】给了一个指导如下:原始数据中包含所有所需的信息,但是因为源系统导出的格式问题,有些数据被分配到了合并行中,并且每个单独的表中都是统一格式。

源数据中'商品', '单价', '支付方式', '销售地', '销量'是已经处理好的数据,不需要单独处理。需要获取的信息是'平台', '商户', '账号',这三个均在合并行中,群友的建议都是使用re正则表达式获取。

78d0d9b352f767abf686db89dcceb998.png

获取到上面数据后,还需要删掉多余的行。仔细观察原始表格我们可以发现:每个单独表格是由一个平台、商户、账号所查询的,且所需平台、商户、账号数据分布在合并行中,而这些合并行在被pandas读取后会形成只有第一列有数值,其他列为NaN的情况。

处理过后的格式情况如下:

3a551746883f8930bd11a30227369893.png

这就给了我们去掉这些合并行的简便方法:dropna。

而用正则获取到的平台、商户、账号只有一行,需要对数据进行向下填充空值。而pandas中fillna(method='ffill')即可实现使用前值去填充下面空值的需求。最后,瑜亮老师出手,实现需求,代码如下:

import pandas as pd# 读取Excel文件
df = pd.read_excel('20230812.xlsx', header=None)# 去除重复行
df = df.drop_duplicates(ignore_index=False).reset_index(drop=True)# 根据正则表达式获取“账号”,“平台”,“商户”
df['账号'] = df[0].str.extract(r'账号:(\d+)', expand=False).fillna(method='ffill')
df['平台'] = df[0].str.extract(r'平台:(.*?),', expand=False).fillna(method='ffill')
df['商户'] = df[0].str.extract(r'商户:(.*?),', expand=False).fillna(method='ffill')#  去除含有空值的行(即excel中所有的合并行
df = df.dropna().reset_index(drop=True)# 设置df的列名
df.columns = ['商品', '单价', '支付方式', '销售地', '销量', '账号', '平台', '商户']
df = df[['平台', '商户', '账号', '商品', '单价', '支付方式', '销售地', '销量']]
print(df)

代码运行后的结果如下:

7f206df4703491a31f46f2e8f8bbe094.png

完美实现群友的需求!

三、总结

大家好,我是皮皮。这篇文章主要盘点了一个Pandas数据合并处理问题,文中针对该问题,给出了具体的解析和代码实现,帮助粉丝顺利解决了问题。

最后感谢粉丝【wen】提问,感谢【瑜亮老师】给出的思路和代码解析,感谢【莫生气】等人参与学习交流。

【提问补充】温馨提示,大家在群里提问的时候。可以注意下面几点:如果涉及到大文件数据,可以数据脱敏后,发点demo数据来(小文件的意思),然后贴点代码(可以复制的那种),记得发报错截图(截全)。代码不多的话,直接发代码文字即可,代码超过50行这样的话,发个.py文件就行。

9f4906e52fae65619f3647ec106c12bc.png

大家在学习过程中如果有遇到问题,欢迎随时联系我解决(我的微信:pdcfighting1),应粉丝要求,我创建了一些ChatGPT机器人交流群和高质量的Python付费学习交流群和付费接单群,欢迎大家加入我的Python学习交流群和接单群!

1db977b889a5875ca94d5e2983518634.png

小伙伴们,快快用实践一下吧!如果在学习过程中,有遇到任何问题,欢迎加我好友,我拉你进Python学习交流群共同探讨学习。

6c46369af05768870e9da5f21321427c.jpeg

------------------- End -------------------

往期精彩文章推荐:

  • if a and b and c and d:这种代码有优雅的写法吗?

  • Pycharm和Python到底啥关系?

  • 都说chatGPT编程怎么怎么厉害,今天试了一下,有个静态网页,chatGPT居然没搞定?

  • 站不住就准备加仓,这个pandas语句该咋写?

1d806bd404678dfb0dd3e567fc4c14b5.png

欢迎大家点赞,留言,转发,转载,感谢大家的相伴与支持

想加入Python学习群请在后台回复【入群

万水千山总是情,点个【在看】行不行

/今日留言主题/

随便说一两句吧~~


http://www.ppmy.cn/news/1043243.html

相关文章

esp32c3 micropython oled实时天气信息

目录 简介 效果展示 代码 main.py ssd1306.py font.py 实现思路 简介 合宙esp32c3 micropython框架,只支持128*64 I2C oled ssd1306驱动我优化过的,与其他的不一样,为避免出错,使用我的驱动 把下面两个py文件放入单片机内…

推荐一个绘图平台(可替代Visio)

不废话,简易记网址: draw.io 网站会重定向到:https://app.diagrams.net/

TPS_C++版本及功能支持备注

TPS_C版本及功能支持备注 相关参考链接C23:https://zh.cppreference.com/w/cpp/23 相关参考链接C20:https://zh.cppreference.com/w/cpp/20 相关参考链接C17:https://zh.cppreference.com/w/cpp/17 相关参考链接C14:https://zh.cp…

基于Three.js的WebXR渲染入门

1、Three.js 渲染管线快速概览 我不会花太多时间讨论 Three.JS 渲染管道的工作原理,因为它在互联网上有详细记录(例如,此链接)。 我将在下图中列出基础知识,以便更容易理解各个部分的去向。 2、WebXR 设备 API 入门 在我们深入了解 WebXR API 本身之前,您应该知道 WebX…

【leetcode】20.有效的括号

题目分析: 给定的字符串s可能为空串,空串返回false,不为空串时进行以下操作 遍历字符串,左括号 ( 、 [ 、 { 压栈,右括号与此时的栈顶元素对比匹配 1️⃣匹配,则栈顶元素出栈,继续遍历字符串 2️…

android平台的语音聊天助手源码

目录 1 android平台的语音聊天助手源码 1.1 Setting 1.1.1 getChildList 1.1.2 getGroupList 1.1.3 setListener android平台的语音聊天助手源码 Setting getCh

219、仿真-基于51单片机L298直流电机开始停止正反转加减速Proteus仿真设计(程序+Proteus仿真+配套资料等)

毕设帮助、开题指导、技术解答(有偿)见文未 目录 一、硬件设计 二、设计功能 三、Proteus仿真图 四、程序源码 资料包括: 需要完整的资料可以点击下面的名片加下我,找我要资源压缩包的百度网盘下载地址及提取码。 方案选择 单片机的选择 方案一&a…

2023 最新 小丫软件库app开源源码 PHP后端

上传了源码解压之后,在admin/public/config.php修改后台登录账号和密码 后台地址:域名或者ip/admin 然后自己修改配置即可 后端搭建完成,现在导入iapp源码 导入iapp源码之后,修改mian.iyu载入事件的对接api和url就可以打包了 sss …