标签: data-science

基于其他数据框向 Pandas 数据框添加新列

我正在尝试在 Pandas 数据框中设置一个新列(实际上是两列),数据来自其他数据框。

我有以下两个数据框(它们是用于此目的的示例,原始数据框要大得多):

In [116]: df0
Out[116]:     
   A  B  C
0  0  1  0
1  2  3  2
2  4  5  4
3  5  5  5


In [118]: df1
Out[118]: 
   A  D  E
0  2  7  2
1  6  5  5
2  4  3  2
3  0  1  0
4  5  4  6
5  0  1  0
Run Code Online (Sandbox Code Playgroud)

我想有一个新的数据框(或添加到 df0,无论如何),如下所示:

df2: 
   A  B  C  D  E
0  0  1  0  1  0
1  2  3  2  7  2
2  4 …
Run Code Online (Sandbox Code Playgroud)

python machine-learning dataframe pandas data-science

5
推荐指数
1
解决办法
7071
查看次数

从 Spark 中的类别列表创建一个热编码向量

如果我有包含 5 个类别(A、B、C、D、E)的数据和一个客户数据集,其中每个客户可以属于一个、多个或不属于任何一个类别。我怎样才能获取这样的数据集:

id, categories
1 , [A,C]
2 , [B]
3 , []
4 , [D,E]
Run Code Online (Sandbox Code Playgroud)

并将类别列转换为一个热编码向量,如下所示

id, categories, encoded
1 , [A,C]     , [1,0,1,0,0]
2 , [B]       , [0,1,0,0,0]
3 , []        , [0,0,0,0,0]
4 , [D,E]     , [0,0,0,1,1]
Run Code Online (Sandbox Code Playgroud)

有没有人在火花中找到一种简单的方法来做到这一点?

java scala apache-spark data-science

5
推荐指数
2
解决办法
1411
查看次数

用于数据科学应用的Scala IDE(如RStudio/Spyder/Rodeo)

随着Spark的兴起,Scala作为数据科学应用程序首选的编程语言获得了巨大的发展势头.

为了提高数据科学应用程序的工作效率,已经发布了专门的IDE

Scala有类似的东西吗?

ide scala data-science

5
推荐指数
1
解决办法
1544
查看次数

如何使用pandas从数据集中随机选择行?

我有一个36k行的数据集.我想用pandas从它中随机选择9k行.我该如何完成这项任务?

pandas scikit-learn data-science

5
推荐指数
2
解决办法
2753
查看次数

来自 Pandas.DataFrames 列表的 Xarray.DataSet

我有多个文件需要分析。首先,我将它们读入 BitString.Bits 列表。然后我将每个文件位拆分为我想要查看的特定部分并将它们保存到 Pandas.DataFrames 列表中。每个文件一个 DF。

现在为了进一步的绘图和分析目的,我想将所有数据存储在一个 Xarray.Dataset 中,其中我将 DataFrames 沿第三个轴堆叠,名称为“数据集”。

我试图将每个 DataFrame 连接到一个 DataSet:

xr.concat(data_df[:], dim="dataset")
Run Code Online (Sandbox Code Playgroud)

但我收到一个错误,说我不能连接 DataArray 或 DataSets 以外的东西。我可以将 DataFrame 动态转换为 DataArrays 吗?

谢谢你的帮助!

来自德国的问候

python numpy scipy data-science python-xarray

5
推荐指数
1
解决办法
1026
查看次数

sklearn 高斯过程回归器中的优化器调优

我正在尝试使用GaussianProcessRegressor 作为 scikit-learn 0.18.1 的一部分

我正在训练 200 个数据点,并为我的内核使用 13 个输入特征 - 一个常数乘以具有十二个元素的径向基函数。该模型运行时没有任何抱怨,但如果我多次运行相同的脚本,我会注意到有时会得到不同的解决方案。可能值得注意的是,一些优化的参数正在运行到我提供的范围内(我目前正在研究哪些功能很重要)。

我尝试将参数n_restarts_optimizer增加到 50,虽然这需要更长的时间来运行,但并没有消除明显的随机性元素。虽然我没有运气,但似乎可以更改优化器本身。从快速扫描来看,语法上最相似的是 scipy's fmin_tncand fmin_slsqp(其他优化器不包括边界)。但是,使用其中任何一个都会导致其他问题:例如,fmin_tnc不会返回目标函数的最小值。

关于如何拥有更具确定性的脚本有什么建议吗?理想情况下,无论迭代如何,我都希望它打印相同的值,因为就目前而言,它感觉有点像彩票(因此得出任何结论都是有问题的)。

我正在使用的代码片段:

from sklearn.gaussian_process import GaussianProcessRegressor as GPR
from sklearn.gaussian_process.kernels import RBF, ConstantKernel as C

lbound = 1e-2
rbound = 1e1
n_restarts = 50
n_features = 12 # Actually determined elsewhere in the code
kernel = C(1.0, (lbound,rbound)) * RBF(n_features*[10], (lbound,rbound))
gp = GPR(kernel=kernel, n_restarts_optimizer=n_restarts)
gp.fit(train_input, train_outputs)
test_model, sigma2_pred = gp.predict(test_input, return_std=True)
print gp.kernel_
Run Code Online (Sandbox Code Playgroud)

