当前位置: 代码迷 >> 综合 >> Python 数据分析:准备工作
  详细解决方案

Python 数据分析:准备工作

热度:32   发布时间:2024-01-12 04:29:39.0

什么是数据

本文中所言的数据,其关注点落在结构化数据上,例如:1. 表格型的数据:每一列可能包含不同的类型(字符串、数值、日期等)。2. 多维数组(矩阵);3. 由键位列关联的多张表数据;4. 均匀/非均匀的时间序列。

一些重要的 Python 库

  1. NumPy 是 Numerical Python 的缩写,是 Python 数值计算的重要组成部分。
    它提供多种数据结构、算法以及大部分设计 Python 数值计算所需要的接口。
  2. pandas 提供了高级数据结构和函数,其全称为 Python data analysis.
  3. matplotlib 是一种流行的制图以及可视化的 Python 库。
  4. SciPy 是计算科学领域针对不同标准问题域的包集合。
  5. scikit-learn
  6. statsmodels

一点说明

利用 Python 进行数据分析不等于使用 Python 开发软件。

Python 解释器

Python 是一个解释型语言,Python 解释器通过一次执行一条语句的方式来运行程序。

很多数据分析的从业者会使用 IPython 或者 Jupyter, 其中 IPython 是一个加强版本的 Python 解释器,Jupyter notebook 是一种基于 Web 的代码笔记本。

这里,我们使用 IPython.

IPython 和 Python 在显示上有一些区别:

Python 中提示符为:<<<.

而在 IPython 中,提示符为:In[], Out[]. 且 IPython 中有 tab 自动补全功能。

内省

IPython 中,一个变量名前后使用问号可以显示一些关于该对象的概要信息。

例如:
在这里插入图片描述

以上就是对象内省。

若对象是一个函数或实例方法且文档字符串已经写好,则文档字符串会显示出来。

假设已经写好如下函数:

def add(a,b):'''Add two numbers togethersum : type of arguments'''return a + b

然后我们可以用 ‘?’ 来显示文档字符串:
在这里插入图片描述

可以用 ‘??’ 来显示函数的源代码:
在这里插入图片描述


‘?’ 的终极用途:类似于 Unix 和 Windows 命令行一样搜索命名空间。
把一些字符和通用匹配符 ‘*’ 结合在一起,辉县市所有匹配通配符表达式的命名。

例如:

import numpy
numpy.*load*?

在这里插入图片描述

%run 命令

在 IPython 中,使 %run 命令运行任意的 Python 程序文件。

假设保存一个名为 ‘test.py’ 的Python 文件,其代码为:

def f(x,y,z):return x + y - zresult = f(1,3,2)

我们使用 %run 运行上述代码:

%run test.py

此时,test.py 中定义的所有变量可以开始使用:

result

在这里插入图片描述

中断运行中的代码

IPython 中,在任意代码运行时刻按下 Ctrl-C 都将引起 KeyboardInterrupt. 除了某些特殊情况之外,这会导致所有的 Python 程序立即停止运行。

魔术命令

IPython 的特殊命令(没有内建到 Python 自身中去)被称为魔术命令,这些命令被设计用于简化常见任务,确保用户更容易控制 IPython, 魔术命令的前缀符号是 %.

例如,%timeit 来检查一段 Python 语句执行时间,比如一个矩阵操作:

import numpy as np
a = np.random.randn(100,100)
%timeit np.dot(a,a)

运行结果:
在这里插入图片描述

魔术命令可以视为 IPython 系统内部命令行程序。

其实魔术命令也可以不加 ‘%’ 使用,只要变量没有被定义与魔术函数有相同的名称即可。这种特性被称为自动魔术,通过%automagic 进行启动/禁止。

matplotlib

IPython 流行的原因之一就是它和数据可视化、用户界面库的良好集成。

%matplotlib 魔术函数可以设置 matplotlib 与 IPython 命令行或者 Jupyter notebook 集成,这个命令很重要,否则创建的图可能就不会出现。

在 IPython 中,运行 %matplotlib 命令可以生成多个绘图窗口,而无需干扰控制台会话。

例如:

%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
plt.plot( np.random.randn(50).cumsum())

输出为:
在这里插入图片描述

Python 语言基础

不同于 C/C++, Python 语言简练清晰。

Python 中使用缩进来组织代码,一个代码块中代码必须保持相同的缩进长度。在这里,强调不建议使用 tab 作为缩进,而是使用 4 个空格作为缩进。

Python 语句不用以分号结尾。

Python 的一个重要特征是对象模型的一致性。每个数值、字符串、数据结构、函数、类、模版以及所有存在于 Python 解释器中的食物,都是 Python 对象。每个对象都会关联到一种类型(例如字符串、函数)和内部数据。

Python 中注释有两种方式:1. 单行注释用 ‘#’, ‘#’ 之后的文本会自动被 Python 解释器忽略;2. 多行注释用 ‘’‘ ’‘’.

方法为 Python 对象的内部函数,它可以访问到对象内容的全部。格式如:obj.method(a,b,c).

在 Python 中,对一个变脸进行赋值时,就相当于创建了一个指向等号右边对象的引用
例如:

a = [1,2,3]
b = a
b.append(4)
a
# 输出结果为 [1,2,3,4], 即 a == [1,2,3,4]
# 这意味着 a, b 指向同一个变量
# is 关键字可检查是否指向同一个对象

赋值也被称为绑定,这是因为我们将一个变量名绑定到一个对象上。已经被赋值的变量名有时也会被称为被绑定变量。

当我们将对象作为参数传递给一个函数时,指向原始对象的新的本地变量机会被创建而无须赋值。
如果将一个新的对象绑定到一个内部函数的变量上,这种变更不会在上级范围中产生印象。

与 C/C++ 不同,Python 中对象引用并不涉及类型,但 Python 并不是“非类型化语言”。
例如:a = 5, 此时变量 a 的类型为 5, b = ‘6’, 此时变量 b 的类型为 str, 这便是对象引用不涉及类型的含义。同时,Python 中并不支持 b + a, 这便是强类型语言。

Python 中对象通常会有属性和方法。属性指的是 Python 对象内部存储的其他对象;方法指的是与对象内部对象有关的函数,相关的对象可以连接到对象内部数据。
属性与方法可以用形如obj.name的语法调用。


鸭子类型:“一个东西走起来像鸭子,叫起来像鸭子,那么它就是一个鸭子”。
具体到 Python 中为:不关心某个对象的具体类型,而在意它是否拥有某个特殊的方法。
例如,可以验证一个对象若实现了迭代器协议,则它一定是可以迭代的。


Python 中对象可分为可变对象与不可变对象。

可变对象例如列表、字典、NumPy数组等;不可变对象例如字符串、元组等。

Python 支持的二元操作符有:+, -, *, /, //, **, &, | , ^, ==, !=, <=, >=, <, >, is, is not.

Python 支持的三元表达式有:if-else.

Python 中标量有:None, str, bytes, float, bool, int.

Python 中数值类型有:int, float, str, bool.

Python 中的控制流有:if, elif, else; for, while; pass.


Python 中, range 函数返回一个迭代器,其基本格式为range( begin, end, step), 其中 begin 为闭区间,end 为开区间。
例如:
在这里插入图片描述

range 最常用于根据序列的索引来遍历序列:

t = [1,2,3,4]
for i in range( len(t)):val = t[i]