Series idx & name; Series index的使用,切片,读取数据,增加,布尔选择

http://liao.cpython.org/pandas03/
http://liao.cpython.org/pandas06/

总结一下:创建Series的实例对象,有两种方式:一种是不指定Series构造函数的index,会自动有一个位置信息的index从0~len() -1自动为这个Series对象分配。另一种方式是常用字符列表作为Series对象的各个数据的标签label。

在创建Series对象时,建议不用int64作为label,用字符串作为Series的label在后续pandas的使用比较常见且有必要。int64可以作为位置信息,但一般从0开始,非0开始的位置信息建议不要用。

idx = 'a b c d e'.split()
v = [11,12,3,4,16]
t = pd.Series(v,index = idx,name = 'im columns')

t.name
Out[76]: 'im columns'

t.index
Out[77]: Index(['a', 'b', 'c', 'd', 'e'], dtype='object')

index的使用

在pandas里对Series的各个位置、标签上的数据的访问,可以通过loc、iloc、at、iat或ix来访问。带i的一般是通过位置相关得到数据,不带i的通过标签label来获得对应数据,ix既可以接收位置也可接收label。这里的loc、iloc等不是函数,可以理解为index的属性。

t.iloc[0]
Out[79]: 11

t.loc['a']
Out[80]: 11

多个index的使用 [[ ]]

t.loc[['a','b']]
t.loc[['a','b']]
Out[82]: 
a    11
b    12
Name: im columns, dtype: int64

Series 的切片

Slice切片,pandas的Series的切片,以位置信息去使用切片,和python里的切片的意义是一样的即含起点不含终点half-open。但Series还支持一种label的方式定位每个元素,常用字符串做index,所以在label上使用切片和python不一样的地方是即含起点又含终点。如果用整形位置信息作为label,会产生歧义,建议不这样用。总之,整形做位置信息切片,字符串做label切片。有关切片的使用,之前的章节已经说过了,这里不重复了。

在Pandas里使用切片最标准的定义Series和使用是t变量这种创建Series的方式和使用index、slice的方式。即用字符串做label(显式),用整形做位置信息(隐式),但显式切片和隐式切片的结果不同,显示含终点,隐式不含终点。

t['b':'d']
Out[97]: 
b    12
c     3
d     4
Name: im columns, dtype: int64

Series 读取数据,读取series对象的label和value

  1. 通过label或者位置的方式访问、修改Series数据。
    1.1 当然也可用iloc、loc、at、iat等来处理。
t['a'] = 111

t
Out[106]: 
a    111
b     12
c      3
d      4
e     16
Name: im columns, dtype: int64
  1. iteritems函数可以获得标签和值。
for x in t.iteritems():
    print (x)
('a', 111)
('b', 12)
('c', 3)
('d', 4)
('e', 16)

Series增加数据 append

t = t.append(pd.Series({'z':22}))

t['x'] = 34

删除数据: 删除在Series很少用。常用布尔选择或mask来选择数据组成新的Series。(布尔选择:)

t1 = t>20
t1
Out[123]: 
a     True
b    False
c    False
d    False
e    False
z     True
z     True
p     True
x     True
dtype: bool
下面是使用 NumPy 读取 MNIST 手写数字数据集并进行预处理的示例代码: ```python import numpy as np import torch from torch.utils.data import DataLoader, TensorDataset # 读取数据集 def load_data(path): with open(path, 'rb') as f: data = np.frombuffer(f.read(), np.uint8, offset=16) return data.reshape(-1, 28*28) # 加载数据集 train_data = load_data('mnist/train-images.idx3-ubyte') train_labels = load_data('mnist/train-labels.idx1-ubyte') test_data = load_data('mnist/t10k-images.idx3-ubyte') test_labels = load_data('mnist/t10k-labels.idx1-ubyte') # 预处理数据 train_data = train_data / 255.0 test_data = test_data / 255.0 train_data = torch.from_numpy(train_data).float() train_labels = torch.from_numpy(train_labels).long() test_data = torch.from_numpy(test_data).float() test_labels = torch.from_numpy(test_labels).long() # 构建数据集和数据加载器 train_dataset = TensorDataset(train_data, train_labels) test_dataset = TensorDataset(test_data, test_labels) train_loader = DataLoader(train_dataset, batch_size=64, shuffle=True) test_loader = DataLoader(test_dataset, batch_size=64, shuffle=False) ``` 在这个示例代码中,我们首先定义了一个 `load_data` 函数,用于读取 MNIST 数据集文件,并将数据转换为 NumPy 数组形式。然后,我们将数据集进行预处理,包括归一化和转换为 PyTorch 的 Tensor 对象。最后,我们使用 PyTorch 的 `TensorDataset` 和 `DataLoader` 类构建了训练集和测试集的数据集和数据加载器,方便后续进行模型训练和测试。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值