python日常数据清洗问题

本文分享了作者在数据清洗过程中遇到的挑战,包括日期清洗、数据分列合并、时间段处理(动态时间差与固定时间段统计)以及Excel数据表合并问题。文章详细介绍了使用Python的pandas库解决这些问题的方法,例如利用replace、explode函数以及时间差计算等技巧,并提供了部分代码示例。

这个博客是记录一下平时工作中遇到的一些比较常见但不太好处理的数据清洗问题,博主还是个刚入职场的小白,目前遇到的场景问题还比较少,但我会一直更新的~

1. 清洗日期

在工作中经常会遇到需要清洗日期时间数据
在这里插入图片描述
我的想法是把数据拆解开在用replace进行替换,然后在粘贴在一起

df = pd.read_excel('test.xlsx')
df['日期'] = df['日期'].astype(str)
date['year'] = df['日期'].str[0:4]
date['mm'] = df['日期'].str[4:6].replace('tt','00').replace('','00')
date['dd'] = df['日期'].str[6:8].replace('tt','00').replace('','00')
df['日期'] = date['year']+date['mm']+date['dd']

这时日期这列数据会清洗为如下
在这里插入图片描述
可以根据需求替换修改内容,不知道有没有大佬有更方便的方法,欢迎交流~

2. 数据分列合并

想把下图中的数据展开并在一列中展示
在这里插入图片描述
这里我想到的是先把这列数据拆分开在用explode函数进行展开

df['阿斯顿'] = df['阿斯顿'].str.split(";") 
data = df.explode('阿斯顿').reset_index(drop = True)
data.drop_duplicates(inplace = True) 

展开结果
在这里插入图片描述

3. 时间段数据处理

3.1 某个时间差内字段出现频次大于2(动态时间)

在这里插入图片描述
当前需求为:查找30分钟内id出现2次以上且area不为bb的数据
目前想法为:首先以ID为分组对time进行排序,新增一列根据ID分组对time下移一位,效果如下

### 关于Python数据清洗的专项练习及教程 #### 数据清洗的重要性 数据清洗数据分析和机器学习项目的重要组成部分。通过清理不完整、错误或冗余的数据,可以提高模型性能并获得更可靠的结论。 --- #### 推荐的学习资源与实践方法 1. **官方文档** Pandas 官方文档提供了详尽的功能说明以及实际案例,适合初学者深入理解数据操作的基础功能[^3]。 2. **在线平台课程** 平台如 Coursera 和 edX 提供专门针对数据处理的课程,其中涵盖了大量基于真实世界场景的任务,帮助学员掌握数据清洗技能[^1]。 3. **书籍推荐** - 《Python for Data Analysis》 by Wes McKinney 是一本经典教材,书中详细讲解了利用 Pandas 进行高效数据管理的方法和技术。 - 另外,《Data Wrangling with Python》也是一本专注于解决日常数据整理难题的好书[^2]。 4. **实战演练** 使用公开可用的数据集来完成特定目标导向型的小项目是最好的方式之一。例如 Kaggle 上有许多免费提供给公众使用的高质量数据集合,非常适合用来测试自己的技术能力[^1]。 5. **具体实例解析** 以下是几个常见的数据清洗任务及其对应的解决方案: - **删除重复项**: ```python import pandas as pd df = pd.DataFrame({ 'A': ['foo', 'bar', 'foo', 'bar'], 'B': [1, 2, 3, 4], }) print(df.duplicated()) print(df.drop_duplicates()) ``` - **缺失值处理**: ```python df['age'] = df['age'].fillna(df['age'].mean()) # 替换数值列中的NA为均值 df.fillna(method='ffill') # 前向填充法填补空缺值 ``` - **字符串预处理**: 当遇到包含多余空白字符或者大小写混杂的情况时,可采用以下手段统一格式化输入字段: ```python df['name'] = df['name'].str.strip().str.title() ``` - **日期时间转换**: 对于存储形式各异的时间戳序列,则需调用 `pd.to_datetime()` 函数将其标准化表示出来以便后续计算需求。 ```python df['purchase_date'] = pd.to_datetime(df['purchase_date'], format='%Y-%m-%d') ``` 以上每一步骤都附带相应代码片段便于理解和模仿执行。 --- #### 总结 综上所述,无论是理论知识还是动手实操方面都有丰富的资料可供参考学习;同时鼓励大家多尝试不同类型的挑战题目从而不断提升自我水平!
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值