向量化字符串操作

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. Halcon 条形码识别

    read_image (Image, 'C:/Users/HJ/Desktop/test_image/image.png') create_bar_code_model([], [], BarCode ...

  2. golang的超时处理使用技巧

    原文链接:https://www.zhoubotong.site/post/57.html golang的超时处理 2天前Go实例技巧25   大家知道Select 是 Go 中的一个控制结构,每个  ...

  3. SELECT 的6大子句

    SELECT 6大子句的顺序: SELECT selection_list /*要查询的列名称*/, 结果的字段列表 FROM table_list /*要查询的表名称*/, 后面跟表,视图,多行多列 ...

  4. Python迷宫生成器

    作为一项古老的智力游戏,千百年来迷宫都散发着迷人的魅力.但是,手工设计迷宫费时又耗(脑)力,于是,我们有必要制作一个程序:迷宫生成器-- 好吧,我编不下去了.但是,从上面的文字中,我们可以看出,我们此 ...

  5. System类的常用方法和StringBuilder的原理

    System类的常用方法1.currentTimeMillis方法2.arraycopy方法 java.lang.System 类中提供大量的静态方法,可以获取与系统相关的信息或系统级操作,在Syst ...

  6. Pytorch Tensor 维度的扩充和压缩

    维度扩展 x.unsqueeze(n) 在 n 号位置添加一个维度 例子: import torch x = torch.rand(3,2) x1 = x.unsqueeze(0) # 在第一维的位置 ...

  7. 数据质量管理工具预研——Griffin VS Deequ VS Great expectations VS Qualitis

    开源数据质量管理工具预研--Griffin VS Deequ VS Great expectations VS Qualitis. 概述 ​ 数据质量监控(DQC)是最近很火的一个话题,也是数据治理中 ...

  8. 并查集和kruskal最小生成树算法

    并查集 先定义 int f[10100];//定义祖先 之后初始化 for(int i=1;i<=n;++i) f[i]=i; //初始化 下面为并查集操作 int find(int x)//i ...

  9. 递归概念&分类&注意事项和使用递归计算1-n之间的和

    递归 概述 递归:指在当前方法内调用自己的这种现象. 递归的分类: 递归分为两种,直接递归和间接递归 直接递归称为方法自身调用自己 简介递归可以A方法调用B方法,B方法调用C方法,C方法调用A方法 注 ...

  10. PHP几个工具函数

    移除XSS攻击脚本 function RemoveXSS($val) { // remove all non-printable characters. CR(0a) and LF(0b) and T ...