人生苦短,我用 Python

前文传送门:

小白学 Python 数据分析(1):数据分析基础

概览

首先还是几个官方链接放一下:

Pandas 官网:https://pandas.pydata.org/

Pandas 中文网:https://www.pypandas.cn/

Pandas Github:https://github.com/pandas-dev/pandas

先介绍一下 Pandas ,在中文网上是这么描述的:

Pandas 是 Python 的核心数据分析支持库,提供了快速、灵活、明确的数据结构,旨在简单、直观地处理关系型、标记型数据。Pandas 的目标是成为 Python 数据分析实践与实战的必备高级工具,其长远目标是成为最强大、最灵活、可以支持任何语言的开源数据分析工具。经过多年不懈的努力,Pandas 离这个目标已经越来越近了。

总结一下,就是 Python 数据分析离不开 Pandas , Pandas 已经上升成为 Python 的数据分析的支持库了。

那么 Pandas 所适用的数据类型如下:

  • 与 SQL 或 Excel 表类似的,含异构列的表格数据;
  • 有序和无序(非固定频率)的时间序列数据;
  • 带行列标签的矩阵数据,包括同构或异构型数据;
  • 任意其它形式的观测、统计数据集, 数据转入 Pandas 数据结构时不必事先标记。

Pandas 有两种常用的数据结构,一个是 Series (一维数据),另一个是 DataFrame (二维数据)。两种数据结构足以处理金融、统计、社会科学、工程等领域里的大多数典型用例。

那么什么是一维数据什么是二维数据呢?

简单理解下,如果我们有一个数组,如下:

[1, 2, 3, 4, 5]

这个数组可以称为一维数据。

那么二维数据是多个一维数据组成了一个二维数据,比如多个一维数组,如下:

[[1, 2, 3, 4, 5],
[1, 2, 3, 4, 5],
[1, 2, 3, 4, 5],
[1, 2, 3, 4, 5]]

这种数据也可以称之为表格数据,既然是表格数据,那么就会有表头,可以参考 Excel ,如果有数据库使用经验的同学可以直接参考数据库中的表。

Pandas 是基于 Numpy 开发而成的,可以与其它第三方科学计算支持库完美集成。

Pandas 的优势如下:

  • 处理浮点与非浮点数据里的缺失数据,表示为 NaN
  • 大小可变:插入或删除 DataFrame 等多维对象的列;
  • 自动、显式数据对齐:显式地将对象与一组标签对齐,也可以忽略标签,在 Series、DataFrame 计算时自动与数据对齐;
  • 强大、灵活的分组(group by)功能:拆分-应用-组合数据集,聚合、转换数据;
  • 把 Python 和 NumPy 数据结构里不规则、不同索引的数据轻松地转换为 DataFrame 对象;
  • 基于智能标签,对大型数据集进行切片花式索引子集分解等操作;
  • 直观地合并(merge)连接(join)数据集;
  • 灵活地重塑(reshape)透视(pivot)数据集;
  • 支持结构化标签:一个刻度支持多个标签;
  • 成熟的 IO 工具:读取文本文件(CSV 等支持分隔符的文件)、Excel 文件、数据库等来源的数据,利用超快的 HDF5 格式保存 / 加载数据;
  • 时间序列:支持日期范围生成、频率转换、移动窗口统计、移动窗口线性回归、日期位移等时间序列功能。

这些功能主要是为了解决其它编程语言、科研环境的痛点。处理数据一般分为几个阶段:数据整理与清洗、数据分析与建模、数据可视化与制表,Pandas 是处理数据的理想工具。

其它说明:

  • Pandas 速度很快。Pandas 的很多底层算法都用 Cython 优化过。然而,为了保持通用性,必然要牺牲一些性能,如果专注某一功能,完全可以开发出比 Pandas 更快的专用工具。
  • Pandas 是 statsmodels ( statsmodels 是 python 中处理统计学问题的重要模块)的依赖项,因此,Pandas 也是 Python 中统计计算生态系统的重要组成部分。
  • Pandas 已广泛应用于金融领域。

什么是 Cython ?

C 语言是编译性语言,而 Python 则是解释性语言,简而言之,就是 Python 运行是逐行运行,不需要实现编译,而 C 需要在运行前编译。那么,可想而知,如果运行前,需要事先编译,那么其实有一种「上帝视角」的感觉,自然可以做很多优化,让代码运行的更快。而 Cython 的出现就是这个目的,让 Python 也可以被编译,然后执行。 Cython 是一种部分包含和改变 C 语言,以及完全包含 Python 语言的一个语言集合。 Cython 是用 Python 实现的一种语言,可以用来写 Python 扩展,用它写出来的库都可以通过 import 来载入,性能上比 Python 的快。 Cython 里可以载入 Python 扩展(比如 import math),也可以载入 C 的库的头文件(比如:cdef extern from “math.h”),另外也可以用它来写 Python 代码。将关键部分重写成 C 扩展模块。 Cython 中的强大之处在于可以把 Python 和 C 结合起来,它使得看起来像 Python 语言的 Cython 代码有着和 C 相似的运行速度。

