Python数据分析:Jupyter Notebook 讲解

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理
作者丨Corley
源自丨快学python
Python数据分析:Jupyter Notebook 讲解文章插图
1.Jupyter Notebook基本介绍Jupyter Notebook(此前被称为IPython notebook)是一个交互式笔记本 , 支持运行40多种编程语言 。
在开始使用notebook之前 , 需要先安装该库:(1)在命令行中执行pip install jupyter来安装;(2)安装Anaconda后自带Jupyter Notebook 。
在命令行中执行jupyter notebook , 就会在当前目录下启动Jupyter服务并使用默认浏览器打开页面 , 还可以复制链接在其他浏览器中打开 , 如下:
Python数据分析:Jupyter Notebook 讲解文章插图
可以看到 , notebook界面由以下部分组成:(1)notebook名称;(2)主工具栏 , 提供了保存、导出、重载notebook , 以及重启内核等选项;(3)notebook主要区域 , 包含了notebook的内容编辑区 。
Python数据分析:Jupyter Notebook 讲解文章插图
2.Jupyter Notebook的使用在Jupyter页面下方的主要区域 , 由被称为单元格的部分组成 。 每个notebook由多个单元格构成 , 而每个单元格又可以有不同的用途 。 上图中看到的是一个代码单元格(code cell) , 以[ ]开头 , 在这种类型的单元格中 , 可以输入任意代码并执行 。 例如 , 输入1 + 2并按下Shift + Enter , 单元格中的代码就会被计算 , 光标也会被移动到一个新的单元格中 。
如果想新建一个notebook , 只需要点击New , 选择希望启动的notebook类型即可 。
简单使用示意如下:
Python数据分析:Jupyter Notebook 讲解文章插图
可以看到 , notebook可以修改之前的单元格 , 对其重新计算 , 这样就可以更新整个文档了 。 如果你不想重新运行整个脚本 , 只想用不同的参数测试某个程式的话 , 这个特性显得尤其强大 。 不过 , 也可以重新计算整个notebook , 只要点击Cell -> Run all即可 。
再测试标题和其他代码如下:
Python数据分析:Jupyter Notebook 讲解文章插图
【Python数据分析:Jupyter Notebook 讲解】可以看到 , 在顶部添加了一个notebook的标题 , 还可以执行for循环等语句 。
3.Jupyter中使用PythonJupyter测试Python变量和数据类型如下:
Python数据分析:Jupyter Notebook 讲解文章插图
测试Python函数如下:
Python数据分析:Jupyter Notebook 讲解文章插图
测试Python模块如下:
Python数据分析:Jupyter Notebook 讲解文章插图
可以看到 , 在执行出错时 , 也会抛出异常 。
测试数据读写如下:
Python数据分析:Jupyter Notebook 讲解文章插图
数据读写很重要 , 因为进行数据分析时必须先读取数据 , 进行数据处理后也要进行保存 。
4.数据交互案例加载csv数据 , 处理数据 , 保存到MongoDB数据库
有csv文件shopproducts.csv和userratings.csv , 分别是商品数据和用户评分数据 , 如下:
Python数据分析:Jupyter Notebook 讲解文章插图
Python数据分析:Jupyter Notebook 讲解文章插图
现在需要通过Python将其读取出来 , 并将指定的字段保存到MongoDB中 , 需要在Anaconda中执行命令conda install pymongo安装pymongo 。
Python代码如下:
import pymongoclass Product:def __init__(self,productId:int ,name, imageUrl, categories, tags):self.productId = productIdself.name = nameself.imageUrl = imageUrlself.categories = categoriesself.tags = tagsdef __str__(self) -> str:return self.productId +'^' + self.name +'^' + self.imageUrl +'^' + self.categories +'^' + self.tagsclass Rating:def __init__(self, userId:int, productId:int, score:float, timestamp:int):self.userId = userIdself.productId = productIdself.score = scoreself.timestamp = timestampdef __str__(self) -> str:return self.userId +'^' + self.productId +'^' + self.score +'^' + self.timestampif __name__ == '__main__':myclient = pymongo.MongoClient("mongodb://127.0.0.1:27017/")mydb = myclient["goods-users"]## val attr = item.split("\\^")## // 转换成Product## Product(attr(0).toInt, attr(1).trim, attr(4).trim, attr(5).trim, attr(6).trim)shopproducts = mydb['shopproducts']with open('shopproducts.csv', 'r',encoding='UTF-8') as f:item = f.readline()while item:attr = item.split('^')product = Product(int(attr[0]), attr[1].strip(), attr[4].strip(), attr[5].strip(), attr[6].strip())shopproducts.insert_one(product.__dict__)## print(product)## print(json.dumps(obj=product.__dict__,ensure_ascii=False))item = f.readline()## val attr = item.split(",")## Rating(attr(0).toInt, attr(1).toInt, attr(2).toDouble, attr(3).toInt)userratings = mydb['userratings']with open('userratings.csv', 'r',encoding='UTF-8') as f:item = f.readline()while item:attr = item.split(',')rating = Rating(int(attr[0]), int(attr[1].strip()), float(attr[2].strip()), int(attr[3].strip()))userratings.insert_one(rating.__dict__)## print(rating)item = f.readline()