网站首页 > 技术教程 正文
《量化入门课:如何免费获取期货数据?》一文中我们下载好了数据,打开的数据是csv格式的,csv是一种比较通用的数据格式,用途比较广泛,我们可以用文本编辑器或者excel、wps直接打开。 但是怎样从csv中读取数据呢?
入门的方案:pandas [1]
Pandas 是一个开源的 Python 数据分析和数据处理库,它为 Python 编程语言提供了强大的数据结构和分析工具,广泛用于数据挖掘、数据分析、数据可视化等领域。
通俗理解就是,pandas是一个python代码版的excel, 我们可以使用它轻松的做数据分析,例如筛选、汇总、均线、画图等等。
使用pandas如何读取数据呢?
import pandas as pd
# 首先我们找到需要读取的csv文件路径
path = r"C:\Users\jerri\Downloads\ricequant_data_1d\data\Future\1d\RB\RB99.csv"
df = pd.read_csv(path) # 读取csv文件到pandas里面
df.head() # 显示前5行数据
在实际的使用过程中,k线数据往往需要制定Date格式为索引,并且Date是日期格式, 所以读取的代码可以修改如下:
df = pd.read_csv(path, index_col='Date', parse_dates=True) # 读取csv文件到pandas里面,指定date列为索引,并将其格式化为日期格式
df.head() # 显示前5行数据
插图-读取csv数据.png
现在问题来了,如果我们现在有很多文件需要读取, 而且每一个文件在不同的文件夹下面,怎么办呢? 例如在实际项目中我们面临这样的需求:读取每个品种的连续合约(文件名称99结尾),2024-01-01~现在的数据,放到一个dateframe中
如果继续说采用pandas读取的方式,我们需要筛选每一个符合条件的文件,然后读取全部数据,再筛选里面满足条件的数据,这样的方式显然比较繁琐。
有没有更优雅的方式呢?
进阶的方式:DuckDB[2]
DuckDB 是一个开源的、嵌入式的 SQL 关系数据库管理系统,旨在为数据分析提供高性能的查询执行。它被设计为类似于 SQLite,但特别针对分析工作负载进行了优化。
简单来说,我们就是可以把本地所有的csv文件当成一个数据库,然后使用duckdb编写sql语句来调用,这样明显的优雅多了。
duckdb 安装
pip install duckdb
使用duckdb读取csv文件
# 使用duckdb读取csv文件
import duckdb
path = r"C:\Users\jerri\Downloads\ricequant_data_1d\data\Future\1d\RB\RB99.csv"
conn = duckdb.connect()
sql = f"SELECT * FROM read_csv_auto('{path}')"
df = conn.execute(sql).fetchdf()
conn.close()
df.head() # 显示前5行数据
看起来并没有方便很多对吗?
现在我们来实现上面的复杂需求,结合glob库
import duckdb
import glob
paths = glob.glob(r"C:\Users\jerri\Downloads\ricequant_data_1d\data\Future\1d\RB\*.csv")
conn = duckdb.connect()
sql = f"SELECT * FROM read_csv({paths},filename=TRUE) WHERE DATE > '2024-01-01'"
df = conn.execute(sql).fetchdf()
conn.close()
df.head() # 显示前5行数据
核心代码两条就足够了,是不是简洁很多!
总结
- 如果是读取一个或者少量的csv文件,我们直接使用pandas即可
- 如果是读取整个文件夹下,或者规则比较负责的csv,并且有一些其他附加条件,duckdb更方便
参考资料
[1] pandas : https://pandas.pydata.org/
[2] DuckDB: https://duckdb.org/docs/data/csv/overview
猜你喜欢
- 2025-08-06 linux 和 windows文件格式互相转换
- 2025-08-06 谷歌 ChromeOS 已支持 7z、iso、tar 文件格式
- 2025-08-06 Linux下比较文件内容的6种方法
- 2025-08-06 文件格式及功能汇总
- 2025-08-06 10个Linux文件内容查看命令的实用示例
- 2025-08-06 Linux-如何区分不同文件类型
- 2025-08-06 Zabbix技术分享——监控windows进程资源使用情况
- 2025-08-06 Linux系统卡顿?学会ps命令这三招,轻松定位问题进程
- 2025-08-06 Linux 性能监控:实时跟踪系统状态
- 2025-08-06 Linux密码明文密码获取及破解
你 发表评论:
欢迎- 08-06linux 和 windows文件格式互相转换
- 08-06谷歌 ChromeOS 已支持 7z、iso、tar 文件格式
- 08-06Linux下比较文件内容的6种方法
- 08-06文件格式及功能汇总
- 08-0610个Linux文件内容查看命令的实用示例
- 08-06Linux-如何区分不同文件类型
- 08-06Zabbix技术分享——监控windows进程资源使用情况
- 08-06Linux系统卡顿?学会ps命令这三招,轻松定位问题进程
- 最近发表
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)