1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178
| 数据分析 1 数据分析 定义: 数据分析是基于商业⽬的,有⽬的的进⾏收集、整理、加⼯和分析数据,提炼有价信息的⼀个 过程。 过程: 明确分析⽬的与框架、数据收集、数据处理(数据清洗、数据转换)、数据分析、数据展现和 撰写报告等6个阶段。 数据类型: 表格型数据,其中各列可能是不同的类型(字符串、数值、⽇期等)。⽐如保存在关系型数据 库中或以制表符/逗号为分隔符的⽂本⽂件中的那些数据。 多维数组(矩阵)。 通过关键列(对于SQL⽤户⽽⾔,就是主键和外键)相互联系的多个表。 间隔平均或不平均的时间序列。 Excel是最⼴泛的数据分析⼯具 为什么⽤Python进⾏数据分析 拥有巨⼤活跃的科学计算社区 数据科学、机器学习、学界和⼯业界开发重要语⾔ 胶⽔语⾔,轻松集成旧有算法和系统 不仅适⽤于研究和原型构建,同时也适⽤于构建⽣产系统 重要的Python库 1、NumPy (Numerical Python) Python科学计算的基础包 快速⾼效的多维数组对象ndarray。 ⽤于对数组执⾏元素级计算以及直接对数组执⾏数学运算的函数。 ⽤于读写硬盘上基于数组的数据集的⼯具。 线性代数运算、傅⾥叶变换,以及随机数⽣成。 成熟的C API, ⽤于Python插件和原⽣C、C++、Fortran代码访问NumPy的数据结构和计 算⼯具。 对于数值型数据,NumPy数组在存储和处理数据时要⽐内置的Python数据结构⾼效得 多。 2、pandas pandas提供了快速便捷处理结构化数据的⼤量数据结构和函数。 pandas兼具NumPy⾼性能的数组计算功能以及电⼦表格和关系型数据库(如SQL)灵活 的数据处理功能。它提供了复杂精细的索引功能,能更加便捷地完成重塑、切⽚和切块、 聚合以及选取数据⼦集等操作 数据操作、准备、清洗是数据分析最重要的技能(耗时最⻓) 3、matplotlib 最流⾏的⽤于绘制图表和其它⼆维数据可视化的Python库 适合创建出版物上⽤的图表 4、IPython 和 Jupyter 执⾏ 探索 ⼯作流 (探索、试错、重复) IPython web notebook Jupyter notebook (⽀持40多种编程语⾔) Jupyter notebook⽀持markdown和html 5、Scipy ⼀组专⻔解决科学计算中各种标准问题域的包的集合。 6、scikit-learn scikit-learn成为了Python的通⽤机器学习⼯具包 7、statsmodels statsmodels包含经典统计学和经济计量学的算法 常⽤模块引⽤惯例 import numpy as np import matplotlib.pyplot as plt import pandas as pd import statsmodels as sm 安装Anaconda Downloads - Anaconda Python 1991年出现,Python 2.x在2020年就会到期(包括重要的安全补丁),新项⽬请使⽤ Python 3 IPython基础 $ ipython In [1]: a = 5 In [2]: a Out[2]: 5 pretty printed(Python对象被格式化为更易读的形式) In [5]: import numpy as np In [6]: data = {i : np.random.randn() for i in range(7)} In [7]: data Out[7]: {0: -0.20470765948471295, 1: 0.47894333805754824, 2: -0.5194387150567381, 3: -0.55573030434749, 4: 1.9657805725027142, 5: 1.3934058329729904, 6: 0.09290787674371767} 运⾏Jupyter Notebook notebook是Jupyter项⽬的重要组件之⼀,它是⼀个代码、⽂本(有标记或⽆标记)、数据可 视化或其它输出的交互式⽂档。 Python的Jupyter内核是使⽤IPython。 启动Jupyter $ jupyter notebook Jupyter Notebook 要新建⼀个notebook,点击按钮New,选择“Python3”或“conda[默认项]”。如果是第⼀次, 点击空格,输⼊⼀⾏Python代码。然后按Shift-Enter执⾏。 当保存notebook时(File⽬录下的Save and Checkpoint),会创建⼀个后缀名为.ipynb的⽂ 件。 要加载存在的notebook,把它放到启动notebook进程的相同⽬录内。 %pwd %ls Tab补全 In [3]: b = [1, 2, 3] In [4]: b.<Tab> b.append b.count b.insert b.reverse b.clear b.extend b.pop b.sort b.copy b.index b.remove In [1]: import datetime In [2]: datetime.<Tab> datetime.date datetime.MAXYEAR datetime.timedelta datetime.datetime datetime.MINYEAR datetime.timezone datetime.datetime_CAPI datetime.time datetime.tzinfo 在变量前后使⽤问号?,可以显示对象的信息 In [8]: b = [1, 2, 3] In [9]: b? Type: list String Form:[1, 2, 3] Length: 3 Docstring: list() -> new empty list list(iterable) -> new list initialized from iterable's items In [10]: print? Docstring: print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False) Prints the values to a stream, or to sys.stdout by default. Optional keyword arguments: file: a file-like object (stream); defaults to the current sys.stdout. sep: string inserted between values, default a space. end: string appended after the last value, default a newline. flush: whether to forcibly flush the stream. Type: builtin_function_or_method def add_numbers(a, b): """ Add two numbers together Returns ------- the_sum : type of arguments """ return a + b 然后使⽤?符号,就可以显示如下的⽂档字符串: In [11]: add_numbers? Signature: add_numbers(a, b) Docstring: Add two numbers together Returns ------- the_sum : type of arguments File: <ipython-input-9-6a548a216e27> Type: function 使⽤??会显示函数的源码: In [12]: add_numbers?? Signature: add_numbers(a, b) Source: def add_numbers(a, b): """ Add two numbers together Returns ------- the_sum : type of arguments """ return a + b File: <ipython-input-9-6a548a216e27> Type: function 搜索IPython的命名空间 In [13]: np.*load*? np.__loader__ np.load np.loads np.loadtxt np.pkgload %run, %load, %paste, %cpaste 命令 %run命令运⾏所有的Python程序 In [14]: %run test3.py ⽂件中所有定义的变量(import、函数和全局变量,除⾮抛出异常),都可以在IPython shell 中随后访问 在Jupyter notebook中,你也可以使⽤%load,它将脚本导⼊到⼀个代码格中 %load test3.py %paste和%cpaste 函数。%paste 可以直接运⾏剪贴板中的代码 键盘快捷键 魔术命令 %timeit 测量任何Python语句,例如矩阵乘法,的执⾏时间 In [23]: foo = %pwd In [24]: foo 集成Matplotlib IPython在分析计算领域能够流⾏的原因之⼀是它⾮常好的集成了数据可视化和其它⽤户界⾯ 库,⽐如matplotlib %matplotlib import matplotlib.pyplot as plt plt.plot(np.random.randn(50).cumsum())
|