Python for Data Analysis v2 | Notes_ Chapter 1-2

本人以简书作者 SeanCheney 系列专题文章并结合原书为学习资源,记录个人笔记,仅作为知识记录及后期复习所用,原作者地址查看 简书 SeanCheney,如有错误,还望批评指教。——ZJ

原作者:SeanCheney | 链接 | 來源:简书

Github:wesm | Github:中文 BrambleXu|
简书:利用Python进行数据分析·第2版

环境:Python 3.6


第1章 准备工作

1.1 本书的内容

学习目标: 学会利用 Python 进行数据控制、处理、整理、分析等方面的具体细节和基本要点。掌握 Python 编程和用于数据处理的库和工具环境,成为数据分析专家。

什么样的数据?
  • 结构化数据(structured data)
    • 表格型数据,其中各列可能是不同的类型(字符串、数值、日期等)。比如保存在关系型数据库中或以制表符/逗号为分隔符的文本文件中的那些数据。
    • 多维数组(矩阵)。
    • 通过关键列(对于SQL用户而言,就是主键和外键)相互联系的多个表。
    • 间隔平均或不平均的时间序列。

这绝不是一个完整的列表。大部分数据集都能被转化为更加适合分析和建模的结构化形式。

1.2 为什么要使用Python进行数据分析

  • Python 现在已经成为最受欢迎的动态编程语言之一
  • Python 发展出了一个巨大而活跃的科学计算(scientific computing)社区。
  • Python 从一个边缘或“自担风险”的科学计算语言,成为了数据科学、机器学习、学界和工业界软件开发最重要的语言之一。
  • 由于Python的库(例如 pandas 和 scikit-learn)不断改良,使其成为数据分析任务的一个优选方案。结合其在通用编程方面的强大实力,我们完全可以只使用Python这一种语言构建以数据为中心的应用。
  • 解决“两种语言”问题 ,(很多组织通常都会用一种类似于领域特定的计算语言(如SAS和R)对新的想法进行研究、原型构建和测试,然后再将这些想法移植到某个更大的生产系统中去(可能是用Java、C#或C++编写的))Python不仅适用于研究和原型构建,同时也适用于构建生产系统。

1.3 重要的Python库

  • NumPy (Numerical Python的简称)是Python科学计算的基础包。本书大部分内容都基于NumPy以及构建于其上的库。它提供了以下功能(不限于此):

    • 快速高效的多维数组对象ndarray。
    • 用于对数组执行元素级计算以及直接对数组执行数学运算的函数。
    • 用于读写硬盘上基于数组的数据集的工具。
    • 线性代数运算、傅里叶变换,以及随机数生成。
      成熟的C API, 用于Python插件和原生C、C++、Fortran代码访问NumPy的数据结构和计算工具。
    • NumPy在数据分析方面还有另外一个主要作用,即作为在算法和库之间传递数据的容器。
  • pandas:提供了快速便捷处理结构化数据的大量数据结构和函数。

    • 助使Python成为强大而高效的数据分析环境
    • 本书用得最多的 pandas 对象是 DataFrame,它是一个面向列(column-oriented)的二维表结构,另一个是 Series ,一个一维的标签化数组对象。
    • pandas 兼具 NumPy 高性能的数组计算功能以及电子表格和关系型数据库(如SQL)灵活的数据处理功能。
    • 它提供了复杂精细的索引功能,以便更为便捷地完成重塑、切片和切块、聚合以及选取数据子集等操作。
    • 因为数据操作、准备、清洗是数据分析最重要的技能,pandas 是本书的重点。
    • 有标签轴的数据结构,支持自动或清晰的数据对齐。这可以防止由于数据不对齐,和处理来源不同的索引不同的数据,造成的错误。
    • 集成时间序列功能。
    • 相同的数据结构用于处理时间序列数据和非时间序列数据。
    • 保存元数据的算术运算和压缩。
    • 灵活处理缺失数据。
    • 合并和其它流行数据库(例如基于SQL的数据库)的关系操作。
  • matplotlib:是最流行的用于绘制图表和其它二维数据可视化的Python库

  • IPython 和 Jupyter:

    • IPython 大大提高交互式计算和软件开发的生产率
    • IPython 鼓励“执行-探索”的工作流,它还可以方便地访问系统的shell和文件系统
    • Jupyter 一个更宽泛的多语言交互计算工具的计划
    • Jupyter notebook,现在支持40种编程语言。IPython 现在可以作为Jupyter 使用 Python的内核(一种编程语言模式)
  • SciPy: 是一组专门解决科学计算中各种标准问题域的包的集合

    • scipy.integrate:数值积分例程和微分方程求解器。
    • scipy.linalg:扩展了由numpy.linalg提供的线性代数例程和矩阵分解功能。
    • scipy.optimize:函数优化器(最小化器)以及根查找算法。
    • scipy.signal:信号处理工具。
    • scipy.sparse:稀疏矩阵和稀疏线性系统求解器。
    • scipy.special:SPECFUN(这是一个实现了许多常用数学函数(如伽玛函数)的Fortran库)的包装器。
    • scipy.stats:标准连续和离散概率分布(如密度函数、采样器、连续分布函数等)、各种统计检验方法,以及更好的描述统计法。
  • scikit-learn: scikit-learn 成为了 Python 的通用机器学习工具包

    • 分类:SVM、近邻、随机森林、逻辑回归等等。
    • 回归:Lasso、岭回归等等。
    • 聚类:k-均值、谱聚类等等。
    • 降维:PCA、特征选择、矩阵分解等等。
    • 选型:网格搜索、交叉验证、度量。
    • 预处理:特征提取、标准化。
    • 与p andas、statsmodels 和 IPython一起,scikit-learn 对于 Python成为高效数据科学编程语言起到了关键作用。
  • statsmodels: 是一个统计分析包,statsmodels包含经典统计学和经济计量学的算法

    • 回归模型:线性回归,广义线性模型,健壮线性模型,线性混合效应模型等等。
    • 方差分析(ANOVA)。
    • 时间序列分析:AR,ARMA,ARIMA,VAR和其它模型。
    • 非参数方法: 核密度估计,核回归。
    • 统计模型结果可视化。

1.4 1.5 (略)

1.6 本书导航

  • 与外部世界交互

    阅读编写多种文件格式和数据商店;

  • 数据准备

    清洗、修改、结合、标准化、重塑、切片、切割、转换数据,以进行分析;

  • 转换数据

    对旧的数据集进行数学和统计操作,生成新的数据集(例如,通过各组变量聚类成大的表);

  • 建模和计算

    将数据绑定统计模型、机器学习算法、或其他计算工具;

  • 展示

    创建交互式和静态的图表可视化和文本总结。

引入惯例
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
import statsmodels as sm

第2章 Python 语法基础,IPython 和 Jupyter Notebooks

2.1 Python解释器

Python 是解释性语言。Python 解释器同一时间只能运行一个程序的一条语句。标准的交互 Python 解释器可以在命令行中通过键入 python 命令打开:

C:\Users\qhtf>python
Python 3.6.2 (v3.6.2:5fd33b5, Jul  8 2017, 04:57:36) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> print(input('what\'s your name:'))
what's your name: ZJ
 ZJ
>>> exit()

运行 Python 程序只需调用 Python 的同时,使用一个.py文件作为它的第一个参数。假设创建了一个 hello_world.py 文件,它的内容是:

print('Hello world')

你可以用下面的命令运行它(hello_world.py文件必须位于终端的工作目录):

$ python hello_world.py
Hello world
  • 一些 Python 程序员总是这样执行 Python 代码的,从事数据分析和科学计算的人却会使用 IPython,一个强化的 Python 解释器,或 Jupyter notebooks,一个网页代码笔记本,它原先是 IPython 的一个子项目。

  • 当你使用 %run 命令,IPython会同样执行指定文件中的代码,结束之后,还可以与结果交互:

D:\github\pythonpractice>ipython
Python 3.6.2 (v3.6.2:5fd33b5, Jul  8 2017, 04:57:36) [MSC v.1900 64 bit (AMD64)]
Type 'copyright', 'credits' or 'license' for more information
IPython 6.2.1 -- An enhanced Interactive Python. Type '?' for help.

In [1]: %run hello.py
Hello World

In [2]: exit()

2.2 IPython 基础

运行 IPython Shell

  • 你可以用 ipython 在命令行打开 IPython Shell,就像打开普通的 Python 解释器
  • 你可以通过输入代码并按Return(或Enter),运行任意Python语句。当你只输入一个变量,它会显示代表的对象:
In [1]: import numpy as np

In [2]: data  = {i : np.random.randn() for i in range(7)}

In [3]: data
Out[3]:
{
  0: -0.7871942220349025,
 1: 0.5968958863243701,
 2: -0.670023515225677,
 3: -0.030930268126603183,
 4: 2.0550986476324473,
 5: -0.7468422713170355,
 6: -0.2948531366214833}

In [4]: exit()
  • 运行 Jupyter Notebook (略)

  • Tab 自动补全(略)

  • 自省:在变量前后使用问号?,可以显示对象的信息:


In [1]: b = [2,3,4,5]

In [2]: b?
Type:        list
String form: [2, 3, 4, 5]
Length:      4
Docstring:
list() -> new empty list
list(iterable) -> new list initialized from iterable's items

In [3]: exit()
  • 这可以作为对象的自省。如果对象是一个函数或实例方法,定义过的文档字符串,也会显示出信息。假设我们写了一个如下的函数:
In [1]: def add_number(a, b):
   ...:     '''
   ...:     Add two numbers together
   ...:     Returns
   ...:     ---------
   ...:     the_sum : type of arguments
   ...:     '''
   ...:     return a + b
   ...:
  • 然后使用?符号,就可以显示如下的文档字符串:

In [2]: add_number?
Signature: add_number(a, b)
Docstring:
Add two numbers together
Returns
---------
the_sum : type of arguments
File:      d:\github\pythonpractice\<ipython-input-1-0d88bc512be6>
Type:      function

In [3]: exit()
  • 使用??会显示函数的源码:
In [2]: add_number??
Signature: add_number(a, b)
Source:
def add_number(a, b):
    '''
    Add two numbers together
    Returns
    ---------
    the_sum : type of arguments
    '''
    return a + b
File:      d:\github\pythonpractice\<ipython-input-1-0d88bc512be6>
Type:      function
  • ?还有一个用途,就是像 Unix 或 Windows 命令行一样搜索 IPytho n的命名空间。字符与通配符结合可以匹配所有的名字。例如,我们可以获得所有包含load的顶级 NumPy 命名空间:
def f(x,y,z):
   return (x +y)/z

a = 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值