数据分析常见问题

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)
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值