zoukankan      html  css  js  c++  java
  • 数据分析交互工具--使用jupyter

    一、启动程序

    执行以下命令:

    jupyter notebook

    [NotebookApp] Serving notebooks from local directory: /home/nanfengpo

    [NotebookApp] 0 active kernels

    [NotebookApp] The IPython Notebook is running at: http://localhost:8888/

    [NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).

    注意以下几点:

    • 打开地址为当前bash的目录,默认的根目录
    • 浏览器地址为http://localhost:8888/
    • 通过control -C终止jupyter程序

    几个基本操作:

    • 双击D:删除当前cell
    • 单击M:转为markdown文档
    • markdown文档下运行变为预览模式

    二、IPython的帮助文档

    1. 使用help()

    通过以下命令来获得帮助文档:

    help(len)

    Help on built-in function len in module builtins:

    len(obj, /)
    Return the number of items in a container.

    help(len)
    
    Help on built-in function len in module builtins:
    
    len(obj, /)
        Return the number of items in a container.
    
    len([1,2,3])
    
    help(list)
    
    Help on class list in module builtins:
    
    class list(object)
     |  list() -> new empty list
     |  list(iterable) -> new list initialized from iterable's items
     |  
     |  Methods defined here:
     |  
     |  __add__(self, value, /)
     |      Return self+value.
     |  
     |  __contains__(self, key, /)
     |      Return key in self.
     |  
     |  __delitem__(self, key, /)
     |      Delete self[key].
     |  
     |  __eq__(self, value, /)
     |      Return self==value.
     |  
     |  __ge__(self, value, /)
     |      Return self>=value.
     |  
     |  __getattribute__(self, name, /)
     |      Return getattr(self, name).
     |  
     |  __getitem__(...)
     |      x.__getitem__(y) <==> x[y]
     |  
     |  __gt__(self, value, /)
     |      Return self>value.
     |  
     |  __iadd__(self, value, /)
     |      Implement self+=value.
     |  
     |  __imul__(self, value, /)
     |      Implement self*=value.
     |  
     |  __init__(self, /, *args, **kwargs)
     |      Initialize self.  See help(type(self)) for accurate signature.
     |  
     |  __iter__(self, /)
     |      Implement iter(self).
     |  
     |  __le__(self, value, /)
     |      Return self<=value.
     |  
     |  __len__(self, /)
     |      Return len(self).
     |  
     |  __lt__(self, value, /)
     |      Return self<value.
     |  
     |  __mul__(self, value, /)
     |      Return self*value.n
     |  
     |  __ne__(self, value, /)
     |      Return self!=value.
     |  
     |  __new__(*args, **kwargs) from builtins.type
     |      Create and return a new object.  See help(type) for accurate signature.
     |  
     |  __repr__(self, /)
     |      Return repr(self).
     |  
     |  __reversed__(...)
     |      L.__reversed__() -- return a reverse iterator over the list
     |  
     |  __rmul__(self, value, /)
     |      Return self*value.
     |  
     |  __setitem__(self, key, value, /)
     |      Set self[key] to value.
     |  
     |  __sizeof__(...)
     |      L.__sizeof__() -- size of L in memory, in bytes
     |  
     |  append(...)
     |      L.append(object) -> None -- append object to end
     |  
     |  clear(...)
     |      L.clear() -> None -- remove all items from L
     |  
     |  copy(...)
     |      L.copy() -> list -- a shallow copy of L
     |  
     |  count(...)
     |      L.count(value) -> integer -- return number of occurrences of value
     |  
     |  extend(...)
     |      L.extend(iterable) -> None -- extend list by appending elements from the iterable
     |  
     |  index(...)
     |      L.index(value, [start, [stop]]) -> integer -- return first index of value.
     |      Raises ValueError if the value is not present.
     |  
     |  insert(...)
     |      L.insert(index, object) -- insert object before index
     |  
     |  pop(...)
     |      L.pop([index]) -> item -- remove and return item at index (default last).
     |      Raises IndexError if list is empty or index is out of range.
     |  
     |  remove(...)
     |      L.remove(value) -> None -- remove first occurrence of value.
     |      Raises ValueError if the value is not present.
     |  
     |  reverse(...)
     |      L.reverse() -- reverse *IN PLACE*
     |  
     |  sort(...)
     |      L.sort(key=None, reverse=False) -> None -- stable sort *IN PLACE*
     |  
     |  ----------------------------------------------------------------------
     |  Data and other attributes defined here:
     |  
     |  __hash__ = None
    

    2. 使用?

    或者使用问号:

    len?

    还可以应用到自定义的变量和自定义的函数上来返回帮助文档

    此外,使用两个??可以把函数的源代码显示出来

    len??
    
    #上面插入一行
    #Jupyter ,代码可以时时进行,没有先后行数的概念
    square(101)
    
    10201
    
    square?
    
    
    square??
    
    
    #随意定义一个方法
    def square(num):
        '''
        该方法,返回数字的平方
        '''
        ret = num*num
        return ret
    
    

    3. tab自动补全

    敲击tab键能自动补全

    L.

    也可以在import的时候自动补全

    import nu

    import numpy as np
    import time as time
    
    

    三、IPython魔法命令

    1. 运行外部Python文件

    使用下面命令运行外部python文件(默认是当前目录,最好加上绝对路径)

    %run *.py

    例如在当前目录下有一个myscript.py文件:

    def square(x):
    """square a number"""
    return x ** 2

    for N in range(1, 4):
    print(N, "squared is", square(N))

    我们可以通过下面命令执行它:

    %run myscript.py

    尤其要注意的是,当我们使用魔法命令执行了一个外部文件时,该文件的函数就能在当前会话中使用

    square(5)

    #魔法指令,可以拓展我们的Jupyter ,更加强大
    #魔法指令,%开头
    
    %run '/home/nanfengpo/Desktop/test.py'
    
    
    4950
    
    
    #调用外部文件中定义的方法
    calc_sum(1024)
    
    
    523776
    
    

    2. 运行计时

    用下面命令计算statement的运行时间:

    %time statement

    #below 下面,自动向下插入一行
    %time calc_sum(1024)
    
    
    CPU times: user 0 ns, sys: 0 ns, total: 0 ns
    Wall time: 97.8 µs
    
    
    523776
    
    

    用下面命令计算statement的平均运行时间:

    %timeit statement

    timeit会多次运行statement,最后得到一个更为精准的预期运行时间

    #cell 单元前面
    %timeit calc_sum(2048)
    
    
    111 µs ± 7.18 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)
    
    

    可以使用两个百分号来测试多行代码的平均运行时间:

    `
    %%timeit

    statement1

    statement2

    statement3

    `

    记住:

    • %time一般用于耗时长的代码段
    • %timeit一般用于耗时短的代码段
    %%timeit
    calc_sum(1024)
    calc_sum(512)
    square(100000)
    
    
    80 µs ± 1.98 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)
    
    
    
    

    3. 查看当前会话中的所有变量与函数

    快速查看当前会话的所有变量与函数名称:

    %who

    %who
    
    
    calc_sum	 np	 square	 time	 
    
    

    查看当前会话的所有变量与函数名称的详细信息:

    %whos

    a = 1024
    
    
    %whos
    
    
    Variable   Type        Data/Info
    --------------------------------
    a          int         1024
    calc_sum   function    <function calc_sum at 0x7f7458114b70>
    np         module      <module 'numpy' from '/us<...>kages/numpy/__init__.py'>
    square     function    <function square at 0x7f747074b950>
    time       module      <module 'time' (built-in)>
    
    

    返回一个字符串列表,里面元素是当前会话的所有变量与函数名称:

    %who_ls

    #above
    len(ls)
    
    
    5
    
    
    ls = %who_ls
    
    
    
    

    4. 执行Linux指令

    Linux指令:

    $ echo "hello world" # echo is like Python's print function
    hello world

    $ pwd # pwd = print working directory
    /home/jake # this is the "path" that we're sitting in

    $ ls # ls = list working directory contents
    notebooks projects

    $ mkdir mm
    /home/jake/projects

    $touch txt
    !touch /home/nanfengpo/Desktop/xx/hello.txt

    在Linux指令之前加上 !,即可在ipython当中执行Linux指令。

    注意会将标准输出以字符串形式返回

    !cd ..
    
    
    !pwd
    
    
    /home/nanfengpo/Documents/data_analysis/1-IPython/softpo
    
    
    !touch '/home/nanfengpo/Desktop/softpo/python.word'
    
    
    !mkdir '/home/nanfengpo/Desktop/softpo'
    
    
    !ls
    
    
    IPython.ipynb  test.ipynb
    
    
    !pwd
    
    
    /home/nanfengpo/Documents/data_analysis/1-IPython/softpo
    
    
    !echo 'hello'
    
    
    hello
    
    

    5. 更多魔法命令

    列出所有魔法命令

    lsmagic

    查看魔法命令的文档:
    使用?

    %lsmagic
    
    
    Available line magics:
    %alias  %alias_magic  %autocall  %automagic  %autosave  %bookmark  %cat  %cd  %clear  %colors  %config  %connect_info  %cp  %debug  %dhist  %dirs  %doctest_mode  %ed  %edit  %env  %gui  %hist  %history  %killbgscripts  %ldir  %less  %lf  %lk  %ll  %load  %load_ext  %loadpy  %logoff  %logon  %logstart  %logstate  %logstop  %ls  %lsmagic  %lx  %macro  %magic  %man  %matplotlib  %mkdir  %more  %mv  %notebook  %page  %pastebin  %pdb  %pdef  %pdoc  %pfile  %pinfo  %pinfo2  %popd  %pprint  %precision  %profile  %prun  %psearch  %psource  %pushd  %pwd  %pycat  %pylab  %qtconsole  %quickref  %recall  %rehashx  %reload_ext  %rep  %rerun  %reset  %reset_selective  %rm  %rmdir  %run  %save  %sc  %set_env  %store  %sx  %system  %tb  %time  %timeit  %unalias  %unload_ext  %who  %who_ls  %whos  %xdel  %xmode
    
    Available cell magics:
    %%!  %%HTML  %%SVG  %%bash  %%capture  %%debug  %%file  %%html  %%javascript  %%js  %%latex  %%markdown  %%perl  %%prun  %%pypy  %%python  %%python2  %%python3  %%ruby  %%script  %%sh  %%svg  %%sx  %%system  %%time  %%timeit  %%writefile
    
    Automagic is ON, % prefix IS NOT needed for line magics.
    
    
    lsmagic
    
    
    Available line magics:
    %alias  %alias_magic  %autocall  %automagic  %autosave  %bookmark  %cat  %cd  %clear  %colors  %config  %connect_info  %cp  %debug  %dhist  %dirs  %doctest_mode  %ed  %edit  %env  %gui  %hist  %history  %killbgscripts  %ldir  %less  %lf  %lk  %ll  %load  %load_ext  %loadpy  %logoff  %logon  %logstart  %logstate  %logstop  %ls  %lsmagic  %lx  %macro  %magic  %man  %matplotlib  %mkdir  %more  %mv  %notebook  %page  %pastebin  %pdb  %pdef  %pdoc  %pfile  %pinfo  %pinfo2  %popd  %pprint  %precision  %profile  %prun  %psearch  %psource  %pushd  %pwd  %pycat  %pylab  %qtconsole  %quickref  %recall  %rehashx  %reload_ext  %rep  %rerun  %reset  %reset_selective  %rm  %rmdir  %run  %save  %sc  %set_env  %store  %sx  %system  %tb  %time  %timeit  %unalias  %unload_ext  %who  %who_ls  %whos  %xdel  %xmode
    
    Available cell magics:
    %%!  %%HTML  %%SVG  %%bash  %%capture  %%debug  %%file  %%html  %%javascript  %%js  %%latex  %%markdown  %%perl  %%prun  %%pypy  %%python  %%python2  %%python3  %%ruby  %%script  %%sh  %%svg  %%sx  %%system  %%time  %%timeit  %%writefile
    
    Automagic is ON, % prefix IS NOT needed for line magics.
    
    

    四、notebook的快捷键

    1、命令模式

    • Enter : 转入编辑模式 
    • Shift-Enter : 运行本单元,选中下个单元
    • Ctrl-Enter : 运行本单元,选中下个单元
    • Alt-Enter : 运行本单元,在下面插入一单元
    
    • Y : 单元转入代码状态
    • M :单元转入markdown状态
    
    • A : 在上方插入新单元
    • B : 在下方插入新单元
    
    

    2、编辑模式 ( Enter 键启动)

    • Tab : 代码补全或缩进
    • Shift-Tab : 提示
    
    
    print('hello')
    
    
    hello
    
    
    • Ctrl-A : 全选
    • Ctrl-Z : 复原
    
    

    ============================================

    练习:

    在Jupyter上实现以前的代码,包括:

    • 简单代码
    • 分支
    • 循环
    • 函数

    ========================================

  • 相关阅读:
    腾讯QQ强制下线,每天可能强抢会员300万元
    visual studio 2010 winform程序不能添加对system.web的引用
    一个用来将Excel中同一个人的多行记录中的特定列合并到第一行的宏
    很希望看到微软来一次“因为QQ未经用户允许扫描硬盘,在所有window平台拒绝运行QQ”
    windows2003的数据执行保护会造成无法正常安装SQL SERVER
    改变jboss部署目录(虚拟目录)
    SecureCRT6.5.0英文版,提示数据库里没有找到防火墙"无"
    spring注解事务
    windows下查看端口被哪个程序占用
    union和union all区别
  • 原文地址:https://www.cnblogs.com/pankypan/p/11408718.html
Copyright © 2011-2022 走看看