[机器学习]使用numpy与pandas做数据准备

数据准备

在python当中,使用numpy和pandas处理数据。首先介绍一下如何使用这两个库。

numpy

numpy可以看作是一个更厉害与牛逼的数组

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] <class 'numpy.ndarray'>

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) <class 'numpy.ndarray'>
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)  取到第12两个索引号的内容

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   李四    打牌
25    泡妞    
可以看到同样为一一对应的,这样创建需要二者长度一致

# 改变索引名字
df = pd.DataFrame(data, index=['老大', '老二', '老三'])
print(df)
   name habit
老大   张三    睡觉
老二   李四    打牌
老三   王5    泡妞


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值