Pandas 通过这种方式保持了自己的运行速度。

安装

Pandas 的安装比较简单,使用一句命令,如下:

pip install Pandas

如果看到如下显示证明安装成功:

Looking in indexes: https://mirrors.aliyun.com/pypi/simple/
Collecting Pandas
Downloading https://mirrors.aliyun.com/pypi/packages/02/d0/1e8e60e61e748338e3a40e42f5dfeee63ccdecfc4f0894122b890bfb009a/pandas-0.25.3-cp37-cp37m-win_amd64.whl (9.2MB)
|████████████████████████████████| 9.2MB 6.4MB/s
Requirement already satisfied: pytz>=2017.2 in c:\users\inwsy\appdata\local\programs\python\python37\lib\site-packages (from Pandas) (2019.2)
Collecting python-dateutil>=2.6.1
Downloading https://mirrors.aliyun.com/pypi/packages/d4/70/d60450c3dd48ef87586924207ae8907090de0b306af2bce5d134d78615cb/python_dateutil-2.8.1-py2.py3-none-any.whl (227kB)
|████████████████████████████████| 235kB 6.4MB/s
Collecting numpy>=1.13.3
Downloading https://mirrors.aliyun.com/pypi/packages/a9/38/f6d6d8635d496d6b4ed5d8ca4b9f193d0edc59999c3a63779cbc38aa650f/numpy-1.18.1-cp37-cp37m-win_amd64.whl (12.8MB)
|████████████████████████████████| 12.8MB 6.4MB/s
Requirement already satisfied: six>=1.5 in c:\users\inwsy\appdata\roaming\python\python37\site-packages (from python-dateutil>=2.6.1->Pandas) (1.12.0)
Installing collected packages: python-dateutil, numpy, Pandas
Successfully installed Pandas-0.25.3 numpy-1.18.1 python-dateutil-2.8.1

从安装的日志中可以看到,这里并是不只安装 Pandas ,而是顺带安装了 Numpy 和 Python-Dateutil ,因为这两个库是 Pandas 的依赖库,实际上, Pandas 的依赖库不止这两个,官方推荐的依赖库具体如下:

Package 最低支持版本
setuptools 24.2.0
NumPy 1.13.3
python-dateutil 2.6.1
pytz 2017.2

这里要注意一点,官方强烈建议我们安装这些库,因为这些库可以提高处理速度,尤其是在处理大型数据集时。

Pandas 还有许多可选的依赖库,仅用于特定的方法。例如,pandas.read_hdf() 需要pytables包。 如果未安装可选依赖项,则在调用需要该依赖项的方法时,pandas将引发ImportError

依赖名称 最低版本 注意
BeautifulSoup4 4.6.0 HTML parser for read_html (see note)
Jinja2 Conditional formatting with DataFrame.style
PyQt4 Clipboard I/O
PyQt5 Clipboard I/O
PyTables 3.4.2 HDF5-based reading / writing
SQLAlchemy 1.1.4 SQL support for databases other than sqlite
SciPy 0.19.0 Miscellaneous statistical functions
XLsxWriter 0.9.8 Excel writing
blosc Compression for msgpack
fastparquet 0.2.1 Parquet reading / writing
gcsfs 0.2.2 Google Cloud Storage access
html5lib HTML parser for read_html (see note)
lxml 3.8.0 HTML parser for read_html (see note)
matplotlib 2.2.2 Visualization
openpyxl 2.4.8 Reading / writing for xlsx files
pandas-gbq 0.8.0 Google Big Query access
psycopg2 PostgreSQL engine for sqlalchemy
pyarrow 0.9.0 Parquet and feather reading / writing
pymysql 0.7.11 MySQL engine for sqlalchemy
pyreadstat SPSS files (.sav) reading
pytables 3.4.2 HDF5 reading / writing
qtpy Clipboard I/O
s3fs 0.0.8 Amazon S3 access
xarray 0.8.2 pandas-like API for N-dimensional data
xclip Clipboard I/O on linux
xlrd 1.1.0 Excel reading
xlwt 1.2.0 Excel writing
xsel Clipboard I/O on linux
zlib Compression for msgpack

参考

https://blog.csdn.net/mou_it/article/details/81876879

https://www.pypandas.cn/docs/installation.html

https://www.pypandas.cn/docs/getting_started/overview.html

