数据分析之在线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的用户们也可以使用该功能。
相关文章
- python数据分析apply(),map(),applymap()用法归纳
- python 保存图片_用Python从视频中提取每一帧的图片
- Python任意参数的数量/预习课python基础
- python+Eclipse+pydev环境搭建
- 快速学习数据分析,Python入门完整学习流程!
- 请问Python零基础学会可以做哪些?python是不是很难学?
- 中途转行python?怎么学?没有基础的我30了自学Python转行靠谱吗?
- 学python能做什么兼职-初学Python到月入过万最快的兼职途径(纯干货)
- Python分享:python爬虫可以用来做什么?
- PythonPython数据分析有什么提高效率的方法?Python数据分析技巧有哪些
- Python 数据结构之元组
- Docker镜像里安装Python环境
- gyp ERR! stack Error: Can‘t find Python executable “python“, you can set the PYTHON env variable.
- 在线实习项目|Python爬虫助力疫情数据追踪在线实习项目
- python中stack在实际中的简单应用之进制转换
- 《Python金融大数据分析》一1.3 用于金融的Python
- 《Python数据分析》一1.2 从源代码安装NumPy、SciPy、matplotlib和IPython
- 《Python数据分析》一导读
- python Python程序的架构
- Python 界面教程之8个excel csv数据分析程序通过PySimpleGUI封装成exe和macos桌面程序
- Python 教程之从头开始构建个人助理,如何在 Python 中构建概念验证个人助理:意图分类、语音到文本和文本到语音(教程含源码)
- Python数据分析之不只是拟合数据,还要获得洞察力,轻量级的 Python包可以让您深入了解回归问题
- Python切片学习记录
- 【Python】python扩展
- Windows解决多版本python执行pip3时出错AttributeError: module 'enum' has no attribute 'IntFlag'?
- 【目录】利用Python进行数据分析(第2版)
- 1.2 Why Python for Data Analysis(为什么使用Python做数据分析)
- 【Linux学习笔记】解决:yum install python-dev 报错(CentOS安装Python-dev库)
- python实现三目运算符(if else 在同一行)