数据分析

时间:2024-04-11 20:12:39

资源图

说明

  • 第一节看博客 后面的全发链接了

下载链接

地址
https://pan.baidu.com/s/1sH2_yKAGw6owg0qitVZVFA
数据分析

数据科学与计算

相关库

  • numpy
  • matplotlib
  • pandas

相关开发工具

  • PyCharm
  • Anaconda
  • IPython
  • Jupyter notebook
  • Spyder

说明:

  • IPython,Jupyter notebook与Spyder已集成在Anaconda中。
  • 选择哪一款开发工具,取决于个人的偏好。

Anaconda

Anaconda是Python的一个免费发行版本,适合在数据科学与机器学习领域的开发。其集成了Python解释器,同时也包含很多数据科学计算的软件包与开发工具。Anaconda具有两个版本:

  • Anaconda
  • Miniconda

下载与安装

我们可以登录https://www.anaconda.com/download/ 进行下载。

虚拟环境

  • 创建虚拟环境
    conda create -n 虚拟环境名称 python=版本号
  • 删除虚拟环境
    conda remove -n 虚拟环境名称 --all
  • **(进入)虚拟环境
    source activate 虚拟环境名称
  • 离开虚拟环境
    source deactivate

说明:

  • 当创建虚拟环境后,就会在Anaconda安装目录下的envs目录下,创建虚拟环境相关的文件。
  • 在Linux环境下,需要使用source,Windows需要省去source。
  • 创建虚拟环境后,虚拟环境中仅会安装一些必须的软件包,例如pip等。如果需要安装Anaconda所有的库,需要:
    conda create -n 虚拟环境名称 python=版本号 anaconda

conda包管理器

conda是一个包管理器,可以用来下载(删除)Python软件包(与pip有些类似)。

  • 安装包
    conda install 包
  • 卸载包
    conda remove 包
  • 更新包
    conda update 包
  • 查看包
    conda list

Anaconda Navigator

Anaconda Navigator是Anaconda提供的一款图形化界面工具,我们可以方便的实现虚拟环境以及软件包的管理。

IPython

IPython(Interactive Python),是一款增强型Python解释器,在Python的基础上,提供了很多额外的功能。IPython可以使用如下命令安装:
pip install ipython
Anaconda集成了IPython解释器,只需在控制台上输入ipython即可启动IPython。

查看帮助

回忆:在Python中,如果查看帮助信息?
IPython提供了额外的功能,来获取帮助信息。

  • ?
  • ??

命令补全

  • Tab

魔法命令

魔法命令分为%与%%两种形式,即在相应的命令前使用%或%%前缀。但并非所有的魔法命令都支持这两种形式。

  • % 行模式
  • %% 单元格模式

IPython提供了非常多的魔法命令,常用的魔法命令如下:

  • run
  • time
  • timeit
  • history
  • who / whos
  • lsmagic
  • prun
  • lprun
  • memit
  • mprun
  • load_ext / reload_ext
  • wirtefile(file)
  • automagic
    数据分析

who

显示当前自定义的变量,方法等名称,不会显示IPython解释器内建的名称。当指定类型列表时,仅类型匹配类型列表中的名称才会显示。

whos

与who类似,但是会显示当前名称的详细信息。
数据分析

time

执行语句计时功能。语句只执行一次。

timeit

虽然time能够执行计时功能,但是如果语句过于简单,很可能计时结果为0。此时,我们可以使用循环多次执行。但更方便的方式是,使用timeit来完成多次执行的操作。
timeit支持行模式与单元格模式。在单元格模式下,第一行语句(与魔法命令在同一行的语句)为设置(初始化)语句,作用是可以用来定义变量供后续的代码使用。设置语句会执行,但是不参与计时。第二行至整个单元格末尾的语句会执行并参与计时。我们可以使用-n来指定每论测试执行的次数(默认会选择最佳的次数),-r指定执行的测试轮数(默认为7)。

说明:

  • timeit的单元格中,如果需要对外面的变量进行修改,需要使用global。
    数据分析

automagic

automagic命令用来设置在使用魔法命令时,是否需要使用%前缀。默认情况下,automagic是开启的,使用魔法命令可以不用使用%前缀。每次执行automagic命令时,就会切换开启 / 关闭状态。其行为类似于toggle button。
当automagic处于开启状态,如果我们定义了与魔法命令相同名称的变量(或方法,类)时,访问的将是我们自定义的名称。为了避免不必要的混淆,建议在使用魔法命令时,总是使用%前缀。

history

类似与Linux的history命令,显示IPython的命令执行历史记录。

writefile(file)

格式: %%writefile [-a] filename
将单元格的内容写入到文件中。如果文件不存在则创建,如果文件存在,则覆盖文件。如果指定-a选项,则追加内容(不覆盖)。

说明:

  • writefile以前命名为file,为了兼容,file命令依然还能够使用。

prun

