量化交易系列【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['交易日期']  # 增加一天然后再减去今天的日期
相关文章
|
前端开发
uView Tabs 标签页
uView Tabs 标签页
343 0
|
9月前
|
供应链 监控 数据挖掘
1688 商品详情接口系列(1688 API)
1688商品详情接口系列(1688 API)是阿里巴巴旗下批发电商平台提供的强大工具,支持开发者、商家获取商品的详细信息。通过商品基本信息、价格库存、图片和描述查询接口,用户可以精准高效地获取商品数据,涵盖电商运营、数据分析、市场调研等领域,极大提升工作效率。示例代码展示了如何使用Python调用这些接口,助力电商平台整合、价格监控、商品展示优化及库存管理等应用场景。
|
存储 缓存 算法
交换机转发机制:存储转发与直通转发
交换机转发机制:存储转发与直通转发
2025 1
|
9月前
|
机器学习/深度学习 人工智能
Token化一切,甚至网络!北大&谷歌&马普所提出TokenFormer,Transformer从来没有这么灵活过!
Transformer模型在人工智能领域表现出色,但扩展其规模时面临计算成本和训练难度急剧增加的问题。北京大学、谷歌和马普所的研究人员提出了TokenFormer架构,通过将模型参数视为Token,利用Token-Parameter注意力(Pattention)层取代线性投影层,实现了灵活且高效的模型扩展。实验表明,TokenFormer在保持性能的同时大幅降低了训练成本,在语言和视觉任务上表现优异。论文链接:https://arxiv.org/pdf/2410.23168。
212 45
|
8月前
|
关系型数据库 BI OLAP
一招解决数据库中报表查询慢的痛点
一招解决数据库中报表查询慢的痛点
|
10月前
|
机器学习/深度学习 人工智能 搜索推荐
AI技术在医疗领域的应用与挑战
本文深入探讨了人工智能(AI)技术在医疗领域的应用现状、面临的挑战以及未来发展趋势。随着科技的飞速发展,AI技术正逐渐渗透到医疗行业的各个环节,从疾病诊断、治疗方案制定到患者管理等,都展现出巨大的潜力和价值。然而,AI技术的广泛应用也带来了数据安全、伦理道德、法规监管等一系列挑战。本文旨在通过分析AI技术在医疗领域的实际应用案例,揭示其优势与不足,为推动AI技术在医疗领域的健康发展提供参考。
664 23
|
SQL 关系型数据库 MySQL
Pandas获取SQL数据库read_sql()函数及参数一文详解+实例代码
Pandas获取SQL数据库read_sql()函数及参数一文详解+实例代码
7693 0
Pandas获取SQL数据库read_sql()函数及参数一文详解+实例代码
|
11月前
|
移动开发 定位技术 iOS开发
HTML5 Geolocation(地理定位)3
本页介绍如何在地图上显示用户位置,并利用地理定位获取给定位置的详细信息,包括更新本地信息、显示周边兴趣点及实现车载导航。通过 `getCurrentPosition()` 方法可获取用户当前位置的详细数据,如经纬度、精度等。`watchPosition()` 方法则持续跟踪用户位置变化,适用于实时导航。示例代码展示了如何使用这些方法获取并显示位置信息。
|
11月前
|
机器学习/深度学习 人工智能 自然语言处理
【AI系统】AI 发展驱动力
AI起源于20世纪50年代,经历起伏后,2016年AlphaGo的胜利重燃公众热情。实际上,AI技术早已在互联网公司广泛应用,如搜索引擎、广告推荐等。机器学习是实现AI的方法之一,深度学习则是机器学习的重要技术,通过神经网络实现。近年来,随着大数据积累、算法进步及算力增强,AI取得了显著成就,特别是在图像识别、自然语言处理等领域。AI系统的设计需考虑数据驱动、算法优化及高性能计算,以适应更大规模、更复杂的应用需求。
318 0
|
监控 API
【zookeeper 第四篇章】监控 Watcher
ZooKeeper通过Watcher机制实现了数据的发布/订阅功能。多个订阅者可以监听同一主题对象,一旦该对象状态变化,如节点内容或子节点列表变动,ZooKeeper会实时通知所有订阅者。Watcher架构包括ZooKeeper服务端、客户端及其Watcher管理器。客户端向服务端注册Watcher并保存至本地管理器中;当状态变化时,服务端通知客户端,触发相关Watcher回调处理逻辑。
326 2