1.pandas.DataFrame.loc
按标签或布尔数组访问一组行和列。
.loc[ ] 主要是基于标签的,但也可用于布尔数组。
允许输入包括:
-
单个标签,例如 或 (请注意,该注释被解释为索引的标签,并且永远不会作为沿索引的整数位置)。5’a’5
-
标签的列表或数组,例如 。[‘a’, ‘b’, ‘c’]
-
具有标签的切片对象,例如 。‘a’:‘f’
-
与被切片的轴长度相同的布尔数组,例如 。[True, False, True]
-
可对齐的布尔系列。键的索引将在遮罩之前对齐。
-
可对齐索引。返回选择的索引将是输入。
-
具有一个参数(调用系列或 DataFrame)的函数,它返回用于索引的有效输出(以上之一)callable
参考链接:pandas
2.pandas.pandas.DataFrame.reset_index
重置索引或索引级别。
重置 DataFrame 的索引,然后使用默认索引。如果 DataFrame 具有多索引,此方法可以删除一个或多个级别。
Parameters:
- level: int, str, tuple, or list, default None
仅从索引中删除给定级别。默认情况下删除所有级别。 - drop: bool, default False
请勿尝试将索引插入数据框列。这会将索引重置为默认整数索引。 - inplace: bool, default False
修改数据帧就位(不要创建新对象)。 - col_level: int or str, default 0
如果列具有多个级别,则确定标签插入到哪个级别。默认情况下,它插入到第一个级别。 - col_fill: object, default ‘’
如果列具有多个级别,则确定其他级别的命名方式。如果"无",则重复索引名称。
Returns:
- DataFrame or None
数据帧与新索引或无如果 。inplace=True
示例
import pandas as pd
import numpy as np
from sklearn.model_selection import GroupKFold, StratifiedKFold
CFG = {
'fold_num': 10,
'seed': 719,
'model_arch': 'tf_efficientnet_b3_ns',
'img_size': 384,
'epochs': 32,
'train_bs': 28,
'valid_bs': 32,
'lr': 1e-4,
'num_workers': 4,
'accum_iter': 1, # suppoprt to do batch accumulation for backprop with effectively larger batch size
'verbose_step': 1,
'device': 'cuda:0',
'tta': 3,
'used_epochs': [6,7,8,9],
'weights': [1,1,1,1]
}
train = pd.read_csv('../木薯叶分类/cassava-leaf-disease-classification/train.csv')
train.head()
train.label.value_counts()
print(train)
image_id label
0 1000015157.jpg 0
1 1000201771.jpg 3
2 100042118.jpg 1
3 1000723321.jpg 1
4 1000812911.jpg 3
... ... ...
21392 999068805.jpg 3
21393 999329392.jpg 3
21394 999474432.jpg 1
21395 999616605.jpg 4
21396 999998473.jpg 4
[21397 rows x 2 columns]
folds = StratifiedKFold(n_splits=CFG['fold_num']).split(np.arange(train.shape[0]), train.label.values)
for fold, (trn_ind, test) in enumerate(folds):
print('Train: %s | test: %s | Train.size: %s | test.size: %s' % (trn_ind, test, trn_ind.size, test.size))
print(" ")
Train: [ 2033 2034 2043 ... 21394 21395 21396] | test: [ 0 1 2 ... 2443 2473 2528] | Train.size: 19257 | test.size: 2140
Train: [ 0 1 2 ... 21394 21395 21396] | test: [2033 2034 2043 ... 4505 4545 4556] | Train.size: 19257 | test.size: 2140
Train: [ 0 1 2 ... 21394 21395 21396] | test: [4137 4152 4160 ... 7014 7021 7022] | Train.size: 19257 | test.size: 2140
Train: [ 0 1 2 ... 21394 21395 21396] | test: [6297 6308 6324 ... 8842 8883 8885] | Train.size: 19257 | test.size: 2140
Train: [ 0 1 2 ... 21394 21395 21396] | test: [ 8377 8379 8381 ... 11034 11053 11064] | Train.size: 19257 | test.size: 2140
Train: [ 0 1 2 ... 21394 21395 21396] | test: [10556 10576 10577 ... 13164 13184 13226] | Train.size: 19257 | test.size: 2140
Train: [ 0 1 2 ... 21394 21395 21396] | test: [12787 12789 12795 ... 15030 15046 15078] | Train.size: 19257 | test.size: 2140
Train: [ 0 1 2 ... 21394 21395 21396] | test: [14774 14778 14780 ... 17158 17160 17171] | Train.size: 19258 | test.size: 2139
Train: [ 0 1 2 ... 21394 21395 21396] | test: [16944 16951 16954 ... 19424 19428 19429] | Train.size: 19258 | test.size: 2139
Train: [ 0 1 2 ... 19424 19428 19429] | test: [19132 19151 19154 ... 21394 21395 21396] | Train.size: 19258 | test.size: 2139
valid_ = train.loc[test,:].reset_index(drop=True)
image_id label
0 573039129.jpg 2
1 577684636.jpg 2
2 578106393.jpg 2
3 581164870.jpg 2
4 582120514.jpg 2
... ... ...
2134 999068805.jpg 3
2135 999329392.jpg 3
2136 999474432.jpg 1
2137 999616605.jpg 4
2138 999998473.jpg 4
[2139 rows x 2 columns]
print(train)
image_id label
19132 573039129.jpg 2
19151 577684636.jpg 2
19154 578106393.jpg 2
19171 581164870.jpg 2
19176 582120514.jpg 2
... ... ...
21392 999068805.jpg 3
21393 999329392.jpg 3
21394 999474432.jpg 1
21395 999616605.jpg 4
21396 999998473.jpg 4
[2139 rows x 2 columns]