Python数据科学手册-Pandas:向量化字符串操作、时间序列
向量化字符串操作
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:向量化字符串操作、时间序列的更多相关文章
- Python数据科学手册-Pandas:累计与分组
简单累计功能 Series sum() 返回一个 统计值 DataFrame sum.默认对每列进行统计 设置axis参数,对每一行 进行统计 describe()可以计算每一列的若干常用统计值. 获 ...
- Python数据科学手册-Pandas:数值运算方法
Numpy 的基本能力之一是快速对每个元素进行运算 Pandas 继承了Numpy的功能,也实现了一些高效技巧. 对于1元运算,(函数,三角函数)保留索引和列标签 对于2元运算,(加法,乘法),Pan ...
- Python数据科学手册-Pandas:数据取值与选择
Numpy数组取值 切片[:,1:5], 掩码操作arr[arr>0], 花哨的索引 arr[0, [1,5]],Pandas的操作类似 Series数据选择方法 Series对象与一维Nump ...
- Python数据科学手册-Pandas数据处理之简介
Pandas是在Numpy基础上建立的新程序库,提供了一种高效的DataFrame数据结构 本质是带行标签 和 列标签.支持相同类型数据和缺失值的 多维数组 增强版的Numpy结构化数组 行和列不在只 ...
- Python数据科学手册-Pandas:合并数据集
将不同的数据源进行合并 , 类似数据库 join merge . 工具函数 concat / append pd.concat() 简易合并 合并高维数据 默认按行合并. axis=0 ,试试 axi ...
- Python数据科学手册-Pandas:层级索引
一维数据 和 二维数据 分别使用Series 和 DataFrame 对象存储. 多维数据:数据索引 超过一俩个 键. Pandas提供了Panel 和 Panel4D对象 解决三维数据和四维数据. ...
- 100天搞定机器学习|day45-53 推荐一本豆瓣评分9.3的书:《Python数据科学手册》
<Python数据科学手册>共五章,每章介绍一到两个Python数据科学中的重点工具包.首先从IPython和Jupyter开始,它们提供了数据科学家需要的计算环境:第2章讲解能提供nda ...
- Python数据科学手册
Python数据科学手册(高清版)PDF 百度网盘 链接:https://pan.baidu.com/s/1KurSdjNWiwMac3o3iLrzBg 提取码:qogy 复制这段内容后打开百度网盘手 ...
- Matplotlib 使用 - 《Python 数据科学手册》学习笔记
一.引入 import matplotlib as mpl import matplotlib.pyplot as plt 二.配置 1.画图接口 Matplotlib 有两种画图接口: (1)一个是 ...
随机推荐
- C#.NET笔试题-高级
1.说说什么是架构模式. 1,分层. 2,分割. 分层是对网站进行横向的切分,那么分割就是对网站进行纵向的切分.将网站按照不同业务分割成小应用,可以有效控制网站的复杂程度. 3,分布式. 在大型网站中 ...
- 配置git的ssh
Linux,Windows就在git bash here里面输 ① 初始化git账户 git config --global user.name "Eisen" git confi ...
- Unity3D学习笔记8——GPU实例化(3)
目录 1. 概述 2. 详论 2.1. 自动实例化 2.2. MaterialPropertyBlock 3. 参考 1. 概述 在前两篇文章<Unity3D学习笔记6--GPU实例化(1)&g ...
- fiddler5+雷电模拟器4.0对app抓包设置
这次项目刚好需要对微信小程序进行抓包分析,二话不说拿起手机咔咔一顿连接,发现在备用机苹果上抓包正常,但主的安卓机上证书怎么装都失败,原来安卓7版本以后对用户自行安装的证书不再信任,所以无法抓包. 因为 ...
- 如何给selenium.chrome写扩展拦截或转发请求
Selenium.WebDriver Selenium WebDriver 是一组开源 API,用于自动测试 Web 应用程序,利用它可以通过代码来控制chrome浏览器! 有时候我们需要mock接口 ...
- esp8266模拟输入(ADC)检测问题
今天使用esp12f读取A0数据时一直出现错误; Serial.println(analogRead(A0));读取值一直为1024 因为前段时间一直用的是开发板,读取电压值正常 而从昨天换为了esp ...
- 沙漠世界1.0 c++小游戏
#include<bits/stdc++.h> #include<time.h> #include<windows.h> #include<stdlib.h& ...
- 业务可视化-让你的流程图"Run"起来(3.分支选择&跨语言分布式运行节点)
前言 首先,感谢大家对上一篇文章[业务可视化-让你的流程图"Run"起来(2.问题与改进)]的支持. 分享一下近期我对这个项目的一些改进. 1. 增加了分支选择工程,可以根据节点的 ...
- 关于 CMS 垃圾回收器,你真的懂了吗?
大家好,我是树哥. 前段时间有个小伙伴去面试,被问到了 CMS 垃圾回收器的详细内容,没答出来.实际上,CMS 垃圾回收器是回收器历史上很重要的一个节点,其开启了 GC 回收器关注 GC 停顿时间的历 ...
- python 常用的魔法函数
简介 在实际项目中,我们其实并不会太多的使用魔法函数,但是一些方法或者函数均是有魔法函数演变而来的,且在一些面试过程中会遇到一些关于常见方法的实现,就会牵扯到相应的魔法函数,此处将介绍一些我认为比较常 ...