1. 基本转换方法
使用pd.DataFrame()
函数直接转换NumPy数组:
# 创建NumPy数组
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
# 转换为DataFrame
df = pd.DataFrame(arr)
print(df)
输出结果:
0 1 2 0 1 2 3 1 4 5 6 2 7 8 9
NumPy和Pandas高效数据转换完全指南
在Python数据科学领域,NumPy数组和Pandas DataFrame是最常用的两种数据结构:
实际项目中经常需要在两者间转换,本教程将详细介绍多种转换方法和使用场景。
开始前请确保已安装以下Python库:
pip install numpy pandas
在Python脚本中导入必要的库:
import numpy as np
import pandas as pd
使用pd.DataFrame()
函数直接转换NumPy数组:
# 创建NumPy数组
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
# 转换为DataFrame
df = pd.DataFrame(arr)
print(df)
输出结果:
0 1 2 0 1 2 3 1 4 5 6 2 7 8 9
自定义DataFrame的列名和行索引:
# 带列名和索引的转换
df = pd.DataFrame(
arr,
columns=['A', 'B', 'C'],
index=['Row1', 'Row2', 'Row3']
)
print(df)
输出结果:
A B C Row1 1 2 3 Row2 4 5 6 Row3 7 8 9
一维数组转换为单列DataFrame:
# 一维数组
arr_1d = np.array([10, 20, 30, 40, 50])
# 转换为DataFrame
df_1d = pd.DataFrame(arr_1d, columns=['Values'])
print(df_1d)
输出结果:
Values 0 10 1 20 2 30 3 40 4 50
通过DataFrame的values
属性转换为NumPy数组:
# 创建示例DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35],
'Salary': [50000, 60000, 70000]}
df = pd.DataFrame(data)
# 转换为NumPy数组
arr_from_df = df.values
print(arr_from_df)
输出结果:
[['Alice' 25 50000] ['Bob' 30 60000] ['Charlie' 35 70000]]
Pandas推荐使用to_numpy()
方法进行转换:
# 使用to_numpy()方法
arr_from_df = df.to_numpy()
print(arr_from_df)
# 转换特定列
age_array = df['Age'].to_numpy()
print("\nAge列数组:", age_array)
输出结果:
[['Alice' 25 50000] ['Bob' 30 60000] ['Charlie' 35 70000]] Age列数组: [25 30 35]
DataFrame预处理后转换为数组供机器学习模型使用:
from sklearn.datasets import load_iris
# 加载数据集到DataFrame
iris = load_iris()
df = pd.DataFrame(
data=np.c_[iris.data, iris.target],
columns=iris.feature_names + ['target']
)
# 分离特征和目标
X = df[iris.feature_names].to_numpy()
y = df['target'].to_numpy()
print("特征矩阵形状:", X.shape)
print("目标数组形状:", y.shape)
输出结果:
特征矩阵形状: (150, 4) 目标数组形状: (150,)
对数组进行计算后,将结果转换回DataFrame:
# 创建示例DataFrame
df = pd.DataFrame(np.random.rand(5, 3), columns=['A', 'B', 'C'])
# 转换为数组并进行计算
arr = df.to_numpy()
normalized_arr = arr / arr.max(axis=0) # 按列归一化
# 转回DataFrame
normalized_df = pd.DataFrame(
normalized_arr,
columns=[col + '_norm' for col in df.columns],
index=df.index
)
print("原始DataFrame:")
print(df.head())
print("\n归一化后的DataFrame:")
print(normalized_df.head())
输出示例:
原始DataFrame: A B C 0 0.548814 0.715189 0.602763 1 0.544883 0.423655 0.645894 2 0.437587 0.891773 0.963663 3 0.383442 0.791725 0.528895 4 0.568045 0.925597 0.071036 归一化后的DataFrame: A_norm B_norm C_norm 0 0.966099 0.772926 0.625574 1 0.959067 0.457780 0.670368 2 0.770360 0.963663 1.000000 3 0.675056 0.855489 0.548899 4 1.000000 1.000000 0.073738
to_numpy()
替代values
属性(Pandas推荐方式)dtype
参数控制数据类型本文由YuchiJunNeng于2025-07-28发表在吾爱品聚,如有疑问,请联系我们。
本文链接:https://521pj.cn/20256720.html
发表评论