fillna(value) 用指定的值填充缺失值,举几个例子
时间: 2025-06-25 12:26:04 浏览: 14
<think>嗯,用户想了解如何使用pandas中的fillna(value)方法来填充缺失值,并希望举几个例子。首先,我需要确认自己对这个方法的理解是否正确。fillna()确实用于处理DataFrame或Series中的NaN值,可以用特定的值替换这些缺失值。接下来,用户需要例子,所以我应该提供不同场景下的应用示例,比如用固定值填充、不同列用不同值填充,以及使用字典或前向填充等方法。
首先,我应该从基础例子开始,比如创建一个包含NaN的DataFrame,然后用单一值填充所有缺失值。这能展示fillna的基本用法。然后,可能需要展示如何为不同的列指定不同的填充值,这时候可以用字典结构传入fillna的参数。例如,age列用平均值填充,而salary列用中位数或者0填充。
另外,用户可能还想知道如何处理时间序列数据中的缺失值,这时候前向填充(method='ffill')或后向填充(method='bfill')可能会有用。虽然用户的问题是关于fillna(value),但或许可以提一下这些方法作为补充,不过需要确保主要例子围绕value参数展开。
然后,需要注意是否需要解释为什么某些情况下要使用特定值填充,比如用平均值保持数据的分布,或者用0来代表缺失的数值。这可能帮助用户理解在不同场景下如何选择合适的填充策略。
接下来,考虑用户可能的后续问题,比如如何处理不同数据类型的缺失值,或者fillna的其他参数如limit、inplace等。不过根据用户的要求,这次只需要关注value参数的应用。
最后,我需要确保代码示例正确无误,并且能够覆盖不同的用例。可能需要检查是否有拼写错误,比如正确的列名,函数调用是否正确。例如,在创建DataFrame时,确保正确使用字典结构,列名和数据的对应关系正确。填充后的结果应该能明显展示出NaN被替换的情况。
总结一下,回答的结构应该是先解释fillna(value)的作用,然后给出几个不同场景的例子,每个例子包括代码和说明。最后提出相关问题,引导用户进一步学习其他处理缺失值的方法或相关函数。</think><<
`fillna(value)` 是 pandas 中用于填充缺失值(NaN)的核心方法,通过指定固定值或灵活规则替换空值。以下是具体用法和示例:
---
### **1. 用固定值填充所有缺失值**
```python
import pandas as pd
import numpy as np
# 创建包含 NaN 的 DataFrame
data = {'A': [1, np.nan, 3], 'B': [np.nan, 5, 6]}
df = pd.DataFrame(data)
# 用 0 填充所有 NaN
df_filled = df.fillna(0)
print(df_filled)
```
**输出**:
```
A B
0 1.0 0.0
1 0.0 5.0
2 3.0 6.0
```
---
### **2. 为不同列指定不同填充值**
```python
# 列 A 用 100 填充,列 B 用 -1 填充
df_filled = df.fillna({'A': 100, 'B': -1})
print(df_filled)
```
**输出**:
```
A B
0 1.0 -1.0
1 100.0 5.0
2 3.0 6.0
```
---
### **3. 用统计值填充(如均值、中位数)**
```python
# 用列 A 的均值填充其 NaN
mean_A = df['A'].mean()
df_filled = df.fillna({'A': mean_A}) # 均值填充列 A
print(df_filled)
```
**输出**:
```
A B
0 1.0 NaN
1 2.0 5.0 # 列 A 的均值 (1+3)/2 = 2.0
2 3.0 6.0
```
---
### **4. 用前向填充(ffill)或后向填充(bfill)**
```python
# 前向填充(用前一行的值填充)
df_filled = df.fillna(method='ffill')
print(df_filled)
```
**输出**:
```
A B
0 1.0 NaN # 第一行 B 列无前值,仍为 NaN
1 1.0 5.0 # A 列继承上一行的 1.0
2 3.0 6.0
```
---
### **5. 仅填充连续缺失值的第一个**
```python
# 用 0 填充,但最多连续填充 1 次
df_filled = df.fillna(0, limit=1)
print(df_filled)
```
**输出**:
```
A B
0 1.0 0.0 # 填充第一个 NaN
1 0.0 5.0 # 填充 A 列的 NaN
2 3.0 6.0
```
---
### **原理解释**
- `fillna(value)` 直接修改 DataFrame/Series 中的 NaN,不改变原始对象(除非设置 `inplace=True`)。
- `value` 可以是标量、字典(按列填充)、Series(按索引对齐)或函数(动态计算填充值)。
---
阅读全文
相关推荐


















