文章目录
1. datetime.timedelta 计算时间差
fmt = '%a %b %d %H:%M:%S +0000 %Y'
d1 = datetime.strptime('Tue Apr 03 18:00:04 +0000 2012', fmt)
## 不同时间格式
fmt = '%Y-%m-%dT%H:%M:%SZ'
d1 = datetime.strptime('2010-10-18T22:17:43Z', fmt)
d2 = datetime.strptime('2010-10-19T23:55:27Z', fmt)
# a = (d2-d1).days # 计算天数
a = (d2 - d1).total_seconds()//60 # total_seconds() 计算秒数
# 在datetime中没有专门的模块来计算分钟间隔,因此需要⽤秒数进⾏换算
2. tensorboard 使用方法
tensorboard 的版本必须在1.15及以上
环境:python 3.6, pytorch 1.6, tensorboard 2.5
conda install tensorboard=2.5
# 使用说明
from torch.utils.tensorboard import SummaryWriter
# 训练函数里添加: (项目下只有scalar_example文件)
writer = SummaryWriter('./scalar_example/log')
# 循环完一次
writer.add_scalar('loss', epoch_loss, epoch_num)
writer.add_scalar('precision', precision, epoch_num)
# 在后台中,进入对应环境,打开生成的链接即可
(GNN_two) H:\>cd /project2/MA-GNN-main
(GNN_two) H:\project2\MA-GNN-main>tensorboard --logdir=./scalar_example/log
在本地浏览器打开服务器上的tensorboard
## 远程服务器终端输入:
tensorboard --logdir=log_dir --port=6006
## 本地主机终端输入:(6006为端口号)
ssh -L 16006:127.0.0.1:6006 服务器登录名@服务器IP
## 本地主机打开浏览器:
http://127.0.0.1:16006/
3. 去除噪音数据
提示:针对推荐数据集进行分析,去除用户历史记录低于10且大于1000,去除被访问的item次数低于10
# 取 user ID < 10000
df = df.loc[df['user'] < 10000]
# item 出现的次数 [1 4, 4 6, ....]
list3 = df['item'].value_counts()
list4 = list3[list3.values > 10].index # values 是次数 index是item ID
df = df[(df['item'].isin(list4))] # 只取list4 的item ID
list1 = df['user'].value_counts()
list2 = list1[(list1.values > 10) & (list1.values < 1000)].index
df = df[(df['user'].isin(list2))]
4. Dataframe 中字符串对应编号
提示:解决对字符串映射为int型
# 提取用户ID
list_user = df['user'].unique()
# 将用户ID设为字典 key值
dic1 = dict.fromkeys(list_user)
# 以此对应编号
for m in range(len(list_user)):
dic1[list_user[m]] = m
df['user'] = df['user'].map(dic1)
5. 删除某列或某行
删除某列
# 通过labels参数和 axis参数
data.drop('time',axis = 1,inplace = True) #axis参数默认为0
# 通过columns参数
data.drop(columns = ['time','user'],inplace = True)
data.head()
删除行
# 通过labels,axis默认为0
ata.drop([0,1,5],inplace = True)
# 通过index参数
data.drop(index = [7,41,53],inplace = True)
data.head()
根据条件删除【根据反选来取值】
# 采用 == 筛选特定行
df = df[~(df['user'] == '0')]
df = df[~((df['user'] == '1') & (df['id'] == 18))]
df = df[~((df['user'] == '1') | (df['id'] == 18))]
# 采用isin()筛选特定行
df = df[~df['user'].isin(['1','2'])]
# & | 使用同上,且 == 和 isin 可混合使用
6. 删除只要为空值的行
# 删除任意行
df.dropna(axis=0, how='any')
# 删除 time 中为 nan 的行
df['time'] = df['time'].astype(str)
df = df[~(df['time'] == 'nan')]
print(df)