我有一个大型数据集(约 5 Mio 行),其中包含机器学习训练的结果。现在我想检查结果是否达到“目标范围”。假设这个范围包含-0.25和之间的所有值+0.25。如果它在这个范围内,那么它就是a Hit,如果它低于Low并且在另一边High。
我现在将创建这三列 Hit、Low、High 并计算适用条件的每一行并将 a 放入1该列中,其他两列将变为0。之后,我将对这些值进行分组并进行总结。但我怀疑一定有更好更快的方法,比如分组时直接计算。
import pandas as pd
df = pd.DataFrame({"Type":["RF", "RF", "RF", "MLP", "MLP", "MLP"], "Value":[-1.5,-0.1,1.7,0.2,-0.7,-0.6]})
+----+--------+---------+
| | Type | Value |
|----+--------+---------|
| 0 | RF | -1.5 | <- Low
| 1 | RF | -0.1 | <- Hit
| 2 | RF | 1.7 | <- High
| 3 | MLP | 0.2 | <- …Run Code Online (Sandbox Code Playgroud) 拿到了一台新的公司笔记本电脑并尝试安装 tidyr 或 installr,但由于 magrittr 总是失败。
\n如果我想直接安装此软件包,我会收到以下错误代码:
\n* installing *source* package 'magrittr' ...\n** package 'magrittr' successfully unpacked and MD5 sums checked\n** libs\n\n*** arch - i386\nWarning: running command 'make -f "C:/PROGRA~1/R/R-33~1.1/etc/i386/Makeconf" -f "C:/PROGRA~1/R/R-33~1.1/share/make/winshlib.mk" SHLIB="magrittr.dll" OBJECTS="pipe.o utils.o"' had status 127\nERROR: compilation failed for package 'magrittr'\n* removing 'C:/Users/xxxx/Documents/R/win-library/3.3/magrittr'\nWarning in install.packages :\n running command '"C:/PROGRA~1/R/R-33~1.1/bin/x64/R" CMD INSTALL -l "C:\\Users\\xxxx\\Documents\\R\\win-library\\3.3" C:\\Users\\xxxx\\AppData\\Local\\Temp\\1\\RtmpMHlNI9/downloaded_packages/magrittr_2.0.1.tar.gz' had status 1\nWarning in install.packages :\n installation of package \xe2\x80\x98magrittr\xe2\x80\x99 had non-zero exit status\nRun Code Online (Sandbox Code Playgroud)\n我没有这台计算机的管理员权限,可以想象这可能是问题的根源,但我不确定。
\n我尝试过的:
\n我有一个大型数据集,其值称为CPE,百分比为PERC。在现实世界中,它略有不同,但我将其减少到必要的最低限度。
| CPE| PERC|
|---:|---------:|
| 42| 0.1132664|
| 264| 0.9260718|
| 470| 0.3732287|
| 316| 0.7437126|
| 9| 0.5819554|
| 114| 0.2052649|
Run Code Online (Sandbox Code Playgroud)
现在我想过滤。较小的量CPE需要较高的量PERC才能聚焦。
我当然可以这样做:
df[(CPE > 20 & PERC > 0.95) |
(CPE > 50 & PERC > 0.9) |
(CPE > 100 & PERC > 0.85) |
(CPE > 250 & PERC > 0.8)]
Run Code Online (Sandbox Code Playgroud)
但由于现实世界中可能有更多,而且它们可能会不时变化,因此我正在寻找一种更简单、更动态的解决方案。
就像创建一个包含所有组合的列表,然后使用每个组合作为过滤条件对。
list(c(20, 0.95), c(50, 0.9), c(100,0.85), c(250,0.8))
Run Code Online (Sandbox Code Playgroud)
有聪明的方法来处理这个问题吗?即使我更喜欢data.table,dplyr也很棒。这不是一个列表,我对任何类似的方法持开放态度。
微量元素
library(data.table)
set.seed(33) …Run Code Online (Sandbox Code Playgroud) 我有一个脚本,它每小时收集数据并使用 Plotly Dash 将其可视化。
import dash
import dash_core_components as dcc
import dash_html_components as html
from dash.dependencies import Input, Output
import plotly.express as px
import pandas as pd
df = pd.read_csv("/home/pi/backup/data/data.csv").sort_values(by="Number")
df["Datetime"] = df["Datetime"].str.replace("T", " ").str.replace("Z", "")
df["Datetime"] = pd.to_datetime(df["Datetime"], format="%Y-%m-%d %H:%M:%S")
df["Datetime"] = df["Datetime"].dt.floor("H")
grouped = df.groupby(["Datetime", "Number", "Shop"]).min().reset_index()
app = dash.Dash(__name__)
tabs_styles = {
'height': '30px'
}
tab_style = {
'borderBottom': '1px solid #d6d6d6',
'padding': '6px',
'fontWeight': 'bold'
}
tab_selected_style = {
'borderTop': '1px solid #d6d6d6',
'borderBottom': '1px solid …Run Code Online (Sandbox Code Playgroud)