当进行数据清洗和处理时,缺失值处理是一个非常重要的步骤。缺失值是指在数据集中某些位置缺少数值或信息。处理缺失值的目标是确保数据的完整性和准确性,以便能够进行后续的分析和建模。
当某个特定数据点未能被正确记录或提供时,就会产生缺失值。这可能是由于各种原因导致的,例如数据采集过程中的错误、数据提供者没有提供特定的信息,或者数据损坏等。
缺失值的表示方式有多种,最常见的是使用“NaN”(Not a Number)来表示。在 pandas 中,NaN 通常用于表示缺失值,以便于对其进行处理和识别。
缺失值对数据分析和建模的影响是不可忽视的。以下是缺失值的一些重要影响和重要性:
.isnull() 方法返回一个布尔值的 DataFrame,其中缺失值位置为 True,而非缺失值位置为 False。.notnull() 方法则返回与 .isnull() 相反的结果,即非缺失值位置为 True,缺失值位置为 False。假设我们有一个名为 df 的数据框,其中包含一个列名为 Age 的特征,用于表示人的年龄。我们将使用 .isnull() 方法来检测缺失值。
- import pandas as pd
-
- data = {'Name': ['John', 'Mike', 'Sarah', 'Amy'],
- 'Age': [25, None, 35, 42],
- 'City': ['New York', 'London', None, 'Paris']}
-
- df = pd.DataFrame(data)
-
- print(df['Age'].isnull())
输出结果:
- 0 False
- 1 True
- 2 False
- 3 False
- Name: Age, dtype: bool
在上述案例中,df['Age'].isnull() 返回一个布尔值的 Series,其中第二个位置(索引 1)为 True,表示该位置存在缺失值。
.info() 方法用于获取有关数据框中每个列的信息,包括列名、非缺失值数量和数据类型等。
通过调用 .info() 方法,我们可以快速查看数据框中是否存在缺失值,并获取其他有关数据的基本信息。
- import pandas as pd
-
- data = {'Name': ['John', 'Mike', 'Sarah', 'Amy'],
- 'Age': [25, None, 35, 42],
- 'City': ['New York', 'London', None, 'Paris']}
-
- df = pd.DataFrame(data)
-
- print(df.info())
输出结果:
- <class 'pandas.core.frame.DataFrame'>
- RangeIndex: 4 entries, 0 to 3
- Data columns (total 3 columns):
- # Column Non-Null Count Dtype
- --- ------ -------------- -----
- 0 Name 4 non-null object
- 1 Age 3 non-null float64
- 2 City 3 non-null object
- dtypes: float64(1), object(2)
- memory usage: 224.0+ bytes
- None
在上述案例中,.info() 方法返回了数据框的详细信息,包括每列的名称、非缺失值数量(Non-Null Count)和数据类型(Dtype)。根据输出结果,我们可以观察到 Age 列中有一个缺失值。
.describe() 方法用于生成关于数据的统计摘要,包括计数、均值、标准差、最小值、最大值等。通过调用 .describe() 方法,我们可以快速了解数据的分布情况,并检测是否存在缺失值。
- import pandas as pd
-
- data = {'Name': ['John', 'Mike', 'Sarah', 'Amy'],
- 'Age': [25, None, 35, 42],
- 'City': ['New York', 'London', None, 'Paris']}
-
- df = pd.DataFrame(data)
-
- print(df['Age'].describe())
输出结果:
- count 3.000000
- mean 34.000000
- std 8.366601
- min 25.000000
- 25% 30.000000
- 50% 35.000000
- 75% 38.500000
- max 42.000000
- Name: Age, dtype: float64
在上述案例中,.describe() 方法返回了针对 Age 列的统计摘要信息,包括缺失值数量(count)、平均值(mean)、标
....(后面再讲,现在说大家理解不了)
A..dropna().dropna() 方法是 pandas 中用于删除缺失值的方法。
它将从数据框中删除包含缺失值的行或列,从而使得分析和建模的数据集更加干净和准确。
.dropna() 方法的使用: .dropna() 方法可以应用于 pandas 的数据框或序列(Series)对象。默认情况下,它将删除包含任何缺失值的行。我们可以通过设置不同的参数来实现不同的删除方式。下面是一些常用的 .dropna() 方法的参数和用法:
axis:设置为 0 表示对行进行操作(删除包含缺失值的整行),设置为 1 表示对列进行操作(删除包含缺失值的整列)。how:指定在删除时使用的条件。可选的值包括 'any'(默认值,删除包含任何缺失值的行或列)和 'all'(只删除全为缺失值的行或列)。subset:指定要考虑的特定列或行的标签列表。展示如何使用 .dropna() 方法删除包含缺失值的行:
- import pandas as pd
-
- data = {'Name': ['John', 'Mike', 'Sarah', 'Amy'],
- 'Age': [25, None, 35, 42],
- 'City': ['New York', 'London', None, 'Paris']}
-
- df = pd.DataFrame(data)
-
- # 删除包含缺失值的行
- clean_df = df.dropna()
-
- # 打印处理后的数据框
- print(clean_df)
输出结果:
- Name Age City
- 0 John 25.0 New York
在上述示例中,我们首先创建了一个包含缺失值的数据框 df。然后,我们使用 .dropna() 方法删除了包含缺失值的行,得到了一个不包含缺失值的新数据框 clean_df。
.dropna() 方法时,应该注意设置适当的参数,以确保删除的行或列符合分析的要求。预告下一篇2--内容提要:填充缺失值/处理特定类型的缺失值/缺失值处理的注意事项和技巧/实例和案例分析