1. 数据转换
数据转换是将原始数据从一种格式或尺度转换为另一种格式或尺度的过程。常见的数据转换包括数值型和字符型之间的转换、日期和时间格式的转换以及数据类型的转换。
数值型和字符型之间的转换可以使用内置的函数来完成。例如,使用 `int()` 函数将字符串转换为整数,使用 `float()` 函数将字符串转换为浮点数。
string_num = "123" num = int(string_num) print(num, type(num)) string_float = "3.14" float_num = float(string_float) print(float_num, type(float_num))
日期和时间格式的转换可以使用 `datetime` 模块来处理。例如,将字符串格式的日期转换为日期对象。
import datetime date_string = "2023-07-21" date = datetime.datetime.strptime(date_string, "%Y-%m-%d") print(date, type(date))
数据类型的转换可以使用 `astype()` 方法来实现。例如,将整数类型转换为浮点数类型。
data = [1, 2, 3] data = data.astype(float) print(data, type(data))
2. 归一化
归一化是将数据映射到一个特定的范围内,通常是 [0, 1] 或者 [-1, 1] 之间,使得不同量级的数据可以在同一尺度下进行比较和分析。常见的归一化方法包括最小-最大归一化、Z-score 归一化和十进制归一化。
最小-最大归一化将数据的每个元素都映射到 [0, 1] 之间,通过计算每个元素相对于最小值和最大值的比例来实现。
import numpy as np data = np.array([10, 20, 30, 40, 50]) normalized_data = (data - np.min(data)) / (np.max(data) - np.min(data)) print(normalized_data)
Z-score 归一化将数据的每个元素都映射到平均值为 0,标准差为 1 的正态分布中。
data = np.array([10, 20, 30, 40, 50]) mean = np.mean(data) std_dev = np.std(data) normalized_data = (data - mean) / std_dev print(normalized_data)
十进制归一化将数据的每个元素都映射到 [0, 1] 之间,通过将每个元素除以 10 的幂来实现。
data = np.array([100, 200, 300, 400, 500]) normalized_data = data / 100 print(normalized_data)
在实际应用中,选择合适的归一化方法取决于数据的分布和特点。最小-最大归一化适用于数据具有明显的最小值和最大值的情况。Z-score 归一化适用于数据分布接近正态分布的情况。十进制归一化适用于数据的取值范围较大且需要保持相对大小关系的情况。
总结:
数据转换和归一化是数据处理中的重要技巧,可以帮助我们将数据调整为适合分析和建模的形式。在 Python 中,我们可以使用内置的函数和库来进行数值型和字符型之间的转换、日期和时间格式的转换以及数据类型的转换。对于归一化,我们可以选择最小-最大归一化、Z-score 归一化或十进制归一化方法,具体取决于数据的特点和需求。通过合理的数据转换和归一化,我们可以提高数据质量,为后续的数据分析和模型训练奠定坚实的基础。