量化交易系列【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['交易日期']  # 增加一天然后再减去今天的日期
相关文章
|
19天前
|
安全 Python
轻松学会的Python红绿灯控制技巧,专业又精确
轻松学会的Python红绿灯控制技巧,专业又精确
30 0
|
19天前
|
Java
十二时辰与现代时间的互转(精确版)
十二时辰与现代时间的互转(精确版)
28 0
|
19天前
|
存储 算法 数据挖掘
R语言和Python用泊松过程扩展:霍克斯过程Hawkes Processes分析比特币交易数据订单到达自激过程时间序列
R语言和Python用泊松过程扩展:霍克斯过程Hawkes Processes分析比特币交易数据订单到达自激过程时间序列
|
19天前
|
机器学习/深度学习 供应链 算法
Python配对交易策略统计套利量化交易分析股票市场
Python配对交易策略统计套利量化交易分析股票市场
|
安全 Java Linux
正确认识及掌握时间的用法
时间是一个相对地区而言的概念,因此有一个基准地区,就是本初子午线穿过的地区。了解世界时间相关的概念可以更好地协调全球人们的活动,便于跨越不同地区的时差。比如按照UTC时区划分算,洛杉矶和北京 之间的时间差异是16个小时, 但是一旦洛杉矶启用了夏令时两者之间的时间差异只有15个小时,神奇吗?
196 0
正确认识及掌握时间的用法
跟女朋友介绍十个常用的 Python 内置函数,她夸了我一整天
跟女朋友介绍十个常用的 Python 内置函数,她夸了我一整天
|
测试技术 Python
软件测试|一文教你Python实现不同数据类型互转
软件测试|一文教你Python实现不同数据类型互转
79 0
|
JavaScript 前端开发
js时间转化为几天前,几小时前,几分钟前
js时间转化为几天前,几小时前,几分钟前
180 0
|
Python
python股票量化交易(2)---震荡类指标KDJ
汝之命,未知若何?即命当荣显,常做落寞想;即时当顺利,常做拂逆想;即眼前足食,常作贫窭想;即人相爱敬,常作恐惧想;即家世望重,常作卑下想;即学问颇优,常作浅陋想。
385 1
python股票量化交易(2)---震荡类指标KDJ
|
Python
python股票量化交易(3)---趋势类指标MACD
虚心屈己,受福之基。彼气盈者,必非远器,纵发亦无受用。
339 0
python股票量化交易(3)---趋势类指标MACD