小编Sla*_*vka的帖子

dplyr和POSIXlt数据存在问题

我有个问题.我下载了数据并将日期转换为POSIXlt格式

df<-read.csv("007.csv", header=T, sep=";")
df$transaction_date<-strptime(df$transaction_date, "%d.%m.%Y")
df$install_date<-strptime(df$install_date, "%d.%m.%Y")
df$days<- as.numeric(difftime(df$transaction_date,df$install_date, units = "days"))
Run Code Online (Sandbox Code Playgroud)

数据框是关于一个在线游戏中的交易.它包含值(支付),transaction_date,intall_date和ID.我添加了新列,安装后显示.我试图使用dlyr汇总数据

df2<-df %>% group_by(days) %>% summarise(sum=sum(value))

我有一个错误:错误:列'transaction_date'具有不受支持的类型:POSIXlt,POSIXt

我该如何解决?

UPD.我将Date列的类更改为Character.它解决了问题.但是我可以使用dlyr而不更改我的数据集中的类吗?

r dplyr posixlt

23
推荐指数
2
解决办法
2万
查看次数

pytorch DataLoader 第一个时代非常慢

当我创建一个 PyTorch DataLoader 并开始迭代时——我得到了一个非常慢的第一个纪元(x10--x30 比所有下一个纪元都慢)。此外,此问题仅出现在来自 Kaggle 的 Google 地标识别 2020 的训练数据集上。我无法在合成图像上重现此内容,此外,我尝试创建一个包含来自 GLR2020 的 500k 图像的文件夹,并且一切正常。在PyTorch论坛中发现了几个类似的问题,没有任何解决办法。

import argparse
import pandas as pd
import numpy as np
import os, sys
import multiprocessing, ray
import time
import cv2
import logging
import albumentations as albu
from torch.utils.data import Dataset, DataLoader

samples = 50000 # count of samples to speed up test
bs = 64 # batch size
dir = '/hdd0/datasets/ggl_landmark_recognition_2020/train' # directory with train data
all_files = pd.read_csv('/hdd0/datasets/ggl_landmark_recognition_2020/train.csv')
files = np.random.choice(all_files.id.values, 50000)
files = …
Run Code Online (Sandbox Code Playgroud)

python multiprocessing pytorch dataloader

11
推荐指数
1
解决办法
3212
查看次数

xgboost 中的映射评估指标

我试图MAPE在 xgboost 中用作评估指标,但得到奇怪的结果:

def xgb_mape(preds, dtrain):
   labels = dtrain.get_label()
   return('mape', np.mean(np.abs((labels - preds) / (labels+1))))

xgp = {"colsample_bytree": 0.9, 
   "min_child_weight": 24, 
   "subsample": 0.9, 
   "eta": 0.05, 
   "objective": "reg:linear", 
   "seed": 70}

cv = xgb.cv(params = xgp, 
        dtrain = xgb.DMatrix(train_set[cols_to_use], label=train_set.y),
        folds = KFold(n = len(train_set), n_folds=4, random_state = 707, shuffle=True),
        feval = xgb_mape,
        early_stopping_rounds=10,
        num_boost_round=1000,
        verbose_eval=10,
        maximize=False
        )
Run Code Online (Sandbox Code Playgroud)

它返回:

[0]     train-mape:0.780683+0.00241932  test-mape:0.779896+0.0024619
[10]    train-mape:0.84939+0.0196102    test-mape:0.858054+0.0184669
[20]    train-mape:1.0778+0.0313676     test-mape:1.10751+0.0293785
[30]    train-mape:1.26066+0.0343771    test-mape:1.30707+0.0323237
[40]    train-mape:1.37713+0.0347438    test-mape:1.43339+0.030565
[50]    train-mape:1.45653+0.042433     test-mape:1.52176+0.0383677
[60]    train-mape:1.52268+0.0386395    test-mape:1.5909+0.0353497 …
Run Code Online (Sandbox Code Playgroud)

python xgboost

7
推荐指数
1
解决办法
5287
查看次数

为pandas中的groupby计算nunique()

我有一个带列的数据框:

  1. diff - 注册日期和付款日期之间的差异,以天为单位
  2. country - 用户国家
  3. user_id
  4. campaign_id -- 另一个分类列,我们将在 groupby 中使用它

我需要为每个具有<=n 的country+campaign_id组计算不同的用户diff数。例如,对于country'A'、campaign'abc' 和diff7,我需要从country'A'、campaign'abc' 和diff <= 7 中

