python3 数据挖掘之pandas学习记录(一)-----NumPy

    这几天由于对excel的模块使用及数据分析处理的需求,看了下pandas,分享一下。

1.pandas之numpy
1.1NumPy是Python数值计算最重要的基础包。很多都采用NumPy的数组作为构建基础。
NumPy自己并没有提供很高级的数据分析处理功能,理解NumPy数组及面向数组的计算是为了更加高效方便的使用pandas。

1.2创建ndarray

创建序列最简单就是使用array函数,举几个简单例子:

import numpy as np
my_arr = np.random.randn(2,3)
print(my_arr)

结果如下:
[[-2.30239282 -0.49235142 0.66086362]
[-1.59935706 -0.95671158 0.42411401]]
当我们输入列表转换:

L = [4,2,2.3,9,8]
my_arr = np.array(L)
print(my_arr)

结果:
[4. 2. 2.3 9. 8. ]
当我们嵌套序列:

L1 = [[4,2,3,9,8],[5,6,0,1,7]]
my_arr1 = np.array(L1)
print(my_arr1)

结果:
[[4 2 3 9 8]
[5 6 0 1 7]]
又一组等长列表(注意一定是等长)组成的列表会被转换成一个多维数组。

print(my_arr1.ndim)
print(my_arr1.shape)

结果:
2
(2, 5)
以上可以用属性ndim和shape验证,ndim返回数组的维度,shape返回各位维度大小的元祖。dtype返回数组数据类型。astype转换数组的数据类型。
问:整形数据不应该是int吗?浮点型数据不应该是float吗?
解:int32、float64是Numpy库自己的一套数据类型。

arange是Python内置函数range的数组版:

my_arr2 = np.arange(10)
print(my_arr2)

结果:
[0 1 2 3 4 5 6 7 8 9]
你可以通过ndarray的astype方法明确地将一个数组从一个dtype转换成另一个dtype;如果将浮点数转换成整数,则小数部分将会被截取删除;如果某字符串数组表示的全是数字,也可以用astype将其转换为数值形式:
实例1:

L = [4,2,3,9,8]
my_arr = np.array(L)
print(my_arr.dtype)
float_my_arr = my_arr.astype(np.float64)
print(float_my_arr.dtype)

结果:
int32
float64

实例2:

L = [4.1,2.2,3.9,9.2,8.4]
my_arr = np.array(L)
print(my_arr.dtype)
float_my_arr = my_arr.astype(np.int32)
print(float_my_arr.dtype)
print(float_my_arr)

结果:
float64
int32
[4 2 3 9 8]

实例3:

L2 = ['1.50','9.9','40','-10']
my_arr2 = np.array(L2,dtype=np.string_)
my_arr2_str = my_arr2.astype(float)
print(my_arr2_str.dtype)
print(my_arr2_str)

结果:
float64
[ 1.5 9.9 40. -10. ]

2.NumPy数组的运算
大小相等的数组之间的任何运算都会将运算应用到每个元素,例如:

L1 = [[4,2,3,9,8],[5,6,0,1,7]]
my_arr1 = np.array(L1)
print(my_arr1)
print(my_arr1 * my_arr1)

结果:
[[4 2 3 9 8]
[5 6 0 1 7]]
[[16 4 9 81 64]
[25 36 0 1 49]]
大小相同的数组之间的比较会生成布尔值数组:
L1 = [[4,2,3,9,8],[5,6,0,1,7]]
L2 = [[1,2,3,4,5],[6,7,8,9,2]]
my_arr1 = np.array(L1)
my_arr2 = np.array(L2)
print(my_arr1 > my_arr2)
结果:
[[ True False False True True]
[False False False False True]]

3.NumPy数组的切片,索引
由于此处书里内容较多,偏于很大,不做详细介绍,简单写一下。
切片索引ndarray的切片语法跟Python列表这样的一维对象差不多,直接切片
二维数组,它是沿着第0轴(即第一个轴)切片的。也就是说,切片是沿着一个轴向选取元素的。表达式L_arr[:2]可以被认为是“选取L_arr的前两行”。

布尔型索引:
数组的长度必须跟被索引的轴长度一致。此外,还可以将布尔型数组跟切片、整数(或整数序列,稍后将对此进行详细讲解)混合使用。注意:如果布尔型数组的长度不对,布尔型选择就会出错。
花式索引它指的是利用整数数组进行索引,花式索引跟切片不一样,它总是将数据复制到新数组中。

猜你喜欢

转载自blog.51cto.com/10901766/2506473
今日推荐