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

Pandas与NumPy区别以及dataframe和ndarray对象转换,第1张

区别

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为

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列开始

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/736582.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-28
下一篇 2022-04-28

发表评论

登录后才能评论

评论列表(0条)

保存