Pandas与NumPy区别以及dataframe和ndarray对象转换

区别

Pandas 和 NumPy 被认为是科学计算与机器学习中必不可少的库,因为它们具有直观的语法和高性能的矩阵计算能力。下面对 Pandas 与 NumPy 进行简单的总结,如下表所示:

比较项PandasNumPy适应性Pandas主要用来处理类表格数据。NumPy 主要用来处理数值数据。工具Pandas提供了Series和DataFrame数据结构。NumPy 构建了 ndarray array来容纳数据。性能Pandas对于处理50万行以上的数据更具优势。NumPy 则对于50万以下或者更少的数据,性能更佳。内存利用率与 NumPy相比,Pandas会消耗大量的内存。NumPy 会消耗较少的内存。对象Pandas 提供了 DataFrame 2D数据表对象。NumPy 则提供了一个多维数组 ndarray 对象

DataFrame对象转换ndarray数组

在某些情况下,需要执行一些 NumPy 数值计算的高级函数,将 DataFrame 对象转换为 NumPy ndarray 数组,并将其返回:

1、使用to_numpy()转换

pandas v0.24.0以上版本,可以使用 to_numpy()方法,

语法
DataFrame.to_numpy(dtype=None, copy=False)   

参数说明如下:
dtype:可选参数,表示数据类型;
copy:布尔值参数,默认值为 Fales,表示返回值不是其他数组的视图。

示例
import numpy as np
import pandas as pd
df = pd.DataFrame(data={'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]},
                  index=['a', 'b', 'c'])
转换整个 DataFrame
df.to_numpy()
array([[1, 4, 7],
       [2, 5, 8],
       [3, 6, 9]])
转换指定列
df[['A', 'C']].to_numpy()
array([[1, 7],
       [2, 8],
       [3, 9]])

2、使用DataFrame中values

通过Series.values实现series转换为ndarray

import numpy as np
import pandas as pd
df = pd.DataFrame(data={'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]},
                  index=['a', 'b', 'c'])
df.values
array([[1, 4, 7],
       [2, 5, 8],
       [3, 6, 9]])

Series转换成adarray
data2 = pd.Series([1, 2, 3])
data2.values
array([1,2,3])

3、使用DataFrame的as_matrix()

import numpy as np
import pandas as pd
df = pd.DataFrame(data={'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]},
                  index=['a', 'b', 'c'])
在较高版本中可能会没有这个函数
df.as_matrix()
array([[1, 4, 7],
       [2, 5, 8],
       [3, 6, 9]])

4、使用Numpy的array()

import numpy as np
import pandas as pd
df = pd.DataFrame(data={'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]},
                  index=['a', 'b', 'c'])
np.array(df)
array([[1, 4, 7],
       [2, 5, 8],
       [3, 6, 9]])

ndarray数组转换成Series和DataFrame对象

ndarray 转换为 series

1、如果ndarray是二维数组,需要通过map结合lamdba

import numpy as np
import pandas as pd

data = np.array([1, 2, 3]).reshape(3, 1)  # 二维数组
data_list = map(lambda x: x[0], data)
ser = pd.Series(data_list)

2、如果ndarray是一维数组,则通过data.tolist()即可

import numpy as np
import pandas as pd

data = np.array([1, 2, 3])
ser = pd.Series(data.tolist())

ndarray转换为dataframe

1、直接通过pd.DataFrame转换

import numpy as np
import pandas as pd

data = np.array([['2019/08/02', 'zhansan', 1], ['2019/08/03', 'lisi', 2], ['2019/08/04', 'wangwu', 3]])
df = pd.DataFrame(data)

打印df为

Pandas与NumPy区别以及dataframe和ndarray对象转换

2、指定索引、数据、列名例子

import numpy as np
import pandas as pd

data = np.array([['', 'Col1', 'Col2'], ['Row1', 1, 2], ['Row2', 3, 4]])
df = pd.DataFrame(data=data[1:, 1:],  # 从第2行开始并且第2列开始作为数据
                  index=data[1:, 0],  # 第1列做索引,从第2行开始
                  columns=data[0, 1:])  # 第1行作为列名,从第2列开始

Pandas与NumPy区别以及dataframe和ndarray对象转换

Original: https://blog.csdn.net/weixin_43145427/article/details/124379972
Author: hanscal
Title: Pandas与NumPy区别以及dataframe和ndarray对象转换

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

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

(0)

大家都在看

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