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

主要函数:

  • pd.read_csv()
  • data.to_csv()
  • pd.read_sql()
  • data.to_sql()
  • json.dump()
  • json.loads()
  • pd.read_excel()
  • data.to_excel

做量化交易,总也离不开对数据的处理和分析,以下是我经常用到的一些读取和保存数据的函数。

特意抽时间整理了一下,分享给大家。

import pandas as pd

# 解决数据输出时列名不对齐的问题
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:
    data_csv.to_csv(
        path2,  # 绝对路径+文件名。或文件名
        float_format="%.2f",  # 格式化浮点数
        columns=None,  # 列表,写入文件的列,默认为None
        header=True,  # 是否输出列名,默认True
        index=True,  # 是否输出索引,默认True
        index_label=None,  # 索引列的列名,列表,写入文件的列,默认为None
        chunksize=1000,  # 一次写入.csv文件的行数。数据很多时,必须分批写入。
        date_format=None,  # 日期输出格式
    )

# 数据库模块
import mysql.connector
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:
    data.to_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:
    data_excel.to_excel(
        'H:/交易资料/Python文件/test.xlsx',  #  路径或文件名
        sheet_name='K线测试数据',  #  表的名称
        index=False,  #  是否保存索引

到此这篇关于Pandas常用的读取和保存数据的函数使用(csv,mysql,json,excel)的文章就介绍到这了,更多相关Pandas读取和保存数据内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 使用python的pandas库读取csv文件保存至mysql数据库

    第一:pandas.read_csv读取本地csv文件为数据框形式 data=pd.read_csv('G:\data_operation\python_book\chapter5\\sales.csv') 第二:如果存在日期格式数据,利用pandas.to_datatime()改变类型 data.iloc[:,1]=pd.to_datetime(data.iloc[:,1]) 注意:=号,这样在原始的数据框中,改变了列的类型 第三:查看列类型 print(data.dtypes) 第四:方法一

  • Pandas常用的读取和保存数据的函数使用(csv,mysql,json,excel)

    pandas 是基于NumPy 的一种工具,该工具是为解决数据分析任务而创建的.Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具.Pandas的名称来自于面板数据(panel data)和python数据分析(data analysis).pandas提供了大量能使我们快速便捷地处理数据的函数和方法.它是使Python成为强大而高效的数据分析环境的重要因素之一.pandas的IO工具支持非常多的数据输入输出方式.包括csv.json.Excel.数据库等. 本

  • Python下载商品数据并连接数据库且保存数据

    目录 前言: 请求数据 获取数据 解析数据(筛选数据) 保存数据 连接数据库 前言: 开发环境: python 3.8 pycharm 2021.2 专业版 代码实现: 发送请求 获取数据 解析数据(筛选数据) 保存数据 连接数据库 请求数据 # 伪装 headers = {     'cookie': 'miid=4137864361077413341; tracknick=%5Cu5218%5Cu6587%5Cu9F9978083283; thw=cn; hng=CN%7Czh-CN%7CC

  • pandas 如何保存数据到excel,csv

    目录 pandas 保存数据到excel,csv 导入到excel中 导入到csv中 更细致的操作 将数据保存到csv或者xlsx中的最基本操作 pandas 保存数据到excel,csv pandas 保存数据比较简单 对于任意一个dataframe: import pandas as pd import numpy as np   dataframe = pd.DataFrame(data=np.random.random(size=(10, 10))) 导入到excel中 datafram

  • Python 中pandas索引切片读取数据缺失数据处理问题

    引入 numpy已经能够帮助我们处理数据,能够结合matplotlib解决我们数据分析的问题,那么pandas学习的目的在什么地方呢? numpy能够帮我们处理处理数值型数据,但是这还不够 很多时候,我们的数据除了数值之外,还有字符串,还有时间序列等 比如:我们通过爬虫获取到了存储在数据库中的数据 比如:之前youtube的例子中除了数值之外还有国家的信息,视频的分类(tag)信息,标题信息等 所以,numpy能够帮助我们处理数值,但是pandas除了处理数值之外(基于numpy),还能够帮助我

  • 利用Pandas读取表格行数据判断是否相同的方法

    描述: 下午快下班的时候公司供应链部门的同事跑过来问我能不能以程序的方法帮他解决一些excel表格每周都需要手工重复做的事情,Excel 是数据处理最常用的办公工具对于市场.运营都应该很熟练.哈哈,然而程序员是不怎么会用excel的.下面给大家介绍一下pandas,  Pandas是一个强大的分析结构化数据的工具集:它的使用基础是Numpy(提供高性能的矩阵运算):用于数据挖掘和数据分析,同时也提供数据清洗功能. 具体需求: 找出相同的数字,把与数字对应的英文字母合并在一起. 期望最终生成值:

  • python使用numpy读取、保存txt数据的实例

    1.首先生成array数组 import numpy as np a = np.random.rand(5,5) print(a) 结果: array([[0.17374613, 0.87715267, 0.93111376, 0.53415215, 0.59667207], [0.6865835 , 0.15873242, 0.2842251 , 0.73840834, 0.37163279], [0.06556834, 0.68446787, 0.91136611, 0.82796704,

  • python NumPy读取和保存点云数据实现

    目录 前言 loadtxt函数的用法 基本用法 指定每一列的数据类型 结合生成器使用 tofile和fromfile函数 前言 最近在学习点云处理的时候用到了Modelnet40数据集,该数据集总共有40个类别,每个样本的点云数据存放在一个TXT文件中,每行的前3个数据代表一个点的xyz坐标.我需要把TXT文件中的每个点读取出来,然后用Open3D进行显示. 怎么把数据从TXT文件中读取出来呢?NumPy提供了一个功能非常强大的函数loadtxt可以非常简单地实现这个功能.来看一下代码: imp

  • Python如何用NumPy读取和保存点云数据

    目录 前言 loadtxt函数的用法 基本用法 指定每一列的数据类型 结合生成器使用 tofile和fromfile函数 前言 最近在学习点云处理的时候用到了Modelnet40数据集,该数据集总共有40个类别,每个样本的点云数据存放在一个TXT文件中,每行的前3个数据代表一个点的xyz坐标.我需要把TXT文件中的每个点读取出来,然后用Open3D进行显示.怎么把数据从TXT文件中读取出来呢?NumPy提供了一个功能非常强大的函数loadtxt可以非常简单地实现这个功能.来看一下代码: impo

  • Pandas实现在线文件和剪贴板数据读取详解

    目录 前言 read_html 在线文件1 在线文件2 读取在线CSV文件 Pandas读取剪贴板 前言 大家好,我是Peter~ 本文记录的是Pandas两种少用的读取文件方式: 读取在线文件的数据 读取剪贴板的数据 声明:本文案例和在线数据仅用于学术分享 read_html 该函数表示的是直接读取在线的html文件,一般是表格的形式:将HTML的表格转换为DataFrame的一种快速方便的方法. 这个方法对于快速合并来自不同网页上的表格非常有用,就省去了爬取数据再来读取的时间. 具体函数的参

  • python读取和保存为excel、csv、txt文件及对DataFrame文件的基本操作指南

    目录 一.对excel文件的处理 1.读取excel文件并将其内容转化DataFrame和矩阵形式 2.将数据写入xlsx文件 3.将数据保存为xlsx文件 4.使用excel对数据进行处理的缺点 二.对csv文件的处理 1.读取csv文件并将其内容转化为DataFrame形式 2.将DataFrame保存为csv文件 3.优缺点 三.对txt文件的处理 1.读取txt文件 2.将数据写入txt文件 3.将数据保存到txt文件 四.对DataFrame文件的基本操作 1.DataFrame的创建

随机推荐