今日做了一份笔试题
文档.md

题目如下:

数据-招聘测试题
多数据源数据交叉检验合并
附件数据中包含来自两家数据源 (cq, rf)的股票交易日线数据
该数据可能存在缺失,需要进行交叉检验并对比修复出可信度较高的数据。
要求:
- 筛选出其中来自于 美国(NYSE, NASDAQ) 的股票,关联不同数据源下的同一个企业,给出关联的逻辑
- 对成功关联的企业,交叉检验不同数据源下的股价数据,修复其中的缺失数据,并转化为如下形式:
  - date, open, high, low, close, volume, adj_factor
  - adj_factor 为后复权因子,计算公式为:adj_factor = close_adj / close,且首个adj_factor固定为1
- 加分项:给出对股价数据质量统计分析的 notebook 文档

文件夹下文件说明如下:
- company.csv 存储企业信息,包括id, ticker,企业名等
- Price 存储标准 OHLCV 日线数据,其中 close_adj 为经前复权调价后的股价数据

备注:
- 不要求百分百准确 关联/修复 股价数据,不过需要说明是按照什么标准来 剔除/修复 数据,评估的可信度是多少,潜在的问题是什么
- 在实际操作前务必先进行数据探索,所提供的数据足以完成该题目,解题感到困难大多是数据探索不充分导致的。


附件:
测试题数据.zip

1.安装anadonda环境

https://www.anaconda.com/download/success

安装任意目录后设置环境变量

C:\Users\<YourUsername>\Anaconda3
C:\Users\<YourUsername>\Anaconda3\Scripts
C:\Users\<YourUsername>\Anaconda3\Library\bin

验证: 关闭并重新打开命令提示符,运行以下命令,检查是否成功设置:

conda --version

如果返回 conda 的版本号,说明环境变量设置成功。

而后即可直接在cmd中使用

activate python(或环境名)

image-20241009085609631

2.安装jupyter lab

此时安装需要在管理员权限下(即使用管理员权限打开cmd)

亦可使用gpt提供方法如下

1. 打开 Anaconda Prompt

首先,打开 Anaconda Prompt,确保你已经激活了一个 Conda 环境。如果你没有创建新的环境,可以在默认的 base 环境中操作。

2. 安装 JupyterLab

在 Anaconda Prompt 中运行以下命令来安装 JupyterLab:

conda install -c conda-forge jupyterlab

这将从 conda-forge 频道安装 JupyterLab 和它的所有依赖。

3. 验证安装

安装完成后,你可以通过以下命令启动 JupyterLab:

jupyter lab

这将启动一个本地服务器,并在你的默认浏览器中打开 JupyterLab 界面。

4. 选择环境(可选)

如果你有多个 Conda 环境,可以切换到对应环境后再运行 JupyterLab。通过以下命令激活环境:

conda activate your_environment_name

然后再次运行 jupyter lab

汉化

要将 JupyterLab 界面汉化,你可以通过安装扩展包 jupyterlab-language-pack-zh-CN 来实现。这是官方提供的中文语言包,能够为 JupyterLab 提供简体中文的界面。

1. 安装中文语言包

打开 Anaconda Prompt 或终端,然后运行以下命令:

conda install -c conda-forge jupyterlab-language-pack-zh-CN

这将会从 conda-forge 安装简体中文语言包。

2. 启动 JupyterLab

安装完成后,启动 JupyterLab:

jupyter lab

JupyterLab 应该会自动识别你的系统语言,并显示中文界面。如果界面没有自动切换为中文,继续以下步骤。

3. 手动设置语言

如果界面未自动显示为中文,你可以手动设置语言:

  1. 打开 JupyterLab。
  2. 点击右上角的用户图标。
  3. 选择 Settings -> Advanced Settings Editor
  4. 在打开的 JSON 编辑器中,找到 Settings -> Language 选项,添加或修改如下配置:

    json复制代码{
        "locale": "zh-CN"
    }

保存并刷新浏览器,JupyterLab 应该显示为简体中文。

4. 问题排查

如果安装语言包后仍然没有显示中文,可以尝试清理 JupyterLab 的缓存并重新构建界面:

jupyter lab clean
jupyter lab build

这将会清除旧的缓存并重新构建界面。

配置启动目录

如果你希望修改 JupyterLab 的默认启动目录,可以按照以下步骤进行:

1. 编辑配置文件

  1. 打开 jupyter_lab_config.py 文件,找到这一行:

    # c.ServerApp.notebook_dir = ''
  2. 删除行首的 #,并将 '' 中的内容替换为你想要的默认启动目录路径。例如:

    c.ServerApp.notebook_dir = 'D:/MyProjects'

    这样,JupyterLab 每次启动时都会在 D:/MyProjects 目录中开始。

2. 保存文件并重启 JupyterLab

编辑完成后,保存文件,重新启动 JupyterLab:

jupyter lab

3. 使用相对路径

你也可以使用相对路径,比如将 JupyterLab 启动在当前终端的工作目录下:

c.ServerApp.notebook_dir = '.'

这样,JupyterLab 会从你当前所在的终端路径启动。

4. 避免使用路径中的空格

如果路径中有空格,建议使用双引号并确保路径正确,例如:

c.ServerApp.notebook_dir = "C:/Users/YourUsername/Documents/My Projects"

通过以上步骤,你可以成功设置和查看 JupyterLab 的默认启动目录

此时gpt提供一个类似答案:

c.NotebookApp.notebook_dir = 'D:/MyProjects' 那这个是啥

ChatGPT 说:

