pandas 缺失值处理

  1. 数据

pandas 缺失值处理_第1张图片

Pandas使用这些函数处理缺失值:

  • isnull和notnull:检测是否是空值,可用于df和series
  • dropna:丢弃、删除缺失值
    • axis : 删除行还是列,{0 or ‘index’, 1 or ‘columns’}, default 0
    • how : 如果等于any则任何值为空都删除,如果等于all则所有值都为空才删除
    • inplace : 如果为True则修改当前df,否则返回新的df
  • fillna:填充空值
    • value:用于填充的值,可以是单个值,或者字典(key是列名,value是值)
    • method : 等于ffill使用前一个不为空的值填充forword fill;等于bfill使用后一个不为空的值填充backword fill
    • axis : 按行还是列填充,{0 or ‘index’, 1 or ‘columns’}
    • inplace : 如果为True则修改当前df,否则返回新的df
  1. 读取excel忽略前面的空行
import pandas as pd
import os
from pathlib import Path
import sys 
sys.stdout = open(sys.stdout.fileno(), 'w', encoding='utf8', closefd=False)
df = pd.read_excel(os.path.join(Path(__file__).parent,'student_excel.xlsx'),skiprows=2)
print(df)
  1. 检测空值
df.isnull()
df["分数"].isnull()

pandas 缺失值处理_第2张图片
3. 筛选分数没有缺失的行

df.loc[df["分数"].notnull(), :]
  1. 删除掉全是空值的列
df.dropna(axis='columns',how='all',inplace=True)
  1. 删除掉全是空值的行
df.dropna(axis='index',how='all',inplace=True)
  1. 将分数列为空的设置为0
df.fillna({"分数":0},inplace=True)
  1. 将姓名缺失的用前面非空数据填充
df.loc[:,"姓名"] = df['姓名'].fillna(method='ffill')

你可能感兴趣的:(Pandas,pandas)