Pandas常⽤的读取和保存数据的函数使⽤
(csv,mysql,json,excel)
pandas 是基于NumPy 的⼀种⼯具,该⼯具是为解决数据分析任务⽽创建的。Pandas 纳⼊了⼤量库和⼀些标准的数据模型,提供了⾼效地操作⼤型数据集所需的⼯具。Pandas的名称来⾃于⾯板数据(panel data)和python数据分析(data analysis)。pandas提供了⼤量能使我们快速便捷地处理数据的函数和⽅法。它是使Python成为强⼤⽽⾼效的数据分析环境的重要因素之⼀。
pandas的IO⼯具⽀持⾮常多的数据输⼊输出⽅式。包括csv、json、Excel、数据库等。
本⽂通过⼏个实例,介绍⼏种常⽤的数据加载⽅式,包括从csv⽂件、excel⽂件、关系型数据库如mysql、API接⼝加载json数据,来初步体验⼀下pandas加载数据的便捷性。
涉及对象:
csv, mysql, json, excel
主要函数:
<_csv()
<_sql()
json.dump()
json.loads()
<_excel
做量化交易,总也离不开对数据的处理和分析,以下是我经常⽤到的⼀些读取和保存数据的函数。
特意抽时间整理了⼀下,分享给⼤家。
import pandas as pd
rows函数的使用方法及实例# 解决数据输出时列名不对齐的问题
pd.set_option("display.unicode.east_asian_width", True)
# 显⽰所有列,把⾏显⽰设置成最⼤
pd.set_option("display.max_columns", None) # 显⽰所有列
# 显⽰所有⾏,把列显⽰设置成最⼤
pd.set_option("display.max_rows", False) # 不显⽰所有⾏
pd.set_option('display.width', 200) # 设置显⽰的宽度
# 是否保存
# ----------------------------------------------------------------------------------------
store = False
# 读取CSV⽂件
path = "O:/Database/futures_5m/ag8888_5m.csv"
data_csv = pd.read_csv(
path, # 字符串:⽂件路径或RRL链接
header="infer", # 指定作为列名的⾏。默认第⼀⾏。不包含列名:header=None。
names=None, # 修改列的名称:参数为要使⽤的列名列表
index_col=None, # 指定列为索引列
usecols=None, # int、list [0, 1, 2, 3, 4] ['类型', '数量', '成交价'] 或字符串。None:所有列;int:最后⼀列。
dtype=None, # 字典:列的数据类型。
parse_dates=False, # 把某列解析为⽇期类型
nrows=None, # 需要读取的⾏数,int, default None,
)
# 保存csv⽂件
# ----------------------------------------------------------------------------------------
path2 = "O:/Database/futures_5m/store_test.csv"
if store:
_csv(
path2, # 绝对路径+⽂件名。或⽂件名
float_format="%.2f", # 格式化浮点数
columns=None, # 列表,写⼊⽂件的列,默认为None
header=True, # 是否输出列名,默认True
index=True, # 是否输出索引,默认True
index_label=None, # 索引列的列名,列表,写⼊⽂件的列,默认为None
chunksize=1000, # ⼀次写⼊.csv⽂件的⾏数。数据很多时,必须分批写⼊。
date_format=None, # ⽇期输出格式
)
# 数据库模块
tor
from sqlalchemy import create_engine
# 创建MySQL数据库连接
""" connect = create_engine("数据库类型+数据库驱动://数据库⽤户名:数据库密码@IP地址:端⼝/数据库名称", 其他参数) """
# ----------------------------------------------------------------------------------------------------
connect = create_engine("mysql+mysqlconnector://root:@localhost:3306/test")
# 读取SQL⽂件
# ----------------------------------------------------------------------------------------
# 查询语句
sql_query = "SELECT * FROM data2"
data_sql = pd.read_sql(
sql_query, # SQL查询语句:字符串格式或 SQLAlchemy
con=connect, # 创建的连接对象
index_col="date", # 索引列:字符串或字符串列表,可选,默认值:⽆
coerce_float=True, # 将值强制转为浮点数:布尔值,默认为True
params=None, # list、tuple或dict,可选,默认值:None。传递给execute⽅法的参数列表
parse_dates=None, # 解释为⽇期:列的名称列表或字典:{column_name: format string}
columns=None, # 要从sql表中选择的列,仅在读取表格时使⽤
chunksize=None, # 读取的⾏数
)
# 保存SQL⽂件
# ----------------------------------------------------------------------------------------
if store:
<_sql(
name="store_test", # SQL输出的表名
con=connection, # 与read_sql中相同,数据库链接
index=False, # 是否将index作为单独的⼀列
index_label=None, # 指定列作为index输出,此时index为True
chunksize=None, # 设置整数,如20000,⼀次写⼊数据时的数据⾏数量,当数据量很⼤时,需要设置,否则会链接超时写⼊失败
dtype=None, # 指定列的输出到数据库中的数据类型。字典形式储存:{column_name: sql_dtype}。当不设置时,to_sql⽣成表时会⾃动兼容最⼤的类型 if_exists="append",
) # Fail 抛出错误; append 插⼊; replace 替换
# ----------------------------------------------------------------------------------------------------------------------
# 保存为json⽂件
# ----------------------------------------------------------------------------------------
import json
# 把字典保存为json格式的⽂件
if store:
with open('O:/我的回测/回测系统重写数据模块/回测结果保存/把字典保存为json格式的⽂件.json', 'w') as f:
# 存在中⽂必须设置ensure_ascii=False
results = {
"合约": "bu8888",
"频率": "1m",
"周期": 60,
"本⾦": 50000,
"收益": "-3506",
"年化": "-44.51%",
"期望": "-0.4R",
"赔率": 0.82,
"胜率": "33%",
"次数": "6",
"天数": 30,
}
# 将python中的对象转化成json储存到⽂件中
""" -----------------------------------------------------------------------------------
json.dump(obj=python对象,fp=write()⽅法的⽂件对象,indent=缩进等级,
sort_keys=以键的顺序排序,ensure_ascii=True:False输出中⽂)
----------------------------------------------------------------------------------- """
json.dump(results, f, sort_keys=False, indent=4, ensure_ascii=False)
# 读取json格式的⽂件
# ----------------------------------------------------------------------------------------
with open('O:/我的回测/回测系统重写数据模块/回测结果保存/把字典保存为json格式的⽂件.json', 'r') as f1:
# 直接读取,返回字符串
da = f1.read() # 此时数值仍是字符串,需要进⼀步转换
# 转为字典格式
result = json.loads(da) # 转为字典格式
# 读取Excel⽂件
# ----------------------------------------------------------------------------------------
""" 注意坑:excel⽂件处于打开或编辑状态时,会读取出错和失败!! """
data_excel = pd.read_excel(
'H:/交易资料/Python⽂件/K线测试数据.xlsx', # ⽂件名或路径
sheet_name=0, # 字符串或整型(或两者的列表),表的名称
header=0, # 整型或整型列表,或None,默认为0,None代表⽆列名。
names=None, # 字符串列表,⾃定义列名,默认为None。
index_col=None, # 整型或者整型列表
usecols=None, # 表⽰要读取的列号或列名(列表)。None表⽰全部读取。当为str时可以为“A,D,F:H”表⽰读取A,D,F,G,H列。
engine=None, # 读取excel时⽤到的引擎类型。
)
# 保存Excel⽂件
# ----------------------------------------------------------------------------------------
if store:
_excel(
'H:/交易资料/Python⽂件/test.xlsx', # 路径或⽂件名
sheet_name='K线测试数据', # 表的名称
index=False, # 是否保存索引
到此这篇关于Pandas常⽤的读取和保存数据的函数使⽤(csv,mysql,json,excel)的⽂章就介绍到这了,更多相关Pandas读取和保存数据内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论