c.NotebookApp.notebook_dir = 'D:/MyProjects' 这一行配置是用来设置 Jupyter Notebook(而不是 JupyterLab)的默认启动目录的配置项。

这表示如果你是在 jupyter notebook 环境下启动,而不是 jupyter lab,Jupyter Notebook 会将默认工作目录设置为 D:/MyProjects

解释:

  • JupyterLabJupyter Notebook 是两个不同的界面和工具,但它们共享一些配置项。例如,notebook_dir 用于设置默认启动目录。
  • c.ServerApp.notebook_dir 是 JupyterLab 的相关配置,用于设置 JupyterLab 的默认目录。
  • c.NotebookApp.notebook_dir 是 Jupyter Notebook 的相关配置,用于设置 Jupyter Notebook 的默认目录。

如果你同时使用 JupyterLab 和 Jupyter Notebook:

  1. JupyterLab

    • 使用配置 c.ServerApp.notebook_dir
  2. Jupyter Notebook

    • 使用配置 c.NotebookApp.notebook_dir

如何修改这两个配置:

如果你希望在两者之间都能设置相同的默认目录,可以分别修改这两个配置:

  1. JupyterLab: 修改 c.ServerApp.notebook_dir

    c.ServerApp.notebook_dir = 'D:/MyProjects'
  2. Jupyter Notebook: 修改 c.NotebookApp.notebook_dir

    c.NotebookApp.notebook_dir = 'D:/MyProjects'

总结:

  • c.ServerApp.notebook_dir 用于设置 JupyterLab 的默认启动目录。
  • c.NotebookApp.notebook_dir 用于设置 Jupyter Notebook 的默认启动目录。

修改 JupyterLab 的内核

1. 安装或选择所需的 Python 环境

首先确保你已经安装了你想要的 Python 环境。如果你要使用一个新的 Python 环境作为内核,你可以通过 condavenv 创建一个新的环境:

  • 使用 Conda 创建新环境

    conda create --name myenv python=3.9
    conda activate myenv
  • 使用 venv 创建新环境

    python -m venv myenv
    source myenv/bin/activate  # On Windows use myenv\Scripts\activate

2. 安装 ipykernel

你需要确保你在所选环境中安装了 ipykernel,这样才能将该环境作为 JupyterLab 的内核:

pip install ipykernel

3. 注册新的内核

注册 Python 环境作为 JupyterLab 的内核:

python -m ipykernel install --user --name=myenv --display-name "Python (myenv)"
  • --name=myenv 是该内核的内部名称,应该与你的 Python 环境的名称一致。
  • --display-name "Python (myenv)" 是该内核在 JupyterLab 中显示的名称。

4. 在 JupyterLab 中选择内核

启动 JupyterLab:

jupyter lab

在 JupyterLab 的 notebook 中,点击菜单栏的 Kernel > Change Kernel,你应该能看到你刚刚注册的内核(例如 "Python (myenv)"),点击它就可以切换到该内核。

5. 可选:移除旧内核

如果你想删除一个不再需要的内核,可以使用以下命令:

jupyter kernelspec uninstall myenv

这将删除名为 myenv 的内核。

这样你就可以修改和管理 JupyterLab 的内核了

image-20241009092913445

3.上传数据文件

直接上传至设置的启动文件夹中即可

image-20241009090815908

注意:

而后进行pip代码包,如果国内速度较慢,可以直接使用可用的代理进行下载安装

pip install pandas --proxy=http://127.0.0.1:10809

image-20241009091004587

亦可设置修改国内镜像源

要在中国大陆使用 Python 安装包时更快地获取资源,你可以配置 Python 使用国内的镜像源。这样做可以显著提高下载速度,特别是在使用 pip 安装包时。常见的国内镜像源有:

  • 阿里云: https://mirrors.aliyun.com/pypi/simple/
  • 清华大学: https://pypi.tuna.tsinghua.edu.cn/simple
  • 中国科学技术大学: https://pypi.mirrors.ustc.edu.cn/simple/
  • 华为云: https://mirrors.huaweicloud.com/repository/pypi/simple/

你可以通过以下方法来配置 pip 使用国内镜像源:

1. 临时使用镜像源

如果只想临时使用某个镜像源进行安装,可以在命令中使用 -i 参数指定镜像源。例如,使用阿里云镜像源安装一个包:

pip install <包名> -i https://mirrors.aliyun.com/pypi/simple/

2. 永久更改镜像源

如果你想长期使用某个镜像源,可以修改 pip 配置文件。可以通过以下方式来配置:

  1. Windows 系统: 配置文件路径通常是 C:\Users\<用户名>\AppData\Roaming\pip\pip.ini。如果没有该文件或文件夹,可以手动创建。

    内容示例:

    [global]
    index-url = https://mirrors.aliyun.com/pypi/simple/
  2. Linux/Mac 系统: 配置文件通常在 ~/.pip/pip.conf。同样,如果没有该文件,可以手动创建。

    内容示例:

    [global]
    index-url = https://mirrors.aliyun.com/pypi/simple/

这样配置后,pip 就会默认使用阿里云镜像源来安装包。

3. 使用 pip config 命令配置

你还可以通过 pip config 命令来永久设置镜像源。例如,设置清华大学镜像源:

pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

这样设置后,所有 pip install 命令都会默认使用清华大学的镜像源。

配置完成后,你就可以更快地使用 Python 包了。

以下为笔记代码结果(不知道答案啊)

源文件.ipynb

源文件.html

最后修改:2024 年 10 月 10 日
反正没人给,你也爱给不给吧。