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

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

示例中使用的‘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


image.png


字符串处理


在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


image.png

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(';').str[:1]  # 分割后取第一个值
0    [保险]
1    [保险]
2    [保险]
3    [保险]
4    [保险]
Name: 板块, dtype: object
df['板块'].str.split(';', expand=True)  # expand=True分割后并且将数据分列


image.png


时间处理


pd.to_datetime函数


# pd.to_datetime函数:将交易日期由字符串改为时间变量
df['date'] = pd.to_datetime(df['date'])


pd.to_datetime('1999/01/01 16:45')  
• 1


Timestamp('1999-01-01 16:45:00')
• 1


取日期相关数据


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['交易日期']  # 增加一天然后再减去今天的日期
相关文章
|
1月前
时间处理
时间处理
22 3
|
2月前
|
Unix 数据挖掘
一文读懂Polars中的时间处理:从字符串到时间戳的转换秘籍!
一文读懂Polars中的时间处理:从字符串到时间戳的转换秘籍!
116 0
|
4月前
|
编译器 C++
【C++】如何用C++写一个日期计算器
【C++】如何用C++写一个日期计算器
|
6月前
|
对象存储 C++ 索引
C++ 字符串操作的技术性探讨
C++ 字符串操作的技术性探讨
23 1
|
6月前
|
Java
十二时辰与现代时间的互转(精确版)
十二时辰与现代时间的互转(精确版)
106 0
|
6月前
|
机器学习/深度学习 供应链 算法
Python配对交易策略统计套利量化交易分析股票市场
Python配对交易策略统计套利量化交易分析股票市场
|
6月前
|
存储 算法 数据挖掘
R语言和Python用泊松过程扩展:霍克斯过程Hawkes Processes分析比特币交易数据订单到达自激过程时间序列
R语言和Python用泊松过程扩展:霍克斯过程Hawkes Processes分析比特币交易数据订单到达自激过程时间序列
|
6月前
|
数据可视化 数据挖掘 索引
【数据分析与可视化】时间序列中日期范围、频率、移位、时期的讲解(图文解释 超详细)
【数据分析与可视化】时间序列中日期范围、频率、移位、时期的讲解(图文解释 超详细)
102 0
|
数据安全/隐私保护 Python
基于交叉指标的加密货币(股票、期货、期权)量化交易系统[Python]开发源码规则解析
基于交叉指标的加密货币(股票、期货、期权)量化交易系统[Python]开发源码规则解析
|
JavaScript 前端开发
javascript时间函数的运用:根据开始时间和时间差来计算截至时间的解决方案
javascript时间函数的运用:根据开始时间和时间差来计算截至时间的解决方案
109 0