Python中如何使用pandas进行数据补值

  1. "2018-10-24 16:35:00,201.6,201.6,201.6,201.6"
  2. "2018-10-24 16:36:00,None,None,None,None"
  3. "2018-10-24 16:37:00,201.6,201.6,201.6,201.6"
  4. "2018-10-24 16:38:00,201.6,201.6,201.6,201.6"
  5. "2018-10-24 16:39:00,201.6,201.6,201.6,201.6"
  6. "2018-10-24 16:40:00,201.45,201.45,201.45,201.45"
  7. "2018-10-24 16:41:00,201.5,201.5,201.5,201.5"
  8. "2018-10-24 16:42:00,201.5,201.5,201.5,201.5"
  9. "2018-10-24 16:43:00,201.5,201.5,201.5,201.5"
  10. "2018-10-24 16:44:00,None,None,None,None" 我的 redis 中 zset 数据是这样的,值是一个一个的字符串 我将这些字符串取出,并进行循环遍历, 使用","分割,并放到两层嵌套的列表中 来转换为 dataframe data = [ [2018-10-24 16:42:00,201.5,201.5,201.5,201.5], [2018-10-24 16:42:00,201.5,201.5,201.5,201.5], [2018-10-24 16:42:00,201.5,201.5,201.5,201.5], ["2018-10-24 16:44:00,None,None,None,None"],] 当我使用 df = pd.DataFrame(data, dtype="float") df.fillna(method="bfill",inplace=True) 但是尝试失败了,我认为可能是因为 None 是一个字符串而不是一个空对象,我要如何进行向前补植 感谢大家 指教

Python中如何使用pandas进行数据补值

3 回复

在pandas里补值,主要用fillna()方法,简单直接。

最基础的用法就是直接填充一个固定值:

import pandas as pd
import numpy as np

df = pd.DataFrame({'A': [1, np.nan, 3, np.nan],
                   'B': [5, np.nan, np.nan, 8]})

# 用0填充所有NaN
df_filled = df.fillna(0)
print(df_filled)

更常用的是用前后值来补:

# 用前面的值向下填充
df_ffill = df.fillna(method='ffill')
# 用后面的值向上填充
df_bfill = df.fillna(method='bfill')

对不同的列用不同的方法:

# A列用均值填充,B列用中位数填充
df['A'] = df['A'].fillna(df['A'].mean())
df['B'] = df['B'].fillna(df['B'].median())

用插值法更精细:

# 线性插值
df_interpolated = df.interpolate(method='linear')

用分组后的均值填充也很实用:

df['A'] = df.groupby('B')['A'].transform(lambda x: x.fillna(x.mean()))

总结:根据数据特点选合适的填充方法。


df.replace(“None”, np.nan, inplace=True)


df.fillna(method=“bfill”)


替换后在 fill

感谢 已解决

回到顶部