通过Python的代码分析器,来分析程序(语句)的执行时间。结果会根据total time(花费时间)进行倒序排列。通过prun分析功能,我们就可以发现程序中最耗时的部分,进而可以针对性的进行优化。
分析结果列说明:

  • ncalls 函数调用次数。
  • tottime 总共调用消耗的时间(不包括子函数调用消耗的时间)。
  • percall 每次调用消耗的时间。
  • cumtime 总共调用消耗的时间(包括子函数调用消耗的时间)。
  • percall 每次调用消耗的时间。
  • filename:lineno(function) 文件名:行号(函数名)

lprun

lprun可以逐行对程序进行分析,相对与prun的函数分析,会更加细致。
格式:%lprun -f 函数1 [-f 函数2, ……] <执行语句>
其中-f指定要分析的函数。分析结果列如下:

  • Line # 行号。
  • Hits 执行次数。
  • Time 总共消耗时间。
  • Per Hit 单次执行消耗的时间。
  • % Time 消耗的时间百分比。
  • Line Contents 行内容。

说明:

  • lprun不是IPython内置的,需要安装line_profiler模块。
  • 安装后,需要通过%load_ext line_profiler载入,才能使用。
    数据分析

memit

分析语句的内存使用情况。memit支持行模式与单元格模式。在单元格模式下,第一行语句(与魔法命令在同一行的语句)为设置(初始化)语句,作用是可以用来定义变量供后续的代码使用。设置语句会执行,但不参与计算内存使用。第二行至整个单元格末尾的语句会参与计算内存。
说明:

  • memit不是IPython内置的,需要安装memory_profiler模块。
  • 安装后,需要通过%load_ext memory_profiler载入,才能使用。

mprun

逐行分析语句的内存使用情况。分析结果列如下:

  • Line # 行号。
  • Mem usage 内存使用大小。
  • Increment 内存增量。
  • Line Content 代码内容。

说明:

  • mprun不是IPython内置的,需要安装memory_profiler模块。
  • 安装后,需要通过%load_ext memory_profiler载入,才能使用。
  • mprun测试的函数必须定义在独立的模块中,不能定义在交互式环境中。
  • 如果需要重新加载模块,可以调用importlib模块提供的reload函数来实现。
    数据分析

单元格

jupyter notebook文档由一些列单元格组成,我们可以在单元格中输入相关的代码或者说明文字。单元格有以下几种类型:

  • code 代码单元格,用来编写程序。
  • Markdown 支持Markdown语法的单元格,用来编写描述程序的文字。
  • Raw NBConvert 原生类型单元格,内容会原样显示。在使用NBConvert转换后才会显示成特殊的格式。
  • Heading 标题单元格,已经不在支持使用。

命令模式与编辑模式

此外,jupyter notebook的单元格分为两种模式:

  • 命令模式 单元格处于选中状态,此时单元格左侧为粗蓝色线条,其余为细灰色线条。
  • 编辑模式 单元格处于编辑状态,此时单元格左侧为粗绿色线条,其余为细绿色线条。(此时右上角会出现铅笔图标)

常用快捷键

我们可通过菜单Help -》 Keyboard Shortcuts查看所有的快捷键。jupyter notebook常用的快捷键如下:

命令模式

  • Y 单元格转换成code类型。
  • M 单元格转换成Markdown类型。
  • R 单元格转换成Raw NBConvert类型。
  • Enter 进入编辑模式。
  • A 在当前单元格上方插入新单元格。
  • B 在当前单元格下方插入新单元格。
  • C 复制当前单元格。
  • D(两次) 删除当前单元格。
  • V 粘贴到当前单元格的下方。
  • Shift + V 粘贴到当前单元格的上方。
  • Z 撤销删除。

编辑模式

  • Tab 代码补全
  • Shift + Tab 显示doc文档信息。
  • Esc 进入命令模式。

通用模式

  • Ctrl + Enter 运行单元格,然后该单元格处于命令模式。
  • Shift + Enter 运行单元格,并切换到下一个单元格,如果下方没有单元格,则会新建一个单元格。
  • Alt + Enter 运行单元格,并在下方新增一个单元格。
  • Markdown

Markdown是一种使用纯文本格式语法的轻量级标记语言,它允许人们使用易读易写的纯文本格式编写文档,然后转换成格式丰富的HTML页面。Markdown同时也支持HTML标签。在Markdown类型的单元格中,支持使用Markdown语法与LaTex数学公式。

标题

标题可以使用1 ~ 6个#跟随一个空格来表示1 ~ 6级标题。

无序列表

无序列表可以使用*-+后跟随一个空格来表示。也可以通过不同的符号混合表示多级列表。

有序列表

有序列表使用数字跟随一个点(.)表示。

LaTex

LaTex是一个文件准备系统(document preparation system),用来进行排版,支持复杂的数学公式表示。
LaTex公式使用\$公式\$或\$\$公式\$\$进行界定。 在Markdown类型的单元格中,支持LaTex数学公式。
LaTex在线编辑:http://latex.codecogs.com/eqneditor/editor.php
y=x2y=x^2

spyder

类似于Matlib的一款集成开发工具。提供代码的编写,变量的展示与查看,代码调试等丰富的功能。