我目前的解决方案(如下)工作时间太长

import pandas as pd
import numpy as np

## generate test dataframe
df = pd.DataFrame({
        'country':np.random.choice(['A', 'B', 'C', 'D'], 10000),
        'campaign': np.random.choice(['camp1', 'camp2', 'camp3', 'camp4', 'camp5', 'camp6'], 10000),
        'diff':np.random.choice(range(10), 10000),
        'user_id': np.random.choice(range(1000), 10000)
        })
## main
result_df = pd.DataFrame()
for diff in …
Run Code Online (Sandbox Code Playgroud)

python pandas pandas-groupby

6
推荐指数
2
解决办法
1万
查看次数

如何释放 Pyspark 会话中的内存

这是我的代码示例:

ses = SparkSession.Builder().config(conf=conf).enableHiveSupport().getOrCreate()
res = ses.sql("select * from tbl")
res.write.format("hive").saveAsTable("tablename"), mode='append')
res.unpersist()
Run Code Online (Sandbox Code Playgroud)

但执行后htop发现,该进程使用了​​63GB RAM。我也尝试过ses.catalog.clearCache(),什么也没有,仍然使用了 63GB。

如何在不重新初始化 Spark 会话的情况下释放内存?

编辑。我还尝试删除res对象,htop 中仍然有 63GB。也尝试过这个,它什么也没打印:

for (id, rdd) in ses.sparkContext._jsc.getPersistentRDDs().items():
    print(id, rdd)
Run Code Online (Sandbox Code Playgroud)

python apache-spark pyspark

6
推荐指数
0
解决办法
6432
查看次数

更改ipywidgets.DatePicker的日期格式

如何从ipywidgets更改DatePicker的日期格式?默认格式为“ mm / dd / yyyy”,我想将其设置为“ yyyy-mm-dd”吗?

python datepicker ipywidgets

5
推荐指数
0
解决办法
560
查看次数

如何在循环中更改数据框中的列名?

我有10个(例如)具有相似名称的数据帧,如df1,df2,df3,...有10列我想在每个数据帧中给出第10列的名称,如数据帧名称(df1中的第10列必须有"df1")名称,在df2 - "df2"等)

我试过这个

for (i in paste0("df",1:10)){
     assign(names(get(i))[10],
            value=i
            )
     }
Run Code Online (Sandbox Code Playgroud)

但没有改变我怎样才能解决这个问题?

loops r dataframe assign

2
推荐指数
1
解决办法
8290
查看次数

R中的attach()问题

我在R中有一个列表,我附上了.

> attach(myList)
> summary(myList)
            Length Class      Mode     
grData      3      data.frame list     
maxDate     1      POSIXct    numeric  
query       1      -none-     character
newData     3      data.frame list     
updateQuery 1      -none-     function
Run Code Online (Sandbox Code Playgroud)

好的,我的名单真的很重要

> search()
 [1] ".GlobalEnv"          "myList"          "package:xlsx"        "package:xlsxjars"   
 [5] "package:rJava"       "package:quantmod"    "package:TTR"         "package:xts"        
 [9] "package:zoo"         "package:tidyr"       "package:stringr"     "package:RPostgreSQL"
[13] "package:DBI"         "package:dplyr"       "tools:rstudio"       "package:stats"      
[17] "package:graphics"    "package:grDevices"   "package:utils"       "package:datasets"   
[21] "package:methods"     "Autoloads"           "package:base"   
Run Code Online (Sandbox Code Playgroud)

我列表中的grData数据框有11行:

> summary(myList$grData)
      date            application_id      value        
 Min.   :2016-10-01   Min.   : 7.0   Min.   :  5769  
 1st Qu.:2016-10-01   1st Qu.: …
Run Code Online (Sandbox Code Playgroud)

r summary

0
推荐指数
1
解决办法
543
查看次数

python pandas groupby复杂计算

我有df包含列的数据框:a, b, c, d。我想对数据进行分组a并进行一些计算。我将在 R 中提供这个计算的代码。我的主要问题是如何在 Pandas 中做同样的事情?

library(dplyr)
df %>%
    group_by(a) %>%
    summarise(mean_b = mean(b),
              qt95 = quantile(b, .95),
              diff_b_c = max(b-c),
              std_b_d = sd(b)-sd(d)) %>% 
    ungroup()
Run Code Online (Sandbox Code Playgroud)

这个例子是合成的,我只是想了解pandas的语法

python pandas

0
推荐指数
1
解决办法
463
查看次数