将NumPy数组转换为具有标题的Pandas dataframe
无论是pandas还是NumPy,都是Python中有效使用的开源库。NumPy代表Numerical Python(数字化的Python)。这是科学计算的核心库。NumPy数组是一个强大的N维数组对象,可以表示为行和列的形式。
NumPy array
array([[1, 2], [3, 4]])
Pandas提供了在Python中进行高性能数据处理和分析的工具,可以让我们处理类似于电子表格、CSV和SQL的表格数据。它具有DataFrame和Series等数据结构,主要用于数据分析。
DataFrame是一种二维标签数据结构,用于以行和列的方式表示数据。每一列中的数据可能具有不同的数据类型。
DataFrame:
Col1 Col2
0 a i
1 b j
2 c k
3 d l
在此示例中,我们将使用标题将NumPy数组转换为Pandas数据帧。
输入输出场景
让我们看看输入输出场景,以了解如何将NumPy数组转换为Pandas数据帧。
假设我们有一个包含一些值的二维NumPy数组,在输出中,我们将看到一个带有列名的数据帧。
Input numpy array:
[[1 2]
[3 4]]
Output DataFrame:
header1 header2
0 1 2
1 3 4
使用列名从Numpy数组创建Pandas DataFrame,可以使用pandas的DataFrame()方法,通过使用columns参数,在创建dataframe对象时可以指定列名。
使用DataFrame()方法
pandas.DataFrame()方法用于根据给定数据创建DataFrame对象。以下是语法 –
pandas.DataFrame(data=None, index=None, columns=None, dtype=None, copy=None)
其中,
- data − NumPy数组,Iterable,字典或DataFrame。
- index − 使用此参数指定行标签。默认值是0到n-1。
- columns − 使用此参数指定列标签/头。默认情况下,范围索引是0到n-1。
- dtype − 默认值为None。
- copy − 从输入复制数据,默认值为None。
示例
在此示例中,我们将使用具有标题的numpy数组创建pandas数据框。首先,我们将使用np.array()方法创建一个二维的numpy数组,然后我们将其转换为pandas DataFrame。 < / p >
import numpy as np
import pandas as pd
# Creating a 2 dimensional numpy array
numpy_array = np.array([[1, 2], [3, 4]])
print("Input numpy array:")
print(numpy_array)
# Convert NumPy array to DataFrame
df = pd.DataFrame(numpy_array, columns = ['header1', 'header2'])
print("Output DataFrame:")
print(df)
输出
Input numpy array:
[[1 2]
[3 4]]
Output DataFrame:
header1 header2
0 1 2
1 3 4
通过将名称列表分配给DataFrame()方法的columns参数,我们可以指定头部。
示例
在这里,我们将头部名称列表指定给DataFrame()方法的columns参数。
import numpy as np
import pandas as pd
# Creating a 2 dimensional numpy array
numpy_array = np.array(np.random.randn(10,3))
print("Input numpy array:")
print(numpy_array)
headers = ['Acol','Ccol','Bcol']
# Convert NumPy array to DataFrame
df = pd.DataFrame(numpy_array, columns = headers)
print("Output DataFrame:")
print(df)
输出
Input numpy array:
[[ 0.51863463 -1.04180497 -0.53410509]
[-1.67632426 -1.05587564 1.26963293]
[ 0.1904154 1.89355907 -0.7596976 ]
[-1.20464873 -0.45258193 -0.17936747]
[ 0.17513833 0.78481916 -1.52235579]
[-1.38108854 0.28470621 0.52897571]
[-0.62921794 0.95548506 0.03370699]
[ 0.30533368 -0.09951884 0.38484346]
[ 0.06951039 0.94497233 0.82353788]
[ 0.82560537 2.10383935 0.52618909]]
Output DataFrame:
Acol Ccol Bcol
0 0.518635 -1.041805 -0.534105
1 -1.676324 -1.055876 1.269633
2 0.190415 1.893559 -0.759698
3 -1.204649 -0.452582 -0.179367
4 0.175138 0.784819 -1.522356
5 -1.381089 0.284706 0.528976
6 -0.629218 0.955485 0.033707
7 0.305334 -0.099519 0.384843
8 0.069510 0.944972 0.823538
9 0.825605 2.103839 0.526189
最初使用随机数创建numpy数组,然后将其转换为带有列标签的数据框。
示例
在这个示例中,我们将通过指定切片numpy数组元素的字典来创建数据框。
# importing packages
import numpy as np
import pandas as pd
# Creating a 2 dimensional numpy array
numpy_array = np.array([[5.8, 2.8], [6.0, 2.2]])
print("Input numpy array:")
print(numpy_array)
# Convert NumPy array to DataFrame
df = pd.DataFrame({'Column1': numpy_array[:, 0], 'Column2': numpy_array[:, 1]})
print("Output DataFrame:")
print(df)
输出
Input numpy array:
[[5.8 2.8]
[6. 2.2]]
Output DataFrame:
Column1 Column2
0 5.8 2.8
1 6.0 2.2
我们已经成功地从numpy数组中创建了带有标头的pandas DataFrame。