Pandas缺失值处理

目录

1、丢失数据

2、缺失值处理

3、重复值处理

4、字符串函数

[4.1 向量化字符串操作简介](#4.1 向量化字符串操作简介)

[4.2 str方法简介](#4.2 str方法简介)


1、丢失数据

数据丢失(缺失)在显示生活中是一个常见的问题,假设有一个产品的在线调查,很多时候,人们不会分享与他们有关的所有信息,有人会分析使用产品的时间、经验,但不是他们的个人信息,因此,以某种方式或其他方式,总会有一部分数据总是丢失,这是非常常见的现象

**检查缺失值**

| 方法 | 说明 |

| --------- | ---------------------- |

| isnull() | 是否有缺失值 |

| notnull() | 数据不是缺失值返回True |

  • 在进行数据计算时, 缺失值NaN视为0或不存在

```python

df = pd.DataFrame({'d1':1, 2, 3, 4,

'd2':4, np.nan, 6, 11,

'd3':7, 8, 9, np.nan,

'd4':np.nan, np.nan, np.nan, np.nan

})

print(df)

print(df'd2'.sum())

print(df'd2'.mean()) # 平均值计算不包含

```

```python

d1 d2 d3 d4

0 1 4.0 7.0 NaN

1 3 NaN 8.0 NaN

2 9 6.0 9.0 NaN

3 1 11.0 NaN NaN

21.0

7.0

```

- 如果数据全部是NaN, 那么结果为0/NaN

```

print(df'd4'.sum())

print(df'd4'.mean())

```

```

0.0

nan

```

2、缺失值处理

**过滤缺失值**

方法:dropna()函数

  • 默认情况下,axis=0,即在行上应用,意味着如果行内有任何值是NA,那么整行被排除

```python

dropna(axis=0, how='any')

```

| 参数 | 说明 |

| ---- | ------------------------------------------------------------ |

| axis | 控制行列删除,默认0为行 1为列 |

| how | 控制删除的个数, all->只要有缺失值就过滤 any->只过滤一整行为缺失值的行 |

**补全缺失值**

方法:fillna()函数

  • 使用数据补全替换

```python

fillna(method='pad',axis=0)

```

| method参数值 | 说明 |

| -------------- | ------------------ |

| pad/fill | 根据前面的数据填充 |

| bfill/backfill | 根据后面的数据填充 |

  • **replace()函数-替换**

很多时候,必须用一些具体的值取代一个通用的值,可以通过应用替换实现这一点

```python

使用replace替换

print(df.replace({np.nan: 10}))

```

3、重复值处理

当我们使用pandas处理数据的时候,经常会遇到数据重复的问题,如何找出重复数据进而分析重复原因,或者如何直接删除重复的数据是一个关键的步骤,pandas提供了很方便的方法:duplicated()和drop_duplicates()

  • **duplicated**()

```

DataFrame.duplicated(subset=None, keep='first')

```

subset:默认为None,指定列名判断重复值

  • keep:默认为'first',如何标记重复标签

  • first:将除第一次出现以外的重复数据标记为True

  • last:将除最后一次出现以外的重复数据标记为True

  • False:将所有重复的项都标记为True(不管是不是第一次出现)

  • **drop_duplicates()**

```

DataFrame.drop_duplicates(subset=None, keep='first', inplace=False)

```

subset:与duplicated()中相同

keep:与duplicated()中相同

inplace:是是否修改在原数据上

4、字符串函数

  • 当我们遇到一个超级大的 DataFrame,里面有一列类型为字符串,要将每一行的字符串都用同一方式进行处理, 一般会想到遍历整合 DataFrame。

4.1 向量化字符串操作简介

  • 量化操作简化了纯数值的数组操作语法,我们不需要再担心数组的长度或维度,只需要把中心放在操作上面。

  • 而对字符串的向量化需要工具包的支持,如 Numpy 就没办法直接对字符串进行向量化操作,只能通过繁琐的循环来实现。 Pandas 则可以很好的处理这类问题

4.2 str方法简介

  • Python 会处理字符串起来会很容易,作为工具包的 Pandas 同样可以简单快速的处理字符串,几乎把 Python 内置的字符串方法都给复制过来了,这种方法就是 Pandas 内置的 str 方法。

  • 通俗来说就可以将 series 和 index 对象中包含字符串的部分简单看作单个字符串处理,达到批量简单快速处理的目的,str 方法有如下函数可供我们使用。

| 函数 | 含义 |

| ------------------- | ------------------------------------------------------------ |

| lower() | 将的字符串转换为小写 |

| upper() | 将的字符串转换为大写 |

| len() | 得出字符串的长度 |

| strip() | 去除字符串两边的空格(包含换行符) |

| split() | 用指定的分割符分割字符串 |

| cat(sep="") | 用给定的分隔符连接字符串元素 |

| contains(pattern) | 如果子字符串包含在元素中,则为每个元素返回一个布尔值 True,否则为 False |

| replace(a,b) | 将值 a 替换为值 b |

| count(pattern) | 返回每个字符串元素出现的次数 |

| startswith(pattern) | 如果 Series 中的元素以指定的字符串开头,则返回 True |

| endswith(pattern) | 如果 Series 中的元素以指定的字符串结尾,则返回 True |

| findall(pattern) | 以列表的形式返出现的字符串 |

| find(pattern) | 返回字符串第一次出现的索引位置 |

相关推荐
evans在进步2 分钟前
LeetCode 394:字符串解码——Java 单栈模拟与嵌套解析详解
java·python·leetcode
淼澄研学14 分钟前
Python结合大模型挖掘搜题长尾关键词实操指南
开发语言·python
恣逍信点38 分钟前
《凌微经》静态自悖——变化之自因
人工智能·科技·算法·机器学习·业界资讯·拓扑学·哲学
中科高级技工学校2 小时前
乌鲁木齐美术艺考技校实践分享
人工智能·python
CodeBlog-star2 小时前
LLM能力与边界:多模态、幻觉、上下文窗口及开源模型对比
人工智能·python·开源·llm
COOLMO研究AI2 小时前
Python 如何实现 AI API 的动态路由与多通道负载均衡:多账号与多供应商的高可用调度
人工智能·python·负载均衡
一次旅行2 小时前
AI前沿技术日报|2026-08-15|GLM-5.3、Qwen3.8开源、英伟达CPO交换机量产、SpaceX完成Cursor收购
人工智能·机器学习·开源
菜冻鱼3 小时前
Python-sklearn-降维
开发语言·人工智能·python·机器学习·支持向量机·sklearn
OptimizationMaster3 小时前
Python自动重启中国移动光猫(ZXHN G7611V2)
python·自动化工具·重启中国移动光猫
小马过河R3 小时前
不只是又一个 Agent 框架:DeepSeek Harness 如何重新定义“可组合”
人工智能·机器学习·系统架构·agent·ai编程·harness