小白学 Python 数据分析(2):Pandas (一)概述的更多相关文章

  1. 小白学 Python 数据分析(3):Pandas (二)数据结构 Series

    在家为国家做贡献太无聊,不如跟我一起学点 Python 顺便问一下,你们都喜欢什么什么样的文章封面图,老用这一张感觉有点丑 人生苦短,我用 Python 前文传送门: 小白学 Python 数据分析( ...

  2. 小白学 Python 数据分析(4):Pandas (三)数据结构 DataFrame

    在家为国家做贡献太无聊,不如跟我一起学点 Python 人生苦短,我用 Python 前文传送门: 小白学 Python 数据分析(1):数据分析基础 小白学 Python 数据分析(2):Panda ...

  3. 小白学 Python 数据分析(5):Pandas (四)基础操作(1)查看数据

    在家为国家做贡献太无聊,不如跟我一起学点 Python 人生苦短,我用 Python 前文传送门: 小白学 Python 数据分析(1):数据分析基础 小白学 Python 数据分析(2):Panda ...

  4. 小白学 Python 数据分析(6):Pandas (五)基础操作(2)数据选择

    人生苦短,我用 Python 前文传送门: 小白学 Python 数据分析(1):数据分析基础 小白学 Python 数据分析(2):Pandas (一)概述 小白学 Python 数据分析(3):P ...

  5. 小白学 Python 数据分析(7):Pandas (六)数据导入

    人生苦短,我用 Python 前文传送门: 小白学 Python 数据分析(1):数据分析基础 小白学 Python 数据分析(2):Pandas (一)概述 小白学 Python 数据分析(3):P ...

  6. 小白学 Python 数据分析(8):Pandas (七)数据预处理

    人生苦短,我用 Python 前文传送门: 小白学 Python 数据分析(1):数据分析基础 小白学 Python 数据分析(2):Pandas (一)概述 小白学 Python 数据分析(3):P ...

  7. 小白学 Python 数据分析(9):Pandas (八)数据预处理(2)

    人生苦短,我用 Python 前文传送门: 小白学 Python 数据分析(1):数据分析基础 小白学 Python 数据分析(2):Pandas (一)概述 小白学 Python 数据分析(3):P ...

  8. 小白学 Python 数据分析(10):Pandas (九)数据运算

    人生苦短,我用 Python 前文传送门: 小白学 Python 数据分析(1):数据分析基础 小白学 Python 数据分析(2):Pandas (一)概述 小白学 Python 数据分析(3):P ...

  9. 小白学 Python 数据分析(11):Pandas (十)数据分组

    人生苦短,我用 Python 前文传送门: 小白学 Python 数据分析(1):数据分析基础 小白学 Python 数据分析(2):Pandas (一)概述 小白学 Python 数据分析(3):P ...

随机推荐

  1. lua字符串分割函数[适配中文特殊符号混合]

    lua的官方函数里无字符串分割,起初写了个简单的,随之发现如果是中文.字符串.特殊符号就会出现分割错误的情况,所以就有了这个zsplit. function zsplit(strn, chars) f ...

  2. node多进程的创建与守护

    node是单线程运行,我们的node项目如何利用多核CPU的资源,同时提高node服务的稳定性呢? 1. node的单线程 进程是一个具有一定独立功能的程序在一个数据集上的一次动态执行的过程,是操作系 ...

  3. mongodb安装及安装MongoDB报错Verify that you have sufficient privileges to start system services解决方法

    1.点击安装包mongodb-win32-x86_64-2012plus-4.2.2-signed进行安装 2.点击next 3.接受协议,点击next 4.点击自定义安装 选择安装路径,建议默认C盘 ...

  4. Codeforces Round #519 by Botan Investments(前五题题解)

    开个新号打打codeforces(以前那号玩废了),结果就遇到了这么难一套.touristD题用了map,被卡掉了(其实是对cf的评测机过分自信),G题没过, 700多行代码,码力惊人.关键是这次to ...

  5. Theia APIs——事件

    上一篇:Theia APIs——Preferences 事件 Theia中的事件或许会让你感到困惑,希望本节能阐述清楚. 来看下面的代码: (来自logger-watcher.ts) @injecta ...

  6. 投票:OAuth2.0 技术选型你会怎么选

    1. 前言 在使用 OAuth2.0 中 Authorization Server (授权服务器)是一个回避不了的设施,在大多数情况下我们调用的是一些知名的.可靠的.可信任的第三方平台,比如 QQ.微 ...

  7. GeneXus DevOps 自动化构建和部署流程

    以下视频详细介绍了GeneXus DevOps自动化构建和部署流程,包括通过MS Bulid来管理自动化流程,自动化的架构,以及在GeneXus Server上使用Jenkins做为自动化引擎. 视频 ...

  8. C#实现文件Move操作和文件的Copy操作

    文件移动(Move)操作和文件的复制(Copy)是C#程式开发经常遇到的方法,根据传入的源文件地址和目标文件地址参数,实现对文件的操作.实现代码如下: Move操作代码: public static ...

  9. Golang 正则匹配 -- regexp

    匹配特殊字符 //re :=regexp.MustCompile("[~!@#$%^&*(){}|<>\\\\/+\\-[]:\"?'::''"&qu ...

  10. Java 多线程安全问题简单切入详细解析

    线程安全 假如Java程序中有多个线程在同时运行,而这些线程可能会同时运行一部分的代码.如果说该Java程序每次运行的结果和单线程的运行结果是一样的,并且其他的变量值也都是和预期的结果是一样的,那么就 ...