# teast4.1 **Repository Path**: johnny1128/teast4.1 ## Basic Information - **Project Name**: teast4.1 - **Description**: 移动应用开发第四次实验无图版 - **Primary Language**: Kotlin - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-05-26 - **Last Updated**: 2022-05-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## Jupyter Notebook基础教程 ##### 创建一个新的Notebook * 新建一个Notebook Python3(ipykernel),生成一个Untitled.ipynb文件 ![输入图片说明](1.png)) ##### cell * 代码cell:包含可被kernel执行的代码,执行之后在下方显示输出。 * Markdown cell:书写Markdown标记语言的cell. * 输入一行代码,查看结果: ``` print('Hello World!') ``` 结果 ``` Hello World! ``` * 代码执行之后,In[ ]变成了Ina[1]。 ##### cell模式 * 编辑模式:enter键切换,绿色轮廓 * 命令模式:esc键切换,蓝色轮廓 ##### 快捷键 ​ 使用ctrl+shift+P 可以查看Notebook支持的命令 ##### Kernel * 每个notebook都基于一个内核运行,当执行cell代码时,代码将在内核当中运行,运行的结果会显示在页面上。Kernel中运行的状态在整个文档中是延续的,可以跨越所有的cell。这意思着在一个Notebook某个cell定义的函数或者变量等,在其他cell也可以使用. ``` import numpy as np def square(x): return x * x ``` * 执行上述代码后,后面的cell可以使用np和square ``` x = np.random.randint(1, 10) y = square(x) print('%d squared is %d' % (x, y)) ``` ---4 squared is 16 * `File > Close and Halt`,或者`Kernel > Shutdown`。可以清空内存中的变量。 ##### 简单的Python程序的例子 * 首先,导入相关的工具库 ``` %matplotlib inline import pandas as pd import matplotlib.pyplot as plt import seaborn as sns ``` 这里, [pandas](https://pandas.pydata.org/docs/)用于数据处理,[matplotlib](https://so.csdn.net/so/search?q=matplotlib&spm=1001.2101.3001.7020)用于绘图,seaborn使绘图更美观。第一行不是python命令,而被称为line magic。%表示作用与一行,%%表示作用于全文。此处%matplotlib inline 表示使用matlib画图,并将图片输出。 * 加载数据集 ``` df = pd.read_csv('fortune500.csv') ``` * 检查数据集 ``` df.head() ``` ![输入图片说明](2.png) ``` df.tail() ``` ![输入图片说明](![输入图片说明](10.png)3.png) * 对数据属性列进行重命名,便于后续访问 ``` df.columns = ['year', 'rank', 'company', 'revenue', 'profit'] ``` * 检查数据条目是否完整 ``` len(df) ``` ---25500 * 检查属性列的类型 ``` df.dtypes ``` --- ``` year int64 rank int64 company object revenue float64 profit object dtype: object ``` * 对于profit属性,期望是float,所以可能包含非数字的值,用正则表达式进行检查。 ``` non_numberic_profits = df.profit.str.contains('[^0-9.-]') df.loc[non_numberic_profits].head() ``` ![输入图片说明](4.png) * 统计一共存在多少条这样的记录 ``` len(df.profit[non_numberic_profits]) ``` ---369 * 使用直方图显示一下按照年份的分布情况 ``` bin_sizes, _, _ = plt.hist(df.year[non_numberic_profits], bins=range(1955, 2006)) ``` ![输入图片说明](5.png) * 删除这些记录 ``` df = df.loc[~non_numberic_profits] df.profit = df.profit.apply(pd.to_numeric) ``` * 再次检查条目数 ``` len(df) ``` ---25131 ``` df.dtypes ``` ``` year int64 rank int64 company object revenue float64 profit float64 dtype: object ``` --实现无效数据的清理 ##### 使用matplotlib绘图 ``` group_by_year = df.loc[:, ['year', 'revenue', 'profit']].groupby('year') avgs = group_by_year.mean() x = avgs.index y1 = avgs.profit def plot(x, y, ax, title, y_label): ax.set_title(title) ax.set_ylabel(y_label) ax.plot(x, y) ax.margins(x=0, y=0) ``` * 开始绘图 ``` fig, ax = plt.subplots() plot(x, y1, ax, 'Increase in mean Fortune 500 company profits from 1955 to 2005', 'Profit (millions)') ``` ![输入图片说明](6.png) * 继续看看收入曲线 ``` y2 = avgs.revenue fig, ax = plt.subplots() plot(x, y2, ax, 'Increase in mean Fortune 500 company revenues from 1955 to 2005', 'Revenue (millions)') ``` ![输入图片说明](7.png) * 对数据进行标准差处理 ``` def plot_with_std(x, y, stds, ax, title, y_label): ax.fill_between(x, y - stds, y + stds, alpha=0.2) plot(x, y, ax, title, y_label) fig, (ax1, ax2) = plt.subplots(ncols=2) title = 'Increase in mean and std Fortune 500 company %s from 1955 to 2005' stds1 = group_by_year.std().profit.values stds2 = group_by_year.std().revenue.values plot_with_std(x, y1.values, stds1, ax1, title % 'profits', 'Profit (millions)') plot_with_std(x, y2.values, stds2, ax2, title % 'revenues', 'Revenue (millions)') fig.set_size_inches(14, 4) fig.tight_layout() ``` ![输入图片说明](8.png) ##### 分享Notebooks * 一种像文本一样以静态非交互式分享(html,markdown,pdf等) * 通过git版本工具或者Goole Colab进行协同开发 ##### 分享之前的工作 * 点击cell>ALL output>clear * 点击kernel>restart&run all * 等待所有代码执行完毕 ##### 导出 使用"File > Download as"可以以多种格式导出Notebooks ##### Jupyter Notebook扩展工具 * 首先启动Anaconda home界面 ![输入图片说明](9.png) * 在终端中一次输入下面4条命令 ``` pip install jupyter_contrib_nbextensions jupyter contrib nbextension install --user pip install jupyter_nbextensions_configurator jupyter nbextensions_configurator enable --user ``` * 重新打开Jupyter Notebook启动界面 ![输入图片说明](10.png) * 点击Nbextensions标签,勾选Hinterland ![输入图片说明](11.png)