当前位置 : 主页 > 网络编程 > PHP >

量化交易系列【3】字符串与时间处理

来源:互联网 收集:自由互联 发布时间:2023-09-06
量化交易系列[【3】字符串与时间处理 ​​字符串处理​​ ​​时间处理​​ ​​pd.to_datetime函数​​ ​​取日期相关数据​​ 示例中使用的‘000001.XSHE.csv’文件,已上传至csdn资源中


量化交易系列[【3】字符串与时间处理

  • ​​字符串处理​​
  • ​​时间处理​​
  • ​​pd.to_datetime函数​​
  • ​​取日期相关数据​​

示例中使用的‘000001.XSHE.csv’文件,已上传至csdn资源中,可直接下载

import pandas as pd
# 读取CSV文件
df = pd.read_csv('./000001.XSHE.csv')
df = df[:5] # 取前5行数据
df['code'] = '000001.XSHE' # 添加股票代码列
df



date

open

close

high

low

volume

money

code

0

2015/1/5

9.98

10.00

10.17

9.74

458099037

4.565388e+09

000001.XSHE

1

2015/1/6

9.90

9.85

10.23

9.71

346952496

3.453446e+09

000001.XSHE

2

2015/1/7

9.72

9.67

9.88

9.55

272274401

2.634796e+09

000001.XSHE

3

2015/1/8

9.68

9.34

9.72

9.30

225445502

2.128003e+09

000001.XSHE

4

2015/1/9

9.30

9.42

9.91

9.19

401736419

3.835378e+09

000001.XSHE

字符串处理

在df之后加上str,可以把数据变为字符串,然后就可以使用常见的字符串函数对整列进行操作

# 取股票代码前6位
df['code'].str[:6]
0    000001
1 000001
2 000001
3 000001
4 000001
Name: code, dtype: object
# 转换字母大小写:upper转大写,lower转小写
df['code'].str.lower()
0    000001.xshe
1 000001.xshe
2 000001.xshe
3 000001.xshe
4 000001.xshe
Name: code, dtype: object
# 计算字符串的长度,length
df['code'].str.len()
0    11
1 11
2 11
3 11
4 11
Name: code, dtype: int64
#  strip操作,把字符串两边的空格去掉
df['code'].str.strip()
0    000001.XSHE
1 000001.XSHE
2 000001.XSHE
3 000001.XSHE
4 000001.XSHE
Name: code, dtype: object
df['code'].str.strip()  # strip操作,把字符串两边的空格去掉
df['code'].str.contains('sh') # 判断字符串中是否包含某些特定字符
df['code'].str.replace('sz', 'sh') # 进行替换,将sz替换成sh
# split操作
df['板块'] = '保险;金融'
df



date

open

close

high

low

volume

money

code

板块

0

2015/1/5

9.98

10.00

10.17

9.74

458099037

4.565388e+09

000001.XSHE

保险;金融

1

2015/1/6

9.90

9.85

10.23

9.71

346952496

3.453446e+09

000001.XSHE

保险;金融

2

2015/1/7

9.72

9.67

9.88

9.55

272274401

2.634796e+09

000001.XSHE

保险;金融

3

2015/1/8

9.68

9.34

9.72

9.30

225445502

2.128003e+09

000001.XSHE

保险;金融

4

2015/1/9

9.30

9.42

9.91

9.19

401736419

3.835378e+09

000001.XSHE

保险;金融

df['板块'].str.split(';')  # 对字符串进行分割
0    [保险, 金融]
1 [保险, 金融]
2 [保险, 金融]
3 [保险, 金融]
4 [保险, 金融]
Name: 板块, dtype: object
df['板块'].str.split(';').str[:1]  # 分割后取第一个值
0    [保险]
1 [保险]
2 [保险]
3 [保险]
4 [保险]
Name: 板块, dtype: object
df['板块'].str.split(';', expand=True)  # expand=True分割后并且将数据分列



0

1

0

保险

金融

1

保险

金融

2

保险

金融

3

保险

金融

4

保险

金融

时间处理

pd.to_datetime函数

# pd.to_datetime函数:将交易日期由字符串改为时间变量
df['date'] = pd.to_datetime(df['date'])
pd.to_datetime('1999/01/01 16:45')
Timestamp('1999-01-01 16:45:00')

取日期相关数据

df['date'].dt.year  # 输出这个日期的年份。相应的month是月份,day是天数,还有hour, minute, second

df['date'].dt.week # 这一天是一年当中的第几周

df['date'].dt.dayofyear # 这一天是一年当中的第几天

df['date'].dt.dayofweek # 这一天是这一周当中的第几天,0代表星期一

df['date'].dt.weekday # 和上面函数相同,更加常用

df['date'].dt.weekday_name # 和上面函数相同,返回的是星期几的英文,用于报表的制作。

df['date'].dt.days_in_month # 这一天是这一月当中的第几天

df['date'].dt.is_month_end # 这一天是否是该月的开头,是否存在is_month_end?

df['date'] + pd.Timedelta(days=1) # 增加一天,Timedelta用于表示时间差数据

(df['date'] + pd.Timedelta(days=1)) - df['交易日期'] # 增加一天然后再减去今天的日期


网友评论