向量化字符串操作

Series 和 Index对象 的str属性。

可以正确的处理缺失值

方法列表

正则表达式。

Method Description
match() Call re.match() on each element, returning a boolean.
extract() Call re.match() on each element, returning matched groups as strings.
findall() Call re.findall() on each element
replace() Replace occurrences of pattern with some other string
contains() Call re.search() on each element, returning a boolean
count() Count occurrences of pattern
split() Equivalent to str.split(), but accepts regexps
rsplit() Equivalent to str.rsplit(), but accepts regexps

其他字符串方法

Method Description
get() Index each element
slice() Slice each element
slice_replace() Replace slice in each element with passed value
cat() Concatenate strings
repeat() Repeat values
normalize() Return Unicode form of string
pad() Add whitespace to left, right, or both sides of strings
wrap() Split long strings into lines with length less than a given width
join() Join strings in each element of the Series with passed separator
get_dummies() extract dummy variables as a dataframe



处理时间序列

Pandas 最初是为金融模型而创建的。

  • 时间戳: 表示某个具体的时间点
  • 时间间隔与周期:开始与结束的时间长度
  • 时间增量 time delta 或 持续时间 duration 表示精确 的 时间长度。

原生python的日期 和时间工具: datetime dateutil



一旦有了datetime对象,就可以做很多操作

原生的处理数据量大的时间就会比较慢。

时间类型数组, Numpy的datetime64 类型



有了 日期格式,就可以进行快速的向量化运算

日期 与 时间单位格式代码

Code Meaning Time span (relative) Time span (absolute)
Y Year ± 9.2e18 years [9.2e18 BC, 9.2e18 AD]
M Month ± 7.6e17 years [7.6e17 BC, 7.6e17 AD]
W Week ± 1.7e17 years [1.7e17 BC, 1.7e17 AD]
D Day ± 2.5e16 years [2.5e16 BC, 2.5e16 AD]
h Hour ± 1.0e15 years [1.0e15 BC, 1.0e15 AD]
m Minute ± 1.7e13 years [1.7e13 BC, 1.7e13 AD]
s Second ± 2.9e12 years [ 2.9e9 BC, 2.9e9 AD]
ms Millisecond ± 2.9e9 years [ 2.9e6 BC, 2.9e6 AD]
us Microsecond ± 2.9e6 years [290301 BC, 294241 AD]
ns Nanosecond ± 292 years [ 1678 AD, 2262 AD]
ps Picosecond ± 106 days [ 1969 AD, 1970 AD]
fs Femtosecond ± 2.6 hours [ 1969 AD, 1970 AD]
as Attosecond ± 9.2 seconds [ 1969 AD, 1970 AD]

Pandas的日期与时间工具: 理想与现实的最佳解决方案

Timestamp对象。 结合 numpy.datetime64 的有效存储和向量化接口 和 datetime / dateutil的易用性。

Pandas时间蓄力:用时间作索引



取值操作。直接可以通过年份

Pandas 的时间序列数据结构

  • 对应的索引数据结构是DatetimeIndex
  • 针对时间周期数据, Pandas提供了Period类型。 对应的索引数据结构是 PeriodIndex
  • 针对时间增量或者持续时间,Pandas提供了Timedelta类型。 对应的索引数据结构 TimedeltaIndex

    最基础的日期/时间对象是Timestamp 和 DatetimeIndex. 可以直接使用。

    最常用的方法是pd.to_datetime()函数。可以解析许多日期与时间格式

    输入一个日期会返回Timestamp类型。

    输入一个时间序列会返回一个DatetimeIndex类型。

任何DatetimeIndex类型都可以通过to_period()方法和一个频率代码转换成PeriodIndex类型。



当一个日期减去另一个日期,返回的结果是TimedeltaIndex类型

有规律的时间序列

更简便的创建有规律的时间序列。

  • pd.date_range()可以处理时间戳





    通过freq参数改变时间间隔,默认值是D

  • pd.period_range()可以处理周期

  • pd.timedelta_range()可以处理时间间隔

    pd.timedelta_range(0, periods=10, freq='H')

时间频率与偏移量

Pandas时间序列工具的基础是时间频率或偏移量offset代码。

Code Description Code Description
D Calendar day B Business day
W Weekly
M Month end BM Business month end
Q Quarter end BQ Business quarter end
A Year end BA Business year end
H Hours BH Business hours
T Minutes
S Seconds
L Milliseonds
U Microseconds
N nanoseconds

带开始 索引的频率 代码

Code Description Code Description
MS Month start BMS Business month start
QS Quarter start BQS Business quarter start
AS Year start BAS Business year start

可以加三位月份缩写字母来改变季、年频率的开始时间

Q-JAN, BQ-FEB, QS-MAR, BQS-APR, etc.

A-JAN, BA-FEB, AS-MAR, BAS-APR, etc.

同理 可以加三位 星期缩写字母来改变一周开始的时间

W-SUN, W-MON, W-TUE, W-WED, etc.

可以组合 。

创建一个工作日偏移序列

重新取样、迁移、窗口

超时。数据获取不到。淦。。。不学了。

from pandas_datareader import data

goog = data.DataReader('GOOG', start='2004', end='2016', data_source='yahoo')

goog.head()

重新取样与频率转换。

经常需要按照新的频率 对数据进行重新取样

可以通过resample()方法 or asfreq()方法。

resample 以数据累计 为基础

asfreq 以数据选择 为基础

goog.plot(alpha=0.5, style='-')

