首页 > 编程笔记 > Python笔记 阅读:8

Python Pandas进行数据清洗(附带实例)

数据清洗是数据预处理的一部分,主要是对数据进行审查和校验,以确保其准确性、完整性、一致性和可靠性。

本节主要介绍数据清洗的概念、意义以及使用 Pandas 进行数据清洗的示例。

数据清洗的作用

数据清洗是机器学习和深度学习中的一个重要步骤,对模型的性能有着决定性的影响,如数据不规范或存在缺失等,可能会给建模带来问题,例如:
尽管深度学习模型,尤其是深度神经网络具有很强的特征学习能力,可以在一定程度上容忍数据的不完美,但这并不意味着可以完全忽略数据清洗的步骤。良好的数据预处理可以帮助模型更快地收敛,提高训练效率,同时也可以防止模型过拟合。

通常,数据清洗主要包括以下内容:
在实际操作中,数据清洗通常需要结合统计学知识和专业的数据处理工具来完成。对于简单数据可以使用 Excel 工具来完成,如果涉及的数据比较复杂,可以借助 Python 语言或 R 语言结合相关工具来完成,如 Python 中的 NumPy、Pandas 或 Scikit-learn 库等。

用Pandas进行数据清洗

Pandas 是一个用于数据分析的 Python 库,是 Python 中进行数据处理和分析的一个强大工具,它提供了快速、灵活且直观的数据结构,特别适合处理关系型和标记型数据。

以下是 Pandas 的几个重要特性:

Pandas Series数据结构

Series 是一种强大的一维数据结构,它不仅能够存储数据,还提供了丰富的方法和操作,使得数据分析变得更加高效和便捷。

Series 有以下特点:
以下是一个简单的 Series 示例:
import pandas as pd
# 创建一个包含整数的Series
s = pd.Series([1, 2, 3, 4, 5])
# 打印Series的内容
print(s)
输出结果如下:

0    1
1    2
2    3
3    4
4    5
dtype: int64

在这个例子中,我们首先导入了 Pandas 库,并创建了一个包含整数的 Series 对象。然后,打印了 Series 的内容,可以看到它以一维数组的形式展示数据。

除了从列表创建 Series 外,还可以通过其他方式创建 Series,例如字典或 NumPy 数组等。此外,Series 还支持各种操作,如算术运算、逻辑运算和比较运算等。

这只是 Series 的一个简单示例,实际上 Series 可以用于更复杂的数据处理和分析任务。通过学习更多的 Pandas 库的功能和方法,可以进一步探索 Series 的潜力,并在数据分析和机器学习领域取得更好的成果。

Pandas DataFrame数据结构

DataFrame 是 Pandas 库的核心数据结构,它类似于一个二维表格,可以存储多种类型的数据,并且具有很多方便进行数据处理的功能。

以下是 DataFrame 的一些关键特性:
对于初学者来说,理解和掌握 DataFrame 的基本概念和操作非常重要,因为这是进一步学习和使用 Pandas 库进行数据处理和分析的基础。

接下来通过示例来认识一下 DataFrame。一个常见的例子是使用 Pandas 库来处理和分析表格数据。下面是一个简单的示例:
import pandas as pd
# 创建一个包含姓名、年龄和城市的数据字典
data = {
    'Name': ['Alice', 'Bob', 'Charlie'],
    'Age': [25, 30, 35],
    'City': ['New York', 'London', 'Paris']
}

# 将数据字典转换为DataFrame
df = pd.DataFrame(data)
# 打印DataFrame的内容
print(df)
输出结果如下:
      Name        Age      City
0     Alice       25       New York
1     Bob         30       London
2     Charlie     35       Paris
在这个例子中,首先导入了 Pandas 库,并创建了一个包含姓名、年龄和城市的数据字典。然后,使用 pd.DataFrame() 函数将数据字典转换为 DataFrame 对象。最后,打印了 DataFrame 的内容,可以看到它以表格的形式展示数据。

代码中的 df = pd.DataFrame(data) 表示使用 Pandas 库创建一个名为 df 的 DataFrame 对象的语句:
通过将 data 传递给 pd.DataFrame() 函数,可以创建一个包含给定数据的 DataFrame 对象,并将其赋值给变量 df。这个 DataFrame 对象可以用于进行各种数据处理和分析操作,例如筛选、排序、统计等。

这只是 DataFrame 的一个简单示例,实际上 DataFrame 可以用于更复杂的数据处理和分析任务。通过学习更多的 Pandas 库的功能和方法,你可以进一步探索 DataFrame 的潜力,并在数据分析和机器学习领域取得更好的成果。

Pandas数据清洗示例

1) 读取数据

首先需要将数据加载到 Pandas DataFrame 中。可以使用 pd.read_csv() 函数从 CSV 文件中读取数据,或者使用 pd.read_excel() 函数从 Excel 文件中读取数据。

例如:
import pandas as pd
# 从CSV文件读取数据
data = pd.read_csv('data.csv')
# 从Excel文件读取数据
data = pd.read_excel('data.xlsx')

2) 查看数据

使用 head() 函数查看数据的前几行,以便了解数据的结构和内容。例如:
# 查看前5行数据
print(data.head())

3) 处理缺失值

Pandas 提供了多种方法来处理缺失值,如删除含有缺失值的行或列,或者使用填充方法(如平均值、中位数、众数或前后填充)来填补缺失值。
# 删除含有缺失值的行
data.dropna(inplace=True)
# 使用平均值填充缺失值
data.fillna(data.mean(), inplace=True)

4) 处理重复值

使用 duplicated() 函数检测重复的行,并使用 drop_duplicates() 函数删除重复的行。
# 检测重复行
duplicates = data.duplicated()
# 删除重复行
data.drop_duplicates(inplace=True)

5) 去除异常值

可以使用 Pandas 库中的条件筛选功能来去除数据中的异常值。

例如,假设有一个名为 data 的 DataFrame,其中包含需要去除异常值的数值列,可以使用以下代码去除超过 3 个标准差的异常值:
data = data[(np.abs(stats.zscore(data['column_to_clean'])) < 3)]

6) 纠正错误

可以使用 Pandas 库中的 replace() 函数来替换数据中的错误值。例如,假设有一个名为 data 的 DataFrame,其中包含错误的日期格式,可以使用以下代码将错误的日期格式替换为正确的格式:
data['date'] = pd.to_datetime(data['date'], format='%Y-%m-%d')

7) 数据类型转换

根据需要,可以使用 astype() 函数将数据转换为不同的数据类型。例如,将字符串类型的日期转换为日期类型:
# 将字符串类型的日期转换为日期类型
data['date'] = pd.to_datetime(data['date'])

8) 数据筛选和排序

使用条件筛选和排序功能对数据进行处理。例如,筛选出年龄大于或等于 18 岁的记录,并按年龄升序排列。
# 筛选年龄大于或等于18岁的记录
filtered_data = data[data['age'] >= 18]
# 按年龄升序排列
sorted_data = filtered_data.sort_values(by='age', ascending=True)

9) 数据合并和连接

在 Python 中,Pandas 是一个强大的数据处理库,提供了丰富的功能来处理和分析数据,它可以使用 merge、join、concat 等进行数据合并和拼接:
下面介绍使用 merge() 函数将多个数据集按照指定的键进行合并。例如,将两个数据集按照客户 ID 进行连接:
# 假设有两个数据集:data1和data2
merged_data = pd.merge(data1, data2, on='customer_id')
以上我们只是介绍了 Pandas 数据清洗的一些基本操作,实际上 Pandas 提供了更多的功能和方法,可以根据具体需求进行更复杂的数据清洗任务。

相关文章