DataFrame 数据框与Numpy ndarray 的转换

在处理的数据的时候,最常遇到的就是使用 Pandas 的 Dataframe 与 Numpy 的 ndarray。以下以 mtcars 为例,该数据集包含 32 笔汽车模型的数据, 这些数据取自1974年《汽车趋势》杂志,对于每辆汽车, 有 11 个特徵值,详细说明就省略,因为本篇文章主要是讨论如何在两种常见的对象之间转换。

取得三笔mtcars的数据,以字符串的方式存取。

strs = ['0,4.58257569495584,6,160.0,110,3.9,2.62,16.46,0,1,4,4,1,Mazda RX4,Mazda RX4',
    '1,4.58257569495584,6,160.0,110,3.9,2.875,17.02,0,1,4,4,1,Mazda RX4 Wag,Mazda RX4 Wag',
    '2,4.77493455452533,4,108.0,93,3.85,2.32,18.61,1,1,4,1,1,Datsun 710,Datsun 710']

将字符串转成列表,结果如下图。

arrs = []
[arrs.append(arr.split(',')) for arr in strs]

DataFrame 数据框与Numpy ndarray 的转换
图一 字符串转换列表的结果

将列表转成Numpy ndarray,结果如下图。

import numpy as np
npMtcars = np.array(arrs)
npMtcars.shape

DataFrame 数据框与Numpy ndarray 的转换
图二 列表转成Numpy ndarray的结果

将Numpy ndarray 转成 Pandas Dataframe 数据框,结果如下图。

import pandas as pd
df = pd.DataFrame(npMtcars)
df

DataFrame 数据框与Numpy ndarray 的转换
图三 Numpy ndarray 转成 Pandas Dataframe 数据框的结果

在数据框的对象中,要转换成 Numpy ndarray 是很簡單的,只要存取 values 这个属性即可,结果如下图。

print(type(df.values))
df.values

DataFrame 数据框与Numpy ndarray 的转换
图四 Pandas Dataframe 数据框得到 Numpy ndarray 对象

或是调用 to_numpy() 这个方法,结果如下图。

DataFrame 数据框与Numpy ndarray 的转换
图五 Pandas Dataframe 数据框调用 to_numpy()

如果要转换成列表 list 就比较麻烦一点,不像 Series 对象有 to_list() 的方法,所以可以从 ndarray 对象转换成列表 list,结果如下图。

df2list = df.values.tolist()
df2list

DataFrame 数据框与Numpy ndarray 的转换
图六 Pandas Dataframe 数据框转换成列表 list

建議不要用 list() 方法来转换,会达到预期外的结果,结果如下图。虽然得到的都是列表的结果,直接从数据框转换的结果会是字段数;而 values 属性则是只有第一层是列表,下一层还是 ndarray,

df2list1 = list(df)
print(type(df2list1))
print(df2list1)
df2list2 = list(df.values)
print(type(df2list2),type(df2list2[0]))
df2list2

DataFrame 数据框与Numpy ndarray 的转换
图七 使用 list() 方法转换 Pandas Dataframe 数据框的结果

Original: https://blog.csdn.net/m0_50614038/article/details/124224739
Author: Yehchitsai
Title: DataFrame 数据框与Numpy ndarray 的转换

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/751286/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球