向量化字符串操作

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. GaussDB(for MySQL) :Partial Result Cache,通过缓存中间结果对算子进行加速

    摘要:华为云数据库高级内核技术专家详解GaussDB(for MySQL)Partial Result Cache特性,如何通过缓存中间结果对算子进行加速? 本文分享自华为云社区<GaussDB ...

  2. SpringBoot接口 - 如何优雅的对参数进行校验?

    在以SpringBoot开发Restful接口时, 对于接口的查询参数后台也是要进行校验的,同时还需要给出校验的返回信息放到上文我们统一封装的结构中.那么如何优雅的进行参数的统一校验呢? @pdai ...

  3. AlterNats是如何做到高性能的发布订阅的?

    前言 在过去的一些文章里面,我们聊了一些.NET平台上高性能编程的技巧,今天带大家了解一下AlterNats这个库是如何做到远超同类SDK性能的. NATS:NATS是一个开源.轻量级.高性能的分布式 ...

  4. SQLZOO练习二--SELECT from Nobel Tutorial

    We continue practicing simple SQL queries on a single table. This tutorial is concerned with a table ...

  5. 串口应用:遵循uart协议发送N位数据(状态优化为3个,适用任意长度的输入数据,取寄存器中的一段(用变量作为边界))

    上一节中成功实现了发送多个字节的数据.把需要发送的数据分成多段遵循uart协议的数据依次发送.上一节是使用状态机实现的,每发一次设定为一个状态,所以需要发送的数据越多,状态的个数越多,代码越长,因而冗 ...

  6. Dos系统操作小技巧汇总(不定时更新)

    1.笔者发现有时候自己的程序取名如果太长的话,每次使用gcc编译的时候自己手打的话会非常痛苦,在dos下有一个非常方便的方法,那就是打出相关程序的前几个字母,然后就可以通过tab键来切换相关程序名,非 ...

  7. Stream流中的常用方法foeEach和Stream流中的常用方法filter

    延迟方法:返回值类型仍然是Stream接口自身类型的方法,因此支持链式调用.(除了中介方法外,其余方法均为延迟方法) 终结方法:返回值类型不再是Stream接口自身类型的方法,因此不再支持类似Stri ...

  8. CSS 上下居中和最低高度语法

    /*上下居中*/ vertical-align:center; font-size=line-height; /*最低高度*/ height:auto!important; height:400px; ...

  9. wdos centos64位通过yum来升级PHP

    通过yum list installed | grep php可以查看所有已安装的php软件 使用yum remove php -- 将所有的包删除 通过yum list php*查看是否有自己需要安 ...

  10. Python 实现列表与二叉树相互转换并打印二叉树封装类-详细注释+完美对齐

    # Python 实现列表与二叉树相互转换并打印二叉树封装类-详细注释+完美对齐 from binarytree import build import random # https://www.cn ...