📜  如何将 pandas 系列转换为 2d numpy 数组 - Python (1)

📅  最后修改于: 2023-12-03 15:09:06.317000             🧑  作者: Mango

如何将 pandas 系列转换为 2d numpy 数组 - Python

在进行数据分析和处理时,经常需要将 pandas 系列(Series)转换为 NumPy 数组(Numpy Array),特别是当需要使用一些 NumPy 数组的函数时。在本文中,我们将介绍如何将 pandas 系列转换为 2d NumPy 数组。

首先,我们需要导入 pandas 和 numpy 模块:

import pandas as pd
import numpy as np
1. pandas.Series.to_numpy() 方法

pandas.Series 对象内置了 to_numpy() 方法,可以将 Series 转换为 NumPy 数组。对于一维 Series 对象,to_numpy() 方法得到的数组也是一维的。

s = pd.Series([1, 2, 3, 4, 5])
arr = s.to_numpy()
print(arr)

输出结果:

[1 2 3 4 5]

对于二维 Series 对象,to_numpy() 方法得到的是一个二维 Numpy 数组。这个转换是通过对每个元素调用 numpy.array() 函数来完成的。下面是一个例子:

s = pd.Series([[1,2,3],[4,5,6]])
arr = s.to_numpy()
print(arr)

输出结果:

array([[1, 2, 3],
       [4, 5, 6]])
2. pandas.DataFrame.to_numpy() 方法

如果我们想将整个 DataFrame 转换为 NumPy 数组,我们可以使用 DataFrame 的 to_numpy() 方法。DataFrame 是由多个连续的 Series 组成的,因此 to_numpy() 方法得到的是一个二维 Numpy 数组。

df = pd.DataFrame({'A':[1, 2, 3],'B':[4, 5, 6],'C':[7, 8, 9]})
arr = df.to_numpy()
print(arr)

输出结果:

array([[1, 4, 7],
       [2, 5, 8],
       [3, 6, 9]])

使用 DataFrame 的 to_numpy() 方法时,需要注意到一些细节。

  • DataFrame 中的每列都被视为一个 Series,它们必须具有相同的数据类型,否则 to_numpy() 方法将抛出 ValueError。
  • DataFrame 将索引列和数据列转换为 NumPy 数组,但不包括列名。如果需要列名信息,请在进行转换之前使用 DataFrame.columns 属性获取列名,并添加到转换后的 NumPy 数组中。
df = pd.DataFrame({'A':[1, 2, 3],'B':[4, 5, 6],'C':[7, 8, 9]})
arr = df.to_numpy()
columns = df.columns
arr_with_header = np.vstack((columns, arr))
print(arr_with_header)

输出结果:

array([['A', 'B', 'C'],
       ['1', '4', '7'],
       ['2', '5', '8'],
       ['3', '6', '9']], dtype='<U11')
总结

本文中我们介绍了两种将 pandas 系列(Series)和 DataFrame 转换为 2d Numpy 数组的方法,并讨论了一些细节问题。如果需要使用一些 Numpy 数组的函数或进行数据可视化等操作,这些方法将会非常有用。