您的位置:首页 > 编程语言 > Python开发

python pd.crosstab在处理时间序列文本数据的用处

2016-08-26 17:31 686 查看
在优矿上的-量化分析师的python日记中看到一个函数很不错--pd.crosstab 。因为我们平时取到的多股数据可能如以下所示;

取两股为例: Sec1, Sec2

利用pandas的date_range获得一列时间序列,当然这边价格是简单假设的。

import numpy as np
import pandas as pd
a = np.arange(10)
b = np.arange(10,20)
date = pd.date_range('2016-8-26', periods = 10)
df1 = pd.DataFrame({'date': date, 'SecName':'sec1', 'price': a})
df2 = pd.DataFrame({'date': date, 'SecName':'sec2', 'price': b})
df = pd.concat([df1,df2], axis = 0) #将两个数据框按行拼接
最终得到的df 数据框为 (第一列为自动获取的index)

  SecName       date  price

0    sec1 2016-08-26      0

1    sec1 2016-08-27      1

2    sec1 2016-08-28      2

3    sec1 2016-08-29      3

4    sec1 2016-08-30      4

5    sec1 2016-08-31      5

6    sec1 2016-09-01      6

7    sec1 2016-09-02      7

8    sec1 2016-09-03      8

9    sec1 2016-09-04      9

0    sec2 2016-08-26     10

1    sec2 2016-08-27     11

2    sec2 2016-08-28     12

3    sec2 2016-08-29     13

4    sec2 2016-08-30     14

5    sec2 2016-08-31     15

6    sec2 2016-09-01     16

7    sec2 2016-09-02     17

8    sec2 2016-09-03     18

9    sec2 2016-09-04     19

接下来就是pd.crosstab登场的时间了

df = pd.crosstab(df['date'], df['SecName']) # 第一个参数是指定index,第二个参数是指定column
print df
SecName     sec1  sec2

date                  

2016-08-26     1     1

2016-08-27     1     1

2016-08-28     1     1

2016-08-29     1     1

2016-08-30     1     1

2016-08-31     1     1

2016-09-01     1     1

2016-09-02     1     1

2016-09-03     1     1

2016-09-04     1     1

哎嘛不对,这样就成为了excel数据透视表中的count了,所以得到的值都是1,因为每组(date,SecName)对应的值是唯一的

所以应该指定一下第三,四个参数 values,aggfun=sum,这里表示将对应的值求和,因为每个值都是唯一的,结果就是我们想要的了。

df = pd.crosstab(df['date'], df['SecName'],values=df['price'],aggfunc=sum)
print df
SecName     sec1  sec2

date                  

2016-08-26     0    10

2016-08-27     1    11

2016-08-28     2    12

2016-08-29     3    13

2016-08-30     4    14

2016-08-31     5    15

2016-09-01     6    16

2016-09-02     7    17

2016-09-03     8    18

2016-09-04     9    19

第一篇blog大功告成!哈哈,算是学习日记吧。希望能养成这个好习惯,不然一直学了就忘,通过这个方式记录自己在学习过程中的体会也是不错的。
<
4000
br />

在这贴出一个链接,有兴趣可以看看。

 量化分析师的Python日记【第15天:如何在优矿上搞一个wealthfront出来】
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