向量化字符串操作

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. Educational Codeforces Round 129 (Rated for Div. 2) A-D

    Educational Codeforces Round 129 (Rated for Div. 2) A-D A 题目 https://codeforces.com/contest/1681/pro ...

  2. springboot项目上传存储图片到七牛云服务器

    springboot项目上传存储图片到七牛云服务器 问题描述: 当图片存在本地时会出现卡顿的现象.比如一篇图文混排的文章,如果图片没有加载完,可能整个文章都显示不出来,因为它们都是用的同一个服务器. ...

  3. Java学习第二周

    这一周观看了黑马程序员毕向东的教学视频学习了数组的创建:数组元素的使用及遍历,类的声明,成员方法的声明,构造器的声明 数据类型[] 数组名 = new 数据类型[长度];数据类型[] 数组名 = {数 ...

  4. 第2章 开始学习C++

    说明 看<C++ Primer Plus>时整理的学习笔记,部分内容完全摘抄自<C++ Primer Plus>(第6版)中文版,Stephen Prata 著,张海龙 袁国忠 ...

  5. MyBatis-通用Mapper-tk.mybatis的使用

    MyBatis-通用Mapper[更新中] tk.mybatis的使用 前言 使用MyBatis开发,如果是普通是同MyBatis进行开发,那么就需要在xml文件中编写大量的SQL.当数据库表结构发生 ...

  6. python 线程理解

    简介 一个应用程序由多个进程组成,一个进程有多个线程,一个线程则是操作系统调度的最小单位,当应用程序运行时,操作系统根据优先级和时间片调度线程(决定此时此刻执行哪个线程). python的线程 pyt ...

  7. Odoo 14 升级模块后为什么template不生效?

    # 升级模块后为什么template不生效? # 直接原因是因为你在record标签的父级data标签标签中设置了noupdate为true.这就导致你后面无论你怎么修改data下面的子标签内容,都不 ...

  8. 结束语句之 continue

    C 语言自学之 continue Dome1:计算1到20之间不能被3整除的数字之和.               运算结果为: sum=147 1 #include<stdio.h> 2 ...

  9. Apache DolphinScheduler ASF 孵化器毕业一周年,汇报来了!

    不知不觉,Apache DolphinScheduler 已经从 Apache 软件基金会(以下简称 ASF)孵化器毕业一年啦! 北京时间 2021 年 4 月 9 日,ASF 官方宣布 Apache ...

  10. Git 06 分支

    参考源 https://www.bilibili.com/video/BV1FE411P7B3?spm_id_from=333.999.0.0 版本 本文章基于 Git 2.35.1.2 概述 分支用 ...