文章目录
- 1. 方法简介
- 2. 案例
- 3. 相关文章:
-
- (1) pandas分组聚合|agg|transform|apply
- (2) 缺省值判断 pd.isnull, pd.isna, pd.notna, pd.notnull, np.isnan, math.isnan 区别
- (3) pandas中DataFrame字典互转
- (4) pandas.concat实现DataFrame竖着拼接、横着拼接
- (5) pandas|找出某列最大值的所在的行
- (6) DataFrame——指定位置增加删除一行一列
- (7) AttributeError: module ‘pandas‘ has no attribute ‘isna‘
- (8) pandas--Series.str--字符串处理
- (9) list、ndarry、Series、DataFrame的创建、索引和选取
- (10) Series和DataFrame复合索引的创建和取值
- (11) pd.notnull
- (12) Pandas|DataFrame| 处理DataFrame中的inf值
- (13) 由字典dictionary或列表list创建dataframe
- (14) pandas|DataFrame排序及分组排序
- (15) Pandas|DataFrame| DataFrame中的nan值处理
1. 方法简介
1.1 DataFrame.dropna()
DataFrame.dropna()方法的作用:是删除含用空值或缺失值得行或列。
语法为:dropna(axis=0,how=‘any’,thresh=None,subset=None,inplace=False)
参数:
- axis:确定过滤的行或列,取值可以为
(1) 0或index:删除包含缺失值的行,默认为0。
(2) 1或columns:删除包含缺失值的列。 - how:确定过滤的标准,取值可以为:
(1)any:默认值,如果存在NaN值,就删除该行或该列。//有一个就删除行或列
(2)all:如果所有值都是NaN值,就删除该行或该列。 //全部都是才删除行或列 - thresh:表示有效数据量的最小要求,比如thresh=3,要求该行或该列至少有三个不是NaN值时将其保留。
- subset:表示在特定的字集中寻找NaN值
- inplace:表示是否在原数据上操作,如果设为True,则表示直接修改原数据;如果设为False,则表示修改原数据的副本,返回新数据
1.2 .DataFrame.fillna()
语法为:fillna(value=None, method=None, axis=None, inplace=False, limit=None, downcast=None, **kwargs)
参数:
- value:用于填充的空值的值。
- method: {‘backfill’, ‘bfill’, ‘pad’, ‘ffill’, None}, default None。定义了填充空值的方法, pad / ffill表示用前面行/列的值,填充当前行/列的空值, backfill / bfill表示用后面行/列的值,填充当前行/列的空值。
- axis:轴。0或’index’,表示按行删除;1或’columns’,表示按列删除。
- inplace:是否原地替换。布尔值,默认为False。如果为True,则在原DataFrame上进行操作,返回值为None。
- limit:int, default None。如果method被指定,对于连续的空值,这段连续区域,最多填充前 limit 个空值(如果存在多段连续区域,每段最多填充前 limit 个空值)。如果method未被指定, 在该axis下,最多填充前 limit 个空值(不论空值连续区间是否间断)
- downcast:dict, default is None,字典中的项为,为类型向下转换规则。或者为字符串“infer”,此时会在合适的等价类型之间进行向下转换,比如float64 to int64 if possible。
2. 案例
import pandas as pd
import numpy as np
df = pd.DataFrame(np.arange(32).reshape(8, 4), columns=list("abcd"))
df.loc[1, 'a'] = 2
df.loc[1, 'c'] = 2.0
df.loc[6, 'c'] = np.nan
df.loc[3, 'c'] = 10
df.loc[3, ['c', 'd']] = np.nan
df["year"] = '2023'
df["date"] = ['08-25','08-26','08-27','08-28','08-29','08-30','08-31','09-01']
# 合并数据
df["ydate"] =df["year"].map(str) +"-"+ df["date"].map(str)
df["高温"] = ['15°', '16°', '20°', '19°', '20°', '22°', '24°', '23°']
df["低温"] = ['10°', '11°', '18°', '17°', '10°', '18°', '20°', '17°']
df["空气质量"] = ['优', '良