【pandas中fillna,interpolate和dropna函数及其参数】

一、处理缺失值的三大函数

1. fillna 函数

fillna 函数用于填充缺失值,可以用一个具体值或者方法来填充。

参数说明:

  • value:用于填充缺失值的标量值、字典或Series。
  • method:填充方法,默认是None,可以是以下两个值:
    • ffill(前向填充):用前一个非缺失值填充。
    • bfill(后向填充):用后一个非缺失值填充。
  • axis:沿哪个轴填充缺失值,默认是0(行)。
  • inplace:是否在原地修改数据,默认是False
  • limit:最大填充次数。

示例代码:

import pandas as pd

data = {'A': [1, 2, None, 4], 'B': [None, 2, 3, 4]}
df = pd.DataFrame(data)
print("原始数据:\n", df)

# 使用具体值填充
df_filled = df.fillna(0)
print("填充后的数据:\n", df_filled)

# 使用前向填充
df_ffill = df.fillna(method='ffill')
print("前向填充后的数据:\n", df_ffill)

# 使用后向填充
df_bfill = df.fillna(method='bfill')
print("后向填充后的数据:\n", df_bfill)

2. interpolate 函数

interpolate 函数用于插值缺失值,根据数据的趋势填补缺失值。

参数说明:

  • method:插值方法,默认是linear线性插值,可以选择其他方法如polynomialspline等。
  • axis:沿哪个轴插值,默认是0(行)。
  • limit:最多插值的缺失值数量。
  • inplace:是否在原地修改数据,默认是False
  • limit_direction:插值方向,可以是forwardbackward或者both
  • order:如果methodpolynomial,需要指定多项式的阶数。

示例代码:

import pandas as pd
import numpy as np

data = {'A': [1, 2, np.nan, 4, 5, np.nan, 7]}
df = pd.DataFrame(data)
print("原始数据:\n", df)

# 使用线性插值
df_interpolated = df.interpolate()
print("线性插值后的数据:\n", df_interpolated)

# 使用多项式插值(2阶)
df_poly_interpolated = df.interpolate(method='polynomial', order=2)
print("多项式插值后的数据:\n", df_poly_interpolated)

3. dropna 函数

dropna 函数用于删除缺失值,可以删除包含NaN的行或列。

参数说明:

  • axis:删除哪个轴上的缺失值,默认是0(行)。
  • how:删除方式,any表示只要有缺失值就删除,all表示全部是缺失值才删除。
  • thresh:非缺失值的数量至少达到这个值,才不删除。
  • subset:指定查看缺失值的列或行。
  • inplace:是否在原地修改数据,默认是False

示例代码:

import pandas as pd

data = {'A': [1, None, 3, None], 'B': [None, 2, 3, 4]}
df = pd.DataFrame(data)
print("原始数据:\n", df)

# 删除包含NaN的行
df_dropped = df.dropna()
print("删除缺失值后的数据(行):\n", df_dropped)

# 删除包含NaN的列
df_dropped_col = df.dropna(axis=1)
print("删除缺失值后的数据(列):\n", df_dropped_col)

# 删除全部是NaN的行
df_dropped_all = df.dropna(how='all')
print("删除全部是NaN的行后的数据:\n", df_dropped_all)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wdwc2

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值