python machine-learning scikit-learn data-science

5
推荐指数
1
解决办法
1953
查看次数

Python .loc混淆

我正在使用Datacamp平台为Titanic做Kaggle教程。

我知道在熊猫中使用.loc-使用列标签按行选择值...

我感到困惑的是,在Datacamp教程中,我们想在“性别”列中找到所有“男性”输入,并将其替换为0。他们使用以下代码来做到这一点:

titanic.loc[titanic["Sex"] == "male", "Sex"] = 0
Run Code Online (Sandbox Code Playgroud)

有人可以解释一下它如何工作吗?我以为.loc接受行和列的输入,那么==的作用是什么?

不应该是:

titanic.loc["male", "Sex"] = 0
Run Code Online (Sandbox Code Playgroud)

谢谢!

python pandas data-science kaggle

5
推荐指数
1
解决办法
473
查看次数

如何使用dplyr计算R中的分组z得分?

使用iris数据集,我试图为每个变量计算z得分。通过执行以下操作,我得到的数据格式整齐:

library(reshape2)
library(dplyr)
test <- iris
test <- melt(iris,id.vars = 'Species')
Run Code Online (Sandbox Code Playgroud)

这给了我以下内容:

  Species     variable value
1  setosa Sepal.Length   5.1
2  setosa Sepal.Length   4.9
3  setosa Sepal.Length   4.7
4  setosa Sepal.Length   4.6
5  setosa Sepal.Length   5.0
6  setosa Sepal.Length   5.4
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试为每个组创建一个z分数列(例如Sepal.Length的z分数与Sepal。Width的z分数不兼容)时,请使用以下命令:

test <- test %>% 
  group_by(Species, variable) %>% 
  mutate(z_score = (value - mean(value)) / sd(value))
Run Code Online (Sandbox Code Playgroud)

所得的z得分尚未分组,并且基于所有数据。

使用dpylr按组返回z分数的最佳方法是什么?

非常感谢!

r dplyr data-science

5
推荐指数
2
解决办法
4578
查看次数

Pandas 选择最近 20 天的数据。

我有一个简单的问题,我似乎找不到严格的答案。

假设我有一个包含日期、开盘价、最高价、最低价、收盘价和成交量的数据框。

我要做的是首先找到我可以使用的当前日期:

today = pd.datetime.today().date()
Run Code Online (Sandbox Code Playgroud)

我的问题是从当前日期选择过去 20 天的数据。

我需要选择最后 20 行,因为我需要在此数据集的近列中找到最高和最低值。

任何指针都会有很大帮助。我在谷歌上搜索了一段时间,并不断找到不同的答案。

谢谢!

python pandas data-science

5
推荐指数
2
解决办法
4231
查看次数

如何对咸菜对象使用requirements.txt或类似内容

问题

我如何转储带有其自身依赖项的pickle对象?

泡菜对象通常是从笔记本生成的。

我尝试virtualenv为笔记本创建跟踪依赖关系的方法,但是这样我不仅获得了pickle对象的导入,而且还获得了应用程序其他位置使用的更多对象,这虽然足够好,但不是最佳解决方案。

背景

我正在努力实现的目标

我正在尝试建立MLOps流。快速说明:MLOps是一个流行语,它是用于机器学习的DevOps的同义词。不同公司提供了不同的PaaS / SaaS解决方案,它们通常解决以下问题:

  • 通过模型自动创建Web API
  • 处理要求/依赖性
  • 用于生成模型,二进制模型和数据集的存储和运行脚本。

我将跳过存储部分,重点介绍前两个部分。

我如何努力实现

就我而言,我试图使用良好的旧TeamCity建立此流程,其中模型是sk-learn生成的咸菜对象。要求是:

  • 依赖关系必须明确定义
  • 必须支持其他泡菜对象(而不是sk-learn)。
  • 数据科学家的工作流程将如下所示:
    • 数据科学家用上载了pickle模型requirements.txt
    • 数据科学家提交一个定义文件,如下所示:
     apiPort: 8080
     apiName: name-tagger
     model: model-repository.internal/model.pickle
     requirements: model-repository.internal/model.requirements
     predicterVersion: 1.0
    
    Run Code Online (Sandbox Code Playgroud)
    • 其中预测器是具有自己的FLASK应用程序requirements.txt。它是pickle模型的API包装器/层,将模型加载到内存中并提供来自其余端点的预测。

然后,TeamCity中的构建配置将解析该文件并执行以下操作:

  1. 解析定义文件。
  2. 查找预测代码
  3. 将pickle模型复制为预测器应用程序根文件夹中的model.pickle
  4. requirements.txt将预测器与requirements.txt泡菜模型合并
  5. 创建virtualenv,安装依赖项,将其推入

作为流的输出,我有一个包含REST API的程序包,该API使用了pickle模型并暴露给定义的端口。

python dependencies pickle devops data-science

5
推荐指数
1
解决办法
177
查看次数