1、nums[i+1:].index(res)中.index()方法可以返回元素所在列表的下标,使用非常普遍,牢记
2、.join() 函数,这个函数展开来写应该是str.join(item),join函数是一个字符串操作函数,str表示字符串(字符),item表示一个成员,注意括号里必须只能有一个成员,比如','.join('a','b')这种写法是行不通的。','.join('abc')上面代码的含义是“将字符串abc中的每个成员以字符','分隔开再拼接成一个字符串”,输出结果为:'a,b,c'。join里放列表、元组、字典也是可以的
3、sorted函数,内部可以放可迭代对象,返回排序后的样子,例如a = "cdax" b = sorted(a) return b可以得到["a","c","d","x"],结果是一个列表,内部是每个元素的排序,会以单个字符串呈现
4、若要一对多的形式尽量使用字典存储,字典某个键对应的值可以是一个列表,可以使用append方法添加,例如table[s_].append(s),最后只需要值的话可以使用values方法,例如table.values()
5、ord(s)函数用来获取字符s
的ASCII码,在创建哈希函数会用到,dict = defaultdict(list)创建一个默认字典dict
。默认字典是一种特殊的字典,当你试图访问一个不存在的键时,它会自动创建一个默认值。在这里,每个键的默认值是一个空列表。
6、用好while循环能够事半功倍,while循环:while condition: # code to be executed。这里的condition
是一个布尔表达式,如果其结果为True
,则执行循环体中的代码。一旦condition
变为False
,循环就会停止。好好理解,执行语句执行到while时会循环执行while命令,直到不满足条件为止,可以用来判断某个递增条件的终点,或者反复执行某个命令。
7、pd.read_excel('')单引号内写文件路径,读取文件
8、df_img['id'] = df_img.apply(lambda x: str(x.lable.split("_")[0]), axis=1),先解释匿名函数,x.lable表示取出x的lable项,.split("_")这是分割方法,以_为标志进行分割,[0]表示取第一项,str()是转化为字符串函数,axis=1表示逐行操作,若是axis=0则是逐列操作。
9、在pandas库中,参数axis
用于指定数据操作的方向。axis=1
表示操作应该沿着每一行或者跨越行进行,也就是沿着列的方向。这在一些函数中非常有用,比如apply()
, drop()
, mean()
等等。
例如,在apply()
函数中,如果设置axis=1
,那么传入的函数会被应用到每一行;在drop()
函数中,如果设置axis=1
,那么会删除指定的列。
相对的,axis=0
表示操作应该沿着每一列或者跨越列进行,也就是沿着行的方向。例如,在apply()
函数中,如果设置axis=0
,那么传入的函数会被应用到每一列;在drop()
函数中,如果设置axis=0
,那么会删除指定的行。
10、pd.to_datetime()日期转化函数,转化为日期,不带时刻。.strftime('%Y-%m-%d')时间格式化函数
11、df_img.drop_duplicates(subset='file_name'),去重函数,subset接收去重的参考列
12、在pandas中,unique()
函数用于获取列中的所有唯一值,返回的是一个数组,包含列中所有不同的值。这个函数常常用于查看一列中有哪些不同的值,或者有多少个不同的值。
13、df_driver['driver_id'] = df_driver['driver_id'].astype(str),在pandas中,astype()
函数用于更改列的数据类型。在这个例子中,astype(str)
表示将'driver_id'列的数据类型转换为字符串类型。
这个操作通常在数据预处理阶段使用,例如,当我们需要将数字类型的数据转换为字符串类型,或者将字符串类型的数据转换为日期类型等。
14、sel_driver_id = list(df_driver['driver_id'].unique()) df = df_img[df_img.driver_id.isin(sel_driver_id)],
这两行代码的作用是从df_img
DataFrame中筛选出那些'driver_id'在df_driver
DataFrame中出现过的行。
-
sel_driver_id = list(df_driver['driver_id'].unique())
: 这行代码是获取df_driver
DataFrame中'driver_id'列的所有唯一值,并将这些唯一值转换为一个列表,存储在sel_driver_id
变量中。 -
df = df_img[df_img.driver_id.isin(sel_driver_id)]
: 这行代码是筛选出df_img
DataFrame中那些'driver_id'在sel_driver_id
列表中的行,并将筛选结果存储在df
DataFrame中。
在pandas中,isin()
函数用于检查每个元素是否存在于传入的列表中,返回一个布尔值的序列。这个函数常常用于根据某些条件筛选数据。
15、df['file_name'].duplicated().any()
: 这行代码首先使用duplicated()
函数检查'file_name'列中的每个值是否是重复的,返回一个布尔值的序列。然后使用any()
函数检查这个序列中是否有True,如果有,返回True,否则返回False。所以,如果'file_name'列中有重复值,这行代码的结果就会是True,否则就会是False。
16、df[df['file_name'].duplicated(keep=False)]['file_name'].unique()
: 这行代码首先使用duplicated(keep=False)
函数检查'file_name'列中的每个值是否是重复的,与duplicated()
函数不同的是,如果一个值在列中出现了多次,duplicated(keep=False)
会将这个值的所有出现都标记为True。然后使用这个布尔值的序列筛选出df
中的行,最后使用unique()
函数获取这些行中'file_name'列的所有唯一值。所以,这行代码的结果就是'file_name'列中所有重复的值。
17、在Python的os库中,os.path.basename()
函数接受一个路径作为输入,然后返回路径的最后一部分,也就是文件名或者最后一个目录名。如果路径以目录分隔符结束,那么返回的就是空字符串。
例如:
- 如果
file_path
是'/home/user/documents/file.txt'
,那么os.path.basename(file_path)
的结果就是'file.txt'
。 - 如果
file_path
是'/home/user/documents/folder/'
,那么os.path.basename(file_path)
的结果就是空字符串。
18、使用Python的Path
类(来自pathlib
模块)创建了一个Path
对象,代表一个文件系统路径。
Path
类是Python 3.4及更高版本中引入的,用于处理文件系统路径。与使用os模块的函数相比,使用Path
类可以用更简洁、更直观的方式处理路径。
在这个例子中,original_path
是一个Path
对象,代表路径'/Users/catorg/Desktop/工作汇总/2023.07/ConvNeXt_V2/image_data_2nd'
。
你可以对Path
对象进行各种操作,例如:
original_path.name
:返回路径的文件名,例如'image_data_2nd'
。original_path.parent
:返回路径的父路径,例如Path('/Users/catorg/Desktop/工作汇总/2023.07/ConvNeXt_V2')
。original_path.exists()
:检查路径是否存在。original_path.is_file()
:检查路径是否是一个文件。original_path.is_dir()
:检查路径是否是一个目录。
19、get_image_files(original_path)
这行代码是使用fastai库的get_image_files()
函数,从original_path
指定的路径中获取所有的图像文件。
get_image_files()
函数会递归地搜索指定的路径,找出所有的图像文件(如.jpg, .png等),并返回一个包含所有图像文件路径的列表。
在这个例子中,img_path
是一个包含original_path
路径下所有图像文件路径的列表。
这个函数非常适合在处理图像数据时使用,可以方便地获取到所有的图像文件,无论它们是在同一个目录下,还是分散在多个子目录中。
20、df = df.reset_index(drop=True)
这行代码的作用是重置DataFrame df
的索引。
在pandas中,每个DataFrame都有一个索引。索引是用来标识每一行的,可以是数字,也可以是其他类型,如字符串。有时候,我们在处理数据的过程中,可能会打乱原来的索引,例如在筛选或排序数据后,索引可能就不再是连续的数字。
reset_index()
函数就是用来重置索引的。它会移除原来的索引,并添加一个新的从0开始的整数索引。
在这个函数中,drop=True
参数的意思是,不保留原来的索引。如果设置为drop=False
(默认值),那么原来的索引会被添加为一个新的列。
所以,df = df.reset_index(drop=True)
这行代码的结果就是,df
的索引被重置为从0开始的整数,而原来的索引被丢弃。
21、df.groupby(['dt', 'label']).count()
这行代码的作用是按照'dt'和'label'列对DataFrame df
进行分组,并计算每个组的数量。
在pandas中,groupby()
函数用于对数据进行分组。在这个例子中,groupby(['dt', 'label'])
表示按照'dt'和'label'两列的值进行分组,具有相同'dt'和'label'值的行会被分到同一组。
count()
函数用于计算每个组的数量。在groupby()
之后使用count()
,可以得到每个组的行数。
所以,df.groupby(['dt', 'label']).count()
的结果是一个新的DataFrame,索引是'dt'和'label'的唯一组合,每一列的值是对应组的行数。
这个操作常常用于统计分析,例如,我们可以用这种方式来查看每个日期每个标签的数据有多少。
22、