Python数据分析:Pandas与NumPy结合,实现高效数值计算,提升数据分析效率的最佳实践

                

        目前小编的借调任务已经完成,借调到其他组完成了自己的工作,有需要的同学可以看下相关的文章:Python(Flask)+ React && Golang(Gin)+ Vue(Element)然后小编认为可以回到原来的组继续phper的工作,没想到,刚做完支持工作,现在又被借调到了Python项目部RolePlay数据组,目前的情况是需要做数据分析并培训相关人员,所以小编不得已又开始了紧张的复习工作已经培训文档得撰写工作,有需要的小伙伴自取。

        前面已经给他们培训过Flask框架的相关知识,现在做数据分的话,个人认为技术点不难,但是比较繁复,所以需要培训NumPy和Pandas组件无论是NumPy还是Pandas,个人经验:只要掌握好了key、value、Indexes(索引),以及对象,这个就是很简单的一个东西。


NumPy:

1.强大的n维数组结构 
2.线性代数、傅里叶变换和随机数特征
3.速度:基于NumPy的算法要比纯Python快10到100倍(甚至更快),并且使用的内存更少

属性:

ndarray.ndim:数组的维数,在Python中叫做rank
ndarray.shape: 数组的维数。它是一组长度由数组维数(ndim)决定的数字。例如,长度为n的一维数组的形状是n,而n行m列的数组的形状shape是(n,m)。
ndarray.size:数组中所有元素的数量。
ndarray.dtype:数组中元素的类型,如numpy.int32、numpy.int16或numpy.float64。
ndarray.itemsize:数组中每个元素的大小,以字节为单位
ndarray.data:用于存储数组元素的缓冲。通常我们只需要通过下标来访问元素,而不需要访问缓冲区。

指定维度:

 初始化:2表示数组数据维度,3表示单一维度的数据个数;
data = np.random.randn(2, 3)
输出data: array([[-0.2047,  0.4789, -0.5194],[-0.5557,  1.9658,  1.3934]])

数据获取:

数据计算:data * 10
输出:array([[ -2.0471,   4.7894,  -5.1944],[ -5.5573,  19.6578,  13.9341]])

数据计算: data + data
输出:array([[-0.4094,  0.9579, -1.0389],[-1.1115,  3.9316,  2.7868]])

函数:

函数:shape(一个表示各维度大小的元组)
data.shape
输出: (2, 3)

函数:dtype(一个用于说明数组数据类型的对象):
data.dtype
输出: dtype('float64')

唯一化以及其它的集合逻辑
names = np.array(['Bob', 'Joe', 'Will', 'Bob', 'Will', 'Joe', 'Joe'])

np.unique(names)
输出:array(['Bob', 'Joe', 'Will'],
      dtype='<U4')

ints = np.array([3, 3, 3, 2, 2, 1, 1, 4, 4])
np.unique(ints)
输出array([1, 2, 3, 4]) 

创建:

创建一维数组:

data1 = [6, 7.5, 8, 0, 1]
arr1 = np.array(data1)
输出:array([ 6. ,  7.5,  8. ,  0. ,  1. ])

创建二维数组:

data2 = [[1, 2, 3, 4], [5, 6, 7, 8]]
arr2 = np.array(data2)
输出:array([[1, 2, 3, 4],[5, 6, 7, 8]])

zeros和ones分别可以创建指定长度或形状的全0或全1数组

np.zeros(10)
输出:array([ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.])

np.zeros((3, 6))
输出array([[ 0.,  0.,  0.,  0.,  0.,  0.],[ 0.,  0.,  0.,  0.,  0.,  0.],[ 0.,  0.,  0.,  0.,  0.,  0.]])

np.empty((2, 3, 2))
输出:array([[[ 0.,  0.],[ 0.,  0.],[ 0.,  0.]],[[ 0.,  0.],[ 0.,  0.],[ 0.,  0.]]])


创建递增数组:

np.arange(15)
输出:array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14]) 

切片(左包括,右开放):

arr = np.arange(10)
输出:array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

arr[5]
输出:5

切片:arr[5:8]
输出:array([5, 6, 7])

修改:arr[5:8] = 12
输出 array([ 0,  1,  2,  3,  4, 12, 12, 12,  8,  9])


切片修改值,会影响到原数组
arr_slice = arr[5:8]
输出:array([12, 12, 12])

arr_slice[1] = 12345
输出:array([    0,     1,     2,     3,     4,    12, 12345,    12,     8,   9])

索引:

布尔型索引:

names = np.array(['Bob', 'Joe', 'Will', 'Bob', 'Will', 'Joe', 'Joe'])

data = np.random.randn(7, 4)
输出:array([[ 0.0929,  0.2817,  0.769 ,  1.2464],[ 1.0072, -1.2962,  0.275 ,  0.2289],[ 1.3529,  0.8864, -2.0016, -0.3718],[ 1.669 , -0.4386, -0.5397,  0.477 ],[ 3.2489, -1.0212, -0.5771,  0.1241],[ 0.3026,  0.5238,  0.0009,  1.3438]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值