将随机挑选的5处学⽣成绩设置为np.nan,然后⽤⾮nan的学⽣成绩四舍五⼊之后的平均 分mean填充这5处nan,能否尝试⽤pandas的fillna函数来完成填充?
时间: 2024-10-25 10:05:27 浏览: 9
Python Numpy:找到list中的np.nan值方法
5星 · 资源好评率100%
当然可以,你可以使用Pandas库中的`fillna`函数来完成这个任务。首先,假设你有一个包含学生成绩的Pandas DataFrame,例如`df['scores']`,步骤如下:
1. 首先,你需要随机选取5个位置(行)将成绩设为`np.nan`。这可以通过`random.choice`配合条件判断来实现:
```python
import pandas as pd
import numpy as np
# 假设df是一个DataFrame,scores列是成绩
nan_positions = np.random.choice(df.shape[0], 5, replace=False) # 选取5个随机位置
df.loc[nan_positions, 'scores'] = np.nan
```
2. 接下来,你可以使用`fillna`函数来填充NaN值。这里我们先计算非NaN成绩的四舍五入后的平均分,然后用这个平均值填充之前设定的NaN值:
```python
# 计算非NaN成绩的平均值(四舍五入)
mean_scores = round(df['scores'].dropna().mean(), 2)
# 使用fillna替换NaN值
df['scores'] = df['scores'].fillna(mean_scores)
```
以上代码片段完成了从随机抽取的5个位置用四舍五入后的平均分填充`np.nan`的过程。注意`round`函数的第二个参数指定了保留的小数位数。
阅读全文