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 的转换_第1张图片
图一 字符串转换列表的结果

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

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

DataFrame 数据框与Numpy ndarray 的转换_第2张图片
图二 列表转成Numpy ndarray的结果

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

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

DataFrame 数据框与Numpy ndarray 的转换_第3张图片
图三 Numpy ndarray 转成 Pandas Dataframe 数据框的结果

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

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

DataFrame 数据框与Numpy ndarray 的转换_第4张图片
图四 Pandas Dataframe 数据框得到 Numpy ndarray 对象

或是调用 to_numpy() 这个方法,结果如下图。
DataFrame 数据框与Numpy ndarray 的转换_第5张图片
图五 Pandas Dataframe 数据框调用 to_numpy()

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

df2list = df.values.tolist()
df2list

DataFrame 数据框与Numpy ndarray 的转换_第6张图片
图六 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 的转换_第7张图片
图七 使用 list() 方法转换 Pandas Dataframe 数据框的结果

你可能感兴趣的:(Python,小技巧,Python)