pandas数据处理——消除空格

在数据预处理时,因为人工采集数据的过程,经常有可能把空值和空格混在一起,一般也注意不到在本来为空的单元格里加入了空格。这就给做数据处理的人带来了麻烦,因为空值和空格都是代表的无数据,而pandas中Series的方法notnull()会把有空格的数据也纳入进来。一般这种情况采用的做法是,先将空格用NaN值替换,再进行空值填充。

源数据形式如下:

再看一下数据的行数及数据格式:

可以看到,对于data["call_result2"]这一列数据是有缺失的,我们先用nan值将空格处理了,再进行空值处理。

# 针对空格处理,用nan替换
import numpy as np
data['call_result2']=data['call_result2'].replace(r'^\s*$',np.nan,regex=True)

用一个大值进行空值填充:

data[['call_result2']]=data[['call_result2']].fillna(-9999)

处理后的数据情况:

由于data["call_result2"]这一列都是数值,但它的数据类型显示是object,再转一下数据类型:

data[['call_result2']]=data[['call_result2']].astype("int64")

最后的数据格式:

 

### Pandas 字符串操作方法教程 Pandas 提供了一套强大的工具用于处理字符串数据,这些功能既可以直接利用 Python 的内置字符串方法,也可以通过正则表达式实现复杂的数据清洗和转换。以下是关于 Pandas 中字符串操作的核心知识点: #### 1. 基础概念 Pandas 使用 `.str` 访问器来执行基于 Series 或 DataFrame 列的字符串操作[^1]。这种方法允许用户轻松调用各种字符串方法并将其应用于整个序列。 #### 2. 常见字符串方法 许多常见的字符串操作可以通过 `Series.str.<method>` 来完成。例如: - **获取字符串长度**: 下面展示了如何计算一个 Series 中每个字符串的长度。 ```python import numpy as np import pandas as pd s = pd.Series(['C', 'Python ', 'java', 'go', np.nan, '1125 ', 'javascript']) lengths = s.str.len() print(lengths) ``` 输出结果为: ``` 0 1.0 1 7.0 2 4.0 3 2.0 4 NaN 5 5.0 6 10.0 dtype: float64 ``` - **去除空白字符**: 如果需要移除字符串两端的多余空格,可以使用 `.strip()` 方法。 ```python stripped_series = s.str.strip() print(stripped_series) ``` - **查找子字符串位置**: 可以使用 `.find()` 或 `.index()` 查找特定子字符串的位置。 ```python positions = s.str.find('a') print(positions) ``` #### 3. 正则表达式的应用 当面对更加复杂的匹配需求时,Pandas 支持正则表达式 (regex),能够灵活地提取、替换或分割字符串。例如: - **提取匹配部分**: 使用 `.extract()` 函数可以从字符串中抽取符合正则模式的部分。 ```python regex_pattern = r'(\d+)' extracted_numbers = s.str.extract(regex_pattern) print(extracted_numbers) ``` - **替换内容**: 若需将某些模式替换成其他值,则可借助 `.replace()` 实现。 ```python replaced_values = s.str.replace(r'\s+', '', regex=True) print(replaced_values) ``` #### 4. 性能优化与内存管理 由于 Pandas 底层依赖于 NumPy 数组结构,在处理大规模数据集时具备较高的效率[^3]。然而需要注意的是,尽管数值型字段易于统计其占用空间大小,但对于变长字符串而言情况会有所不同——因此建议合理规划存储方案以减少不必要的资源浪费。 综上所述,无论是简单的文本变换还是高级模式识别任务,Pandas 都提供了简洁高效的解决方案[^2][^4]。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值