我有两个数据帧看起来像
DF1:
ID A B C D
0 'ID1' 0.5 2.1 3.5 6.6
1 'ID2' 1.2 5.5 4.3 2.2
2 'ID1' 0.7 1.2 5.6 6.0
3 'ID3' 1.1 7.2 10. 3.2
Run Code Online (Sandbox Code Playgroud)
DF2:
ID A B C D
0 'ID1' 1.0 2.0 3.3 4.4
1 'ID2' 1.5 5.0 4.0 2.2
2 'ID3' 0.6 1.2 5.9 6.2
3 'ID4' 1.1 7.2 8.5 3.0
Run Code Online (Sandbox Code Playgroud)
df1可以有多个相同的条目,ID而每个条目ID只在df2中出现一次.同样不是IDdf2中的所有都必须存在于df1中.我无法通过使用set_index()df1中的多行来解决这个问题ID,并且IDdf1和df2中没有对齐.
我想创建一个新的数据帧,我根据匹配ID 减去df2[['A','B','C','D']]from中的值df1[['A','B','C','D']]. …
我scikit-learn在 Jupyter 笔记本中导入时遇到问题,我不知道为什么这不起作用。我不记得以前使用其他软件包时遇到过这个问题。我已经看到几个线程与这个特定模块有类似问题的人有类似的问题,但是建议的检查都没有解决我的问题,也没有告诉我可能有什么问题。我试图在下面添加尽可能多的信息,试图找出为什么这拒绝工作。
我使用 anaconda 来管理我的包,scikit-learn安装方式如下:
source activate python3
conda install scikit-learn
Fetching package metadata .............
Solving package specifications: .
# All requested packages already installed.
# packages in environment at /Users/overaa/anaconda/envs/python3:
#
scikit-learn 0.19.1 py36hffbff8c_0
Run Code Online (Sandbox Code Playgroud)
现在,如果我直接从命令行启动 python 会话,import sklearn将按预期工作并且模块已正确导入。在 Jupyter 中做同样的事情会导致
ModuleNotFoundError: No module named 'sklearn'
我已经检查了很多东西。首先,确保我的 jupyter 和 jupyter-notebook 指向正确的环境
which jupyter
/Users/user_name/anaconda/envs/python3/bin/jupyter
which jupyter-notebook
/Users/user_name/anaconda/envs/python3/bin/jupyter-notebook
Run Code Online (Sandbox Code Playgroud)
所以笔记本检查出来了。
然后从命令行 python 会话(在与我启动笔记本的环境相同的环境中):
>>> import sklearn
>>> sklearn.__file__
'/Users/user_name/anaconda/envs/python3/lib/python3.6/site_packages/sklearn/__init__.py'
Run Code Online (Sandbox Code Playgroud)
所以scikit-learn也安装在正确的环境中。
现在比较我正在运行相同的版本;
从命令行:
>>> …Run Code Online (Sandbox Code Playgroud) 我对 Bokeh 还是有点陌生,并且遇到了一个无法解决的问题。
我有一个散景图,在两个单独的图中可视化一些流数据。由于各种原因,绘图的用户可能希望在单击按钮时清除当前数据点的两个绘图。
清除数字的好方法是什么?我还没有找到好的解决方案。
我的代码看起来像这样:
#Defining plots
plot_data = ColumnDataSource(dict(x=[],y=[],z=[]))
p = figure(plot_height = 600, plot_width = 800,
x_axis_label = 'X',
y_axis_label = 'Y')
p2 = figure(plot_height = 600, plot_width = 800,
x_axis_label = 'X',
y_axis_label = 'Z')
doc = curdoc()
Run Code Online (Sandbox Code Playgroud)
数据源在异步循环中更新:
async def loop():
while True:
data = await socket.recv_pyobj()
new_data = get_last_data(data)
#update ColumnDataSource
doc.add_next_tick_callback(partial(update,new_data))
doc.add_root(column(gridplot([p,p2], plot_width=1000)))
try:
testloop = IOLoop.current()
testloop.spawn_callback(loop)
except KeyboardInterrupt:
testloop.close()
Run Code Online (Sandbox Code Playgroud)
ColumnDataSource当流中出现新数据点(解析为数据帧)时,将通过以下函数进行更新
def update(new_data):
input_data = dict(x=new_data['x'], y=new_data['y'], z=new_data['z'])
plot_data.stream(input_data, rollover=500)
Run Code Online (Sandbox Code Playgroud)
我通过单击按钮清除数字的最初想法如下: …