goog.resample('BA').mean().plot(style='

goog.asfreq('BA').plot(style='--');

plt.legend(['input', 'resample', 'asfreq'],

loc='upper left');

时间迁移

对数据按照时间进行迁移。

shift 和tshift

shift迁移数据

tshift迁移索引

移动时间窗口

移动统计值, rolling()属性来实现

高性能Pandas: eval() 与 query()

pandas.eval()

普通计算



使用eval,快一倍。内存消耗更少。

使用DataFrame.eval()实现列间运算。

使用eval的好处是 可以借助列名进行 运算。



Python数据科学手册-Pandas:向量化字符串操作、时间序列的更多相关文章

  1. Python数据科学手册-Pandas:累计与分组

    简单累计功能 Series sum() 返回一个 统计值 DataFrame sum.默认对每列进行统计 设置axis参数,对每一行 进行统计 describe()可以计算每一列的若干常用统计值. 获 ...

  2. Python数据科学手册-Pandas:数值运算方法

    Numpy 的基本能力之一是快速对每个元素进行运算 Pandas 继承了Numpy的功能,也实现了一些高效技巧. 对于1元运算,(函数,三角函数)保留索引和列标签 对于2元运算,(加法,乘法),Pan ...

  3. Python数据科学手册-Pandas:数据取值与选择

    Numpy数组取值 切片[:,1:5], 掩码操作arr[arr>0], 花哨的索引 arr[0, [1,5]],Pandas的操作类似 Series数据选择方法 Series对象与一维Nump ...

  4. Python数据科学手册-Pandas数据处理之简介

    Pandas是在Numpy基础上建立的新程序库,提供了一种高效的DataFrame数据结构 本质是带行标签 和 列标签.支持相同类型数据和缺失值的 多维数组 增强版的Numpy结构化数组 行和列不在只 ...

  5. Python数据科学手册-Pandas:合并数据集

    将不同的数据源进行合并 , 类似数据库 join merge . 工具函数 concat / append pd.concat() 简易合并 合并高维数据 默认按行合并. axis=0 ,试试 axi ...

  6. Python数据科学手册-Pandas:层级索引

    一维数据 和 二维数据 分别使用Series 和 DataFrame 对象存储. 多维数据:数据索引 超过一俩个 键. Pandas提供了Panel 和 Panel4D对象 解决三维数据和四维数据. ...

  7. 100天搞定机器学习|day45-53 推荐一本豆瓣评分9.3的书:《Python数据科学手册》

    <Python数据科学手册>共五章,每章介绍一到两个Python数据科学中的重点工具包.首先从IPython和Jupyter开始,它们提供了数据科学家需要的计算环境:第2章讲解能提供nda ...

  8. Python数据科学手册

    Python数据科学手册(高清版)PDF 百度网盘 链接:https://pan.baidu.com/s/1KurSdjNWiwMac3o3iLrzBg 提取码:qogy 复制这段内容后打开百度网盘手 ...

  9. Matplotlib 使用 - 《Python 数据科学手册》学习笔记

    一.引入 import matplotlib as mpl import matplotlib.pyplot as plt 二.配置 1.画图接口 Matplotlib 有两种画图接口: (1)一个是 ...

随机推荐

  1. [BJDCTF2020]The mystery of ip|[CISCN2019 华东南赛区]Web11|SSTI注入

    记录一下BUUCTF中两个类似的SSTI注入关卡 [BJDCTF2020]The mystery of ip-1: 1.打开之后显示如下: 2.在hint.php中进行了相关提示,如下: 3.既然获取 ...

  2. Root用户无法使用Tab补齐解决

    1. sudo vim /etc/bash.bashrc 2.取消以下注释 #if [ -f /etc/bash_completion ]; then # . /etc/bash_completion ...

  3. day10 Map_查找与遍历

    Map 查找表 Map体现的结构是一个多行两列的表格,其中左列称为key,右列称为value. Map总是成对保存数据,并且总是根据key获取对应的value.因此我们可以将查询的条件作为key查询对 ...

  4. HBase学习(二) 基本命令 Java api

    一.Hbase shell 1.Region信息观察 创建表指定命名空间 在创建表的时候可以选择创建到bigdata17这个namespace中,如何实现呢? 使用这种格式即可:'命名空间名称:表名' ...

  5. JavaScript进阶内容——jQuery

    JavaScript进阶内容--jQuery 我们在前面的文章中已经掌握了JavaScript的全部内容,现在让我们了解一下JavaScript库 这篇文章主要是为了为大家大致讲解JavaScript ...

  6. AtCoder Beginner Contest 253 F - Operations on a Matrix // 树状数组

    题目传送门:F - Operations on a Matrix (atcoder.jp) 题意: 给一个N*M大小的零矩阵,以及Q次操作.操作1(l,r,x):对于 [l,r] 区间内的每列都加上x ...

  7. Möbius 反演注记

    目录 基本理论基础 数论函数 线性筛 Mobius 反演 Dirichlet 卷积 数论分块 / 整除分块 拆函数 时间复杂度分析 基本形式 GCD 形 万能 Prod 的莫比乌斯反演 正常例题 YY ...

  8. 如何让 JS 代码不可断点

    绕过断点 调试 JS 代码时,单步执行(F11)可跟踪所有操作.例如这段代码,每次调用 alert 时都会被断住: debugger alert(11) alert(22) alert(33) ale ...

  9. 5.30 NOI 模拟

    $5.30\ NOI $模拟 高三大哥最后一次模拟考了,祝他们好运 \(T1\)装箱游戏 显然可以将四种字母之间的空缺当做状态枚举 那么这道题就很显然了 #include<bits/stdc++ ...

  10. Linux入门操作介绍

    Linux 是由unix衍生而来(小知识:mac也是使用unix核心),由全世界的程序员一起开发的开源系统.如今基于linux已经有了很多版本,我们后面使用的就是衍生版本之一的Ubuntu. Ubun ...