栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

数据分析之在线JupyterNotebook使用小技巧|Python技能树测评

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

数据分析之在线JupyterNotebook使用小技巧|Python技能树测评

大家好,我是小小明。

受CSDN官方邀请,前来测评《python 技能树》 ,活动地址:https://bbs.csdn.net/topics/600937310

XDM,一起来测评,一起来拿奖吧!奖品多多,福利多多噢~

首先,我们打开内测技能树页面:

众所周知,jupyter是数据分析领域最常用的工具,所以我直接进入数据分析版块。

虽然目前看到选项过于单薄,但是不耽误我们玩玩csdn的jupyter。

下面我们就点开第一个模块的第一题开始玩玩吧:

我去,虽然只是一道选择题,但实在是已经吓死宝宝了,这代码也太长了点。那么先随便选个试试:

嘿嘿,选择A点提交后,在线Jupyter的入口就出现了。看我怎么跑代码干翻你这道 《大家来找茬》 的题目。

点击前往就出现了,服务启动的页面:

等待启动完毕后,就进入到了JupyterNoteBook的开发页面:

作为一名资深jupyter玩家,这点功能和插件显然是不满足要求的,下面我们看看如何安装一些插件:

给JupyterNoteBook安装插件

首先点击open:

然后进入Nbextensions插件选项卡,我将我最需要的三个插件打勾:

对于Autopep8这玩意,我们需要pip装点库,回到前面的代码界面执行:

!pip install autopep8

这是因为我上次使用时已经下载过有缓存,所以直接就安装好了。

安装完成后刷新网页刚才选择的插件就会生效。然后给代码框加个默认行号显示:

展开目录

点开目录按钮后,就可以编辑Markdown文本:

如何将一个代码节点转换为Markdown节点呢? 按下快捷键H即可打开快捷键菜单:

这意味着,只需要记住H快捷键,其他快捷键都通过这个面板随时查询。

可以看到按下ESC退出进入命令行模式后,按下快捷键M即可将其转换为Markdown文本节点,数字快捷键1~6即可将将其转换对应等级的标题。

复制代码并运行

点击右上角的复制按钮即可复制代码:

然后粘贴到JupyterNotebook中:

粘贴完,代码是这种使用制表符t缩进的形式,现在按下快捷键Ctrl+L即可启动autopep8代码格式化:

可以看到格式化之后的代码都是空格缩进的形式。

根据右上角的提示即可运行代码,运行后:

报错,显然我们可以排除A选项。

三种运行方式的快捷键见Cell菜单:

分别表示只运行当前单元格、运行并选择下一个单元格 和 运行并向下插入一个单元格。

大家可以都试试,感受一下区别。

复制B选项的代码并运行后也报错:

运气比较好已经排除两个选项了,继续干C和D:


D选项居然正确了:


咱们就选个D试一下?
✅Good,回答正确了:

差异代码检测

下面我们继续下一题:

这次代码终于简化多了。这次全部复制粘贴到jupyter运行后发现,A和C报错,B和D正确运行。

对于B和D这两个选项的代码,我看了好几眼还真看不出区别在哪里,太像 《大家来找茬》 的找茬游戏了。

不过没有关系,咱们有JupyterNotebook来运行Python代码,标准库difflib让差异无处遁形:

import difflib
text1 = """import csv


def dump_list(file, list):
    with open(file, 'w', newline='') as csvfile:
 spamwriter = csv.writer(csvfile, delimiter=' ',
    quotechar='|', quoting=csv.QUOTE_MINIMAL)
 for row in list:
     spamwriter.writerow(row)


def load_list(file):
    with open(file, 'r', newline='') as csvfile:
 spamreader = csv.reader(csvfile, delimiter=' ', quotechar='|')
 for row in spamreader:
     yield row


if __name__ == "__main__":
    rows = [
 ['Spam'] * 5 + ['Baked Beans'],
 ['Spam', 'Lovely Spam', 'Wonderful Spam']
    ]
    list_file = '/tmp/list.csv'
    dump_list(list_file, rows)
    rows = load_list(list_file)
    for row in rows:
 for cell in row:
     print(cell)"""

text2 = """import csv


def dump_list(file, list):
    with open(file, 'w', newline='') as csvfile:
 spamwriter = csv.writer(csvfile, delimiter=' ',
    quotechar='|', quoting=csv.QUOTE_MINIMAL)
 for row in list:
     spamwriter.writerow(row)


def load_list(file):
    with open(file, 'r', newline='') as csvfile:
 spamreader = csv.reader(csvfile, delimiter=' ', quotechar='|')
 for row in spamreader:
     yield row


if __name__ == "__main__":
    rows = [
 ['Spam'] * 5 + ['Baked Beans'],
 ['Spam', 'Lovely Spam', 'Wonderful Spam']
    ]
    list_file = '/tmp/list.csv'
    dump_list(list_file, rows)
    rows = load_list(list_file)
    for row in rows:
 while cell in row:
     print(cell)"""


def diff_compare(text1, text2, diff_out="diff_result.html", max_width=30, numlines=0, show_all=False):
    text1 = [row.rstrip() for row in text1.splitlines(keepends=True)]
    text2 = [row.rstrip() for row in text2.splitlines(keepends=True)]
    d = difflib.HtmlDiff(wrapcolumn=max_width)
    with open(diff_out, 'w', encoding="u8") as f:
 f.write(d.make_file(text1, text2, context=not show_all, numlines=numlines))


diff_compare(text1, text2, numlines=3)

运行后,打开生成的html文件:

原来差异在一个选项是for,一个选项是while。当然选for的这个选项啦。
也可以使用IPython.display.HTML直接在jupyter中显示网页,代码:

from IPython.display import HTML
def diff_compare(text1, text2, diff_out="diff_result.html", max_width=70, numlines=0, show_all=False):
    text1 = [row for row in text1.splitlines(keepends=True)]
    text2 = [row for row in text2.splitlines(keepends=True)]
    d = difflib.HtmlDiff(wrapcolumn=max_width)
    return d.make_file(text1, text2, context=not show_all, numlines=numlines)


diff_html = diff_compare(text1, text2, numlines=1)
HTML(diff_html)

效果:

直接在单元格下方展示差异情况。

总体测评

以上就是个人体验Jupyter notebook的全过程,个人感觉还是挺方便的。几乎跟本地自己安装的Jupyter一样的用,想装啥插件也都可以直接装。

不过,我有点想吐槽这个题,根本就不是技术题啊,纯粹就是PK技术达标的情况下谁的眼力好啊。

不过呢,咱们还是可以通过代码差异查找软件,找出差异后进行对比分析,从而快速解题。代码差异查找除了使用我上面所用的代码还可以使用Beyond Compare这个软件。

最后感谢CSDN,这个Jupyter服务虽然还处于VIP内测阶段,但是已经挺好用了,相信未来还会越来越好。等未来正式发布的时候,一定非常好用后,没有VIP的用户们也可以使用该功能。

转载请注明:文章转载自 www.mshxw.com
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号