说明:本blog基于python3, pandas 1.3.5版本
文章目录
前言
本文主要介绍如何对数据做预处理,包括 缺失值过滤、缺失值补全、数据转换(重复值删除,数据映射、数据替换)、简单运算自动对齐与函数处理、统计运算和排序,共5个部分。并附有代码实例。
【注:本文所有部分根据pandas中的基础数据结构进行分类讲解,Series 和 DataFrame】
一、对缺失值处理
1.1 缺失值过滤
使用dropna方法,
公式: DataFrame.dropna(axis = 0/1, how = “all”, thresh =按衡量标准 删除的最小Nan值个数, subset = [“目标列”])
代码如下
import pandas as pd
import numpy as np
a = pd.DataFrame([[1,2,np.nan],[np.nan,2,3], [np.nan, np.nan, np.nan], [3,5,7]])
print(a)
###过滤缺失值
###删除所有包含缺失值的行
a1 = a.dropna(axis = 0)
print(("删除所有包含Nan值的行 \n{}").format(a1))
###删除所有包含Nan值的列
a2 = a.dropna(axis = 1)
print(("删除所有包含Nan值的列 \n{}").format(a2))
##删除行元素全为Nan值的行
a3 = a.dropna(how = "all", axis = 0)
print(("删除行元素全为Nan值的行 \n{}").format(a3))
结果如下
0 1 2
0 1.0 2.0 NaN
1 NaN 2.0 3.0
2 NaN NaN NaN
3 3.0 5.0 7.0
删除所有包含Nan值的行
0 1 2
3 3.0 5.0 7.0
删除所有包含Nan值的列
Empty DataFrame
Columns: []
Index: [0, 1, 2, 3]
删除行元素全为Nan值的行
0 1 2
0 1.0 2.0 NaN
1 NaN 2.0 3.0
3 3.0 5.0 7.0
1.2 缺失值补全
DataFrame.fillna(字典形式的按列填充/常数值, method = “ffill”/“bfill”, axis = 0/1, inplace = True/False)
【注:axis = 0代表按列填充,axis = 1代表按行填充;这里的0,1与pandas其他方法的0,1不同!!!】
import pandas as pd
import numpy as np
a = pd.DataFrame([[1,2,np.nan],[np.nan,2,3], [np.nan, np.nan, np.nan], [3,5,7]])
print(a)
###按列后填充, 并返回“视图”