使用时XGBoost我们需要将分类变量转换为数字.
以下方法之间的绩效/评估指标是否会有任何差异:
也:
是否有任何理由不使用例如方法2 labelencoder?
我正在尝试从 PyCharm 切换到 VS Code。我现在找不到在调试时以表格格式查看我的 Pandas DataFrame 的方法。
当我右键单击 df 对象时,没有查看选项。
我已经下载了 python 扩展。我错过了什么吗?
我正在使用以下查询:
Select
S.MDSE_ITEM_I,
S.CO_LOC_I,
MAX(S.SLS_D) as MAX_SLS_D,
MIN(S.SLS_D) as MIN_SLS_D,
sum(S.SLS_UNIT_Q) as SLS_UNIT_Q,
MIN(PRSMN_VAL_STRT_D) as PRSMN_VAL_STRT_D,
MIN(PRSMN_VAL_END_D) as PRSMN_VAL_END_D,
MIN(RC.FRST_RCPT_D) as FRST_RCPT_D,
MIN(RC.CURR_ACTV_FRST_OH_D) as CURR_ACTV_FRST_OH_D,
MIN(H.GREG_D) as OH_GREG_D
from
eefe_lstr4.SLS_TBL as S
left outer join
eefe_lstr4.PRS_TBL P
on S.MDSE_ITEM_I = P.MDSE_ITEM_I
and S.CO_LOC_I = P.CO_LOC_I
and S.SLS_D between PRSMN_VAL_STRT_D and PRSMN_VAL_END_D
left outer join
eefe_lstr4.OROW_RCPT RC
on RC.MDSE_ITEM_I =S.MDSE_ITEM_I
and RC.CO_LOC_I = S.CO_LOC_I
left outer join
eefe_lstr4.OH H
on H.MDSE_ITEM_I =S.MDSE_ITEM_I
and H.CO_LOC_I = S.CO_LOC_I
group by
S.MDSE_ITEM_I,
S.CO_LOC_I;
Run Code Online (Sandbox Code Playgroud)
我收到错误说: …
我想以正常可读的文本格式将 Spark 数据帧存储到 Hive 表中。为此,我首先做了
sqlContext.sql("SET spark.sql.hive.convertMetastoreParquet=false")
Run Code Online (Sandbox Code Playgroud)
我的数据帧是这样的:
final_data1_df = sqlContext.sql("select a, b from final_data")
Run Code Online (Sandbox Code Playgroud)
我正在尝试通过以下方式编写它:
final_data1_df.write.partitionBy("b").mode("overwrite").saveAsTable("eefe_lstr3.final_data1")
Run Code Online (Sandbox Code Playgroud)
但这非常慢,甚至比HIVE table write还要慢。所以为了解决这个问题,我想通过 Hive DDL 语句定义分区,然后加载如下数据:
sqlContext.sql("""
CREATE TABLE IF NOT EXISTS eefe_lstr3.final_data1(
a BIGINT
)
PARTITIONED BY (b INT)
"""
)
sqlContext.sql("""
INSERT OVERWRITE TABLE eefe_lstr3.final_data1 PARTITION (stategroup)
select * from final_data1""")
Run Code Online (Sandbox Code Playgroud)
但这提供了分区的 Hive 表,但仍然是镶木地板格式的数据。我在这里错过了什么吗?
如何转换字典元组,如下例所示:
({(1, 2): 3},
{(1, 3): 5},
{(1, 4): 5},
{(2, 4): 5},
{(1, 5): 10},
{(2, 6): 9},
{(1, 6): 9},
{(2, 1): 2},
{(2, 2): 3},
{(2, 3): 5},
{(2, 5): 10},
{(1, 1): 2})
Run Code Online (Sandbox Code Playgroud)
更简单的形式,如字典:
{(1, 1): 2,
(1, 2): 3,
(1, 3): 5,
(1, 4): 5,
(1, 5): 10,
(1, 6): 9,
(2, 1): 12,
(2, 2): 7,
(2, 3): 7,
(2, 4): 3,
(2, 5): 4,
(2, 6): 2}
Run Code Online (Sandbox Code Playgroud) 我正在使用data.table 1.9.6.这是一些简单的代码和输出:
df <- data.table(a=c(NA,NA,2,2),b=c(1,1,2,2))
nrow(df[is.na(a)]) + nrow(df[!is.na(a)])
# [1] 4
nrow(rbind(df[is.na(a)],df[!is.na(a)]))
# [1] 4
nrow(rbind(df[is.na(a),b := a],df[!is.na(a)]))
# [1] 6
rbind(df[is.na(a),b := a],df[!is.na(a)])
# a b
# 1: NA NA
# 2: NA NA
# 3: 2 2
# 4: 2 2
# 5: 2 2
# 6: 2 2
rbind(df[is.na(a),a := b],df[!is.na(a)])
# a b
# 1: NA NA
# 2: NA NA
# 3: 2 2
# 4: 2 2
# 5: 2 2
# 6: 2 …Run Code Online (Sandbox Code Playgroud) 我有这个虚拟数据集:
abc <- data.table(a = c("NA", "bc", "x"), b = c(1, 2, 3), c = c("n", "NA", "NA"))
Run Code Online (Sandbox Code Playgroud)
我试图用标准NA替换"NA"; 使用data.table到位.我试过了:
for(i in names(abc)) (abc[which(abc[[i]] == "NA"), i := NA])
for(i in names(abc)) (abc[which(abc[[i]] == "NA"), i := NA_character_])
for(i in names(abc)) (set(abc, which(abc[[i]] == "NA"), i, NA))
Run Code Online (Sandbox Code Playgroud)
但仍然有这个我得到:
abc$a
"NA" "bc" "x"
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
编辑:我在这个问题中尝试了@frank的答案type.convert().(谢谢坦率;不知道这种模糊但有用的功能)在文档中type.convert()提到:"这主要是read.table的辅助函数." 所以我想彻底测试一下.当您有一个填充"NA"(NA字符串)的完整列时,此功能会产生较小的副作用.在这种情况下type.convert(),将列转换为逻辑列.对于这种情况abc将是:
abc <- data.table(a = c("NA", "bc", "x"), b = c(1, 2, 3), c = c("n", "NA", …Run Code Online (Sandbox Code Playgroud) python ×3
data.table ×2
r ×2
apache-spark ×1
dataframe ×1
dictionary ×1
hadoop ×1
hive ×1
hiveql ×1
pandas ×1
pyspark ×1
rbind ×1
sql ×1
tuples ×1
xgboost ×1