【Ubuntu系统开发工具使用技能】使用VS Code的远程Python交互式jupyter notebook窗口与数据可视化案例

发布于:2024-11-29 ⋅ 阅读:(25) ⋅ 点赞:(0)

【Ubuntu系统开发工具使用技能】使用VS Code的远程Python交互式jupyter notebook窗口与数据可视化案例。当启动 Jupyter Notebook 时,如果提示需要输入 Password or Token ,可以通过以下方法解决:

一、Python交互式jupyter notebook窗口

1. 启动时查看 Token

  • 当你运行以下命令启动 Jupyter Notebook 时:
    jupyter notebook --ip=0.0.0.0 --no-browser --port=8888

  • 终端会显示类似以下的信息:http://<ip>:8888/?token=abcdef1234567890abcdef1234567890abcdef1234567890
    在这里插入图片描述

  • 找到token值,复制该值并在浏览器中访问,例如:
    http://<ip>:8888/?token=abcdef1234567890abcdef1234567890abcdef1234567890

2. 禁用 Token 验证

如果不想每次都输入 Token,可以通过以下方法禁用:

  1. 生成配置文件 (如果没有配置文件):
    jupyter notebook --generate-config

配置文件通常位于:~/.jupyter/jupyter_notebook_config.py

编辑配置文件
使用文本编辑器打开配置文件,例如:
nano ~/.jupyter/jupyter_notebook_config.py

修改以下内容:
c.NotebookApp.token = '' # 设置为空字符串,禁用 Token
c.NotebookApp.password = '' # 如果没有设置密码,也可以清空

保存并重启 Jupyter
重新启动 Jupyter Notebook,不再需要输入 Token。

3. 设置固定密码

如果不想禁用验证,但又希望使用固定密码,可以按照以下步骤设置密码:

生成加密密码
在终端中运行以下命令:
from notebook.auth import passwd
passwd()

输入你想要设置的密码,得到类似以下加密字符串:
sha1:1234567890abcdef1234:abcdef1234567890abcdef1234567890abcdef12

编辑配置文件
~/.jupyter/jupyter_notebook_config.py 中,设置如下内容:
c.NotebookApp.password = 'sha1:1234567890abcdef1234:abcdef1234567890abcdef1234567890abcdef12'
c.NotebookApp.token = '' # 可选,清空 Token

重启 Jupyter
现在,你可以使用设置的固定密码访问 Notebook。


4. 通过 SSH 隧道避免直接访问

为了安全起见,推荐通过 SSH 隧道进行访问,不需要在公网暴露端口:
ssh -L 8888:localhost:8888 <user>@<remote_ip>

然后在本地浏览器中访问:
http://localhost:8888


选择设置固定密码或者 禁用 Token 验证 ,可以简化访问流程,同时确保安全性。

二、在 Jupyter Notebook 中遇到 Permission denied问题解决

在 Jupyter Notebook 中遇到 Permission denied 的问题通常是因为用户在无法写入的目录中创建文件。以下是可能的原因及解决方法:

1. 检查 Jupyter 启动目录的权限

Jupyter 默认在启动时使用当前的工作目录作为根目录。如果该目录对当前用户没有写权限,就会报错。

解决方法

  • 确认 Jupyter 的启动目录:

    pwd

  • 检查该目录的权限:

ls -ld .

确保当前用户对该目录有写权限。如果没有权限,修改权限:
sudo chmod u+w /path/to/directory

  • 或者,启动 Jupyter 时指定一个有写权限的目录:

    jupyter notebook --notebook-dir=/path/to/writable/directory

在这里插入图片描述

2. 更改 Jupyter 的默认工作目录

如果频繁需要更改目录,可以直接设置 Jupyter 的默认工作目录:

  1. 打开 Jupyter 配置文件:
    nano ~/.jupyter/jupyter_notebook_config.py
  2. 修改以下配置,设置一个有写权限的路径:
    c.NotebookApp.notebook_dir = '/path/to/writable/directory'

3. 检查系统权限和用户身份【该方法有效】

  • 如果使用的是远程服务器,确认运行 Jupyter 的用户有足够权限。
  • 如果是通过 sudo 启动的 Jupyter Notebook,可能是权限问题导致无法写入。

解决方法

  • 确保用普通用户启动 Jupyter:

jupyter notebook

  • 如果需要运行在特定路径且当前用户没有权限,赋予该用户写权限:

    sudo chown -R <username>:<groupname> /path/to/directory

    或赋予所有用户写权限:

sudo chmod -R 777 /path/to/directory

4. 检查具体目录的权限

在报错路径 translation/Untitled.ipynb 中:

  • 确保 translation 目录存在并具有写权限:
    mkdir -p translation
    chmod u+w translation

5. 使用合适的文件系统

如果运行环境使用了外部挂载(如 NFS、Docker volume),可能出现写权限问题。

解决方法

  • 确保挂载时带有写权限参数,例如:
    mount -o rw /dev/sdX /path/to/mount

按照以上方法,重点检查和调整 Jupyter 的工作目录及路径权限,应该能解决问题。

三、数据可视化

下面是一个简单的 Python 可视化案例,使用 matplotlibseaborn 库来生成一个数据集的可视化图表。这个例子将展示如何用 Python 创建一个线图、柱状图以及分布图。

安装必要的库

首先,确保你安装了 matplotlibseaborn 库。如果没有安装,可以通过以下命令安装:

pip install matplotlib seaborn

Python 可视化案例:线图、柱状图和分布图

import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
import pandas as pd

# 创建一些样本数据

np.random.seed(0)
data = pd.DataFrame({
'x': np.linspace(0, 10, 100),
'y': np.sin(np.linspace(0, 10, 100)) + np.random.normal(0, 0.2, 100),  # 正弦波加上噪声
'category': np.random.choice(['A', 'B', 'C'], 100)
})

# 设置 Seaborn 样式

sns.set(style="darkgrid")

# 1. 线图 (Line plot)

plt.figure(figsize=(10, 6))
sns.lineplot(data=data, x='x', y='y', label='Sine wave with noise')
plt.title('Line Plot of Sine Wave with Noise')
plt.xlabel('X')
plt.ylabel('Y')
plt.legend()
plt.show()

# 2. 柱状图 (Bar plot)

plt.figure(figsize=(10, 6))
sns.barplot(x='category', y='y', data=data, ci=None)  # 不显示置信区间
plt.title('Bar Plot by Category')
plt.xlabel('Category')
plt.ylabel('Y')
plt.show()

# 3. 分布图 (Distribution plot)

plt.figure(figsize=(10, 6))
sns.histplot(data['y'], kde=True, bins=20)  # KDE:核密度估计
plt.title('Distribution Plot with KDE')
plt.xlabel('Y')
plt.ylabel('Frequency')
plt.show()

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

说明:

  1. 线图 (sns.lineplot): 绘制 xy 之间的关系,表示一个带有噪声的正弦波。
  2. 柱状图 (sns.barplot): 按类别(‘A’, ‘B’, ‘C’)绘制 y 的均值。
  3. 分布图 (sns.histplot): 显示 y 的频率分布,并通过 KDE 曲线表示数据的估计密度。

输出图示:

  1. 线图 :展示了带噪声的正弦波,x 轴表示时间或其他变量,y 轴表示相应的值。
  2. 柱状图 :按不同类别展示数据的平均值,比较各类别的差异。
  3. 分布图 :显示数据的频率分布,并通过平滑的曲线估计数据的概率分布。

网站公告

今日签到

点亮在社区的每一天
去签到