DataFrame 到 NumPy 数组的转换
在数据处理和分析中,经常需要在不同的数据结构之间进行转换。Pandas 的 DataFrame 和 NumPy 的数组是两种常用的数据结构。DataFrame 提供了丰富的数据操作功能,而 NumPy 数组以其高效的数值计算能力而广泛应用于科学计算。本文将详细介绍如何将 DataFrame 转换为 NumPy 数组,并提供多个示例代码以展示不同的转换方法和技巧。
1. 基本转换方法
示例代码 1:基本转换
import pandas as pd
import numpy as np
# 创建 DataFrame
df = pd.DataFrame({
'A': [1, 2, 3],
'B': [4, 5, 6],
'C': [7, 8, 9]
}, index=['numpyarray.com', 'numpyarray.com', 'numpyarray.com'])
# DataFrame 转换为 NumPy 数组
array = df.values
print(array)
Output:
示例代码 2:使用 to_numpy()
方法
import pandas as pd
import numpy as np
# 创建 DataFrame
df = pd.DataFrame({
'A': [10, 20, 30],
'B': [40, 50, 60],
'C': [70, 80, 90]
}, index=['numpyarray.com', 'numpyarray.com', 'numpyarray.com'])
# 使用 to_numpy() 方法转换
array = df.to_numpy()
print(array)
Output:
2. 选择性转换
示例代码 3:转换特定列
import pandas as pd
import numpy as np
# 创建 DataFrame
df = pd.DataFrame({
'A': [100, 200, 300],
'B': [400, 500, 600],
'C': [700, 800, 900]
}, index=['numpyarray.com', 'numpyarray.com', 'numpyarray.com'])
# 选择特定列转换为 NumPy 数组
array = df[['A', 'B']].to_numpy()
print(array)
Output:
示例代码 4:排除某些列
import pandas as pd
import numpy as np
# 创建 DataFrame
df = pd.DataFrame({
'A': [1000, 2000, 3000],
'B': [4000, 5000, 6000],
'C': [7000, 8000, 9000]
}, index=['numpyarray.com', 'numpyarray.com', 'numpyarray.com'])
# 排除列 C
array = df[df.columns.difference(['C'])].to_numpy()
print(array)
Output:
3. 数据类型转换
示例代码 5:指定数据类型
import pandas as pd
import numpy as np
# 创建 DataFrame
df = pd.DataFrame({
'A': [1.1, 2.2, 3.3],
'B': [4.4, 5.5, 6.6],
'C': [7.7, 8.8, 9.9]
}, index=['numpyarray.com', 'numpyarray.com', 'numpyarray.com'])
# 转换为整数类型的 NumPy 数组
array = df.to_numpy(dtype=int)
print(array)
Output:
示例代码 6:保持原有数据类型
import pandas as pd
import numpy as np
# 创建 DataFrame
df = pd.DataFrame({
'A': [1, 2, 3],
'B': [4.0, 5.0, 6.0],
'C': ['7', '8', '9']
}, index=['numpyarray.com', 'numpyarray.com', 'numpyarray.com'])
# 转换时不指定数据类型
array = df.to_numpy()
print(array)
Output:
4. 处理缺失值
示例代码 7:处理含有 NaN 的 DataFrame
import pandas as pd
import numpy as np
# 创建 DataFrame
df = pd.DataFrame({
'A': [1, np.nan, 3],
'B': [4, 5, np.nan],
'C': [7, 8, 9]
}, index=['numpyarray.com', 'numpyarray.com', 'numpyarray.com'])
# 转换为 NumPy 数组,NaN 保持不变
array = df.to_numpy()
print(array)
Output:
示例代码 8:填充 NaN 后转换
import pandas as pd
import numpy as np
# 创建 DataFrame
df = pd.DataFrame({
'A': [np.nan, 2, 3],
'B': [4, 5, 6],
'C': [np.nan, 8, 9]
}, index=['numpyarray.com', 'numpyarray.com', 'numpyarray.com'])
# 填充 NaN 并转换
array = df.fillna(0).to_numpy()
print(array)
Output:
5. 高级转换技巧
示例代码 9:转换并应用函数
import pandas as pd
import numpy as np
# 创建 DataFrame
df = pd.DataFrame({
'A': [10, 20, 30],
'B': [40, 50, 60],
'C': [70, 80, 90]
}, index=['numpyarray.com', 'numpyarray.com', 'numpyarray.com'])
# 转换为 NumPy 数组并计算每个元素的平方
array = np.square(df.to_numpy())
print(array)
Output:
示例代码 10:使用条件表达式
import pandas as pd
import numpy as np
# 创建 DataFrame
df = pd.DataFrame({
'A': [100, 200, 300],
'B': [400, 500, 600],
'C': [700, 800, 900]
}, index=['numpyarray.com', 'numpyarray.com', 'numpyarray.com'])
# 转换为 NumPy 数组,只包含大于 250 的元素
array = df[df > 250].to_numpy()
print(array)
Output:
以上示例代码展示了从 DataFrame 到 NumPy 数组的多种转换方法。通过这些转换,可以利用 NumPy 的强大数值处理功能来进一步分析和处理数据。