在python当中,使用numpy和pandas处理数据。首先介绍一下如何使用这两个库。
numpynumpy可以看作是一个更厉害与牛逼的数组
import numpy as np # 最基础的ndarray # 常用的参数 np.array(object, dtype = None, ndmin = 0) dtype: 数据类型 ndmin: 最小维度
# 构建一个ndarray a = np.array([1, 2, 3, 4]) print(a, type(a)) 结果为 [1 2 3 4]
b = np.array([[1, 2, 3, 4], [5, 6, 7, 8]]) print(b, b.shape, type(b)) print(b.size, b.dtype) 结果为 [[1 2 3 4] [5 6 7 8]] (2, 4)8 int64 b.shape :b的‘形状’,表示各维度的大小 b.size :b的元素个数,shape中的m*n b.dtype :b的数据类型
numpy提供reshape方法来改变ndarray的维度
c = b.reshape(4, 2) print(b) print(c) 结果为 [[1 2 3 4] [5 6 7 8]] [[1 2] [3 4] [5 6] [7 8]]
可以看到,首先两个ndarray的size大小相等(都为8),然后是将b的两个1维数组拼在一起后展开再重新组合得到c,一个1维长度为2,2维长度为4的ndarray。
创建数组# 创建一个空的数组(维度为(3,2)),数据类型为int x = np.empty((3, 2), dtype = int) # 创建一个数据全为0的数组(维度为(4,2)),数据类型默认为float x = np.zeros((4, 2)) # 创建一个维度为(3,2),数据用pi填充的数组 x = np.full((3, 2), np.pi) # 创建一个全为1的矩阵, 数据类型默认为float x = np.ones(5) # 创建一个起始值为10,终止值为20(娶不到20),步长为2的数组 x = np.arange(10,20,2)数组切片
# 首先建立一个0到9的数组 a = np.array(0,10) # 从第3个索引到第7个索引,步长为2 b = a[3:7:2] # b = [3 5] 从索引号为3的开始,以步长为2开始找,不包含第7个索引号的内容 c = a[3:] # 23456789 后省略代表到最后一个(包含最后一个) d = a[:7] # 0123456 前省略代表从0索引开始,不包含最后一个
“”“ 多维切片,就是将每个1维数组先看成一个元素 ”“” a = np.array([[1,2,3], [4,5,6], [7,8,9],[9,10,11]]) b = a[1:3] print(b, b.shape) 结果为 [[4 5 6] [7 8 9]] (2, 3) 取到第1,2两个索引号的内容 c = a[:,1:3] # 逗号前为行,逗号后为列 print(c, c.shape) 结果为 [[ 2 3] [ 5 6] [ 8 9] [10 11]] (4, 2) 行全取,列从第一列开始取pandas
那pandas就是一个厉害且牛逼的表格库
建立一个简单的数据与索引的关系
import pandas as pd # Series类似于字典 name = ['张三', '李四', '王五', '赵六'] a = pd.Series(name, index=['1', '2', '3', '4']) print(a, a.shape) 结果为 1 张三 2 李四 3 王五 4 赵六 dtype: object (4,) 实现了数据11对应的一个简易表格 # 索引 print(a['1']) # 张三
Dataframe就是将多个Series组合起来,形成一个大表格,每行的内容都是由同样index的Series中的内容组合的
data = {
"name": ['张三', '李四', '王5'],
"habit": ['睡觉', '打牌', '泡妞']
}
df = pd.DataFrame(data)
print(df)
结果为
name habit
0 张三 睡觉
1 李四 打牌
2 王5 泡妞
可以看到同样为一一对应的,这样创建需要二者长度一致
# 改变索引名字
df = pd.DataFrame(data, index=['老大', '老二', '老三'])
print(df)
name habit
老大 张三 睡觉
老二 李四 打牌
老三 王5 泡妞


![[机器学习]使用numpy与pandas做数据准备 [机器学习]使用numpy与pandas做数据准备](http://www.mshxw.com/aiimages/31/1009149.png)
