鱼C论坛

 找回密码
 立即注册
查看: 2573|回复: 0

[技术交流] pandas的数据清洗——填充NaN数据

[复制链接]
发表于 2020-12-15 15:06:24 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
pandas的数据清洗——填充NaN数据
1、对于DataFrame里的数据NaN可以使用0来填充,使用fillna函数。
  1. import pandas as pd
  2. import numpy as np
  3. val = np.arange(10, 38).reshape(7, 4)
  4. col = list("abcd")
  5. idx = "cake make fake sake wake lake take".split()
  6. df = pd.DataFrame(val, columns = col, index = idx)
  7. df["e"] = np.nan
  8. df.at["make", "e"] = 100
  9. df["f"] = np.nan
  10. df.loc["gake"] = np.nan
  11. print (df)
  12. df1 = df.fillna(0)
  13. print (df1)
复制代码


2、前向或后向填充NaN数据的意思是用NaN前一行(方向是往后的)或者后一行的数据填充NaN。
还是使用fillna函数,只不过形参里设定method='ffill'或method='bfill'。
  1. print ("**1****************************\n", df)
  2. df2 = df["e"].fillna(method = 'ffill')
  3. print ("**2****************************\n", df2)
  4. df2["e"].fillna(method = 'bfill',inplace=True)
  5. print ("**3****************************\n", df2)
  6. df2.loc["gake"].fillna(method = 'bfill',inplace=True, axis = 0)
  7. print ("**4****************************\n", df2)
  8. df2.loc["gake"].fillna(method = 'bfill',inplace=True, axis = 0)
  9. print ("**5****************************\n", df2)
  10. df2.fillna(method = 'ffill',inplace=True, axis = 1)
  11. print ("**6****************************\n", df2)
复制代码


3、可以给出一个Series数据(label和DataFrame的label有相同的)去填充DataFrame对应行(label)的数据。
  1. fill = pd.Series([123, 321, 213],index =["cake", "wake", "gake"] )
  2. df3 = df["e"].fillna(fill)
  3. df3["f"].fillna(fill,inplace=True)
  4. print (df3)
复制代码


4、利用插值函数interpolate()对列向的数据进行填值。实现插值填充数据,
那么要求这列上必须得有一些数据才可以,至少2个,会对起点和终点间的NaN进行插值。
  1. df3["e"].interpolate(inplace=True)
  2. df3["f"].interpolate(inplace=True)
  3. print (df3)
复制代码

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-30 10:01

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表