pandas将千万行数据分块保存为CSV文件,保存为HDF5文件

2023-05-16

从数据库读取数据保存为CSV,然后转换为HDF5,用于后面数据快速处理

from sqlalchemy import create_engine
import cx_Oracle as cx
import pandas as pd

class Analyze:
    dsnStr = cx.makedsn("ip", "port", service_name="spvdb")
    engine = create_engine("oracle://username:password@%s" % dsnStr)
    conn = engine.connect().execution_options(stream_results=True)

    def save_csv(self, query, filename):
        """
        保存为CSV文件
        """
        for chunk in pd.read_sql(sql=query, con=self.conn, chunksize=50000):
            chunk.to_csv(filename, encoding="utf_8_sig", mode="a", index=False)
            del chunk
            print("保存文件中...")

        print("保存CSV文件完成")

    def save_hdf5(self, csv_table, hdf_table):
        """
        保存为HDF5文件
        """
		# for chunk in pd.read_csv(csv_table, chunksize=50000):
		#     chunk.to_hdf(hdf_table, "data", mode="a")
		#     del chunk
		#     print("保存文件中...")
		# 
		# print("保存HDF5文件完成")  
		"""
		上面这种方法不行,最后只添加最后一分块的数据
		"""
		store = pd.HDFStore(hdf_table, mode="w")
		for chunk in pd.read_csv(csv_table, chunksize=50000):
		    chunk = pd.DataFrame(chunk).astype(str)
		    store.append("df", chunk)
		    del chunk
		    print("保存文件中...")
		store.close()
		print("保存HDF5文件完成")

    def read(self):
        realtime = pd.read_hdf("realtime.hd5")
        print(realtime)


if __name__ == '__main__':
    rs = Analyze()
    # 保存为CSV
    # rs.save_csv(query="select * from realtime", filename="realtime.csv")
    # 保存为HDF5
    # rs.save_hdf5(csv_table="realtime.csv", hdf_table="realtime.hd5")
    rs.read()

之前在网上找的分块读取的,但是实际使用的时候,速度太慢(千万行数据),记录一下

def query_result(query):
	chunk_list = []
	for chunk in pd.read_sql(query, con=conn, chunksize=50000):
	# for chunk in pd.read_csv(query, chunksize=50000):
		chunk_list.append(chunk)
		del chunk
	dfs = pd.concat(chunk_list, ignore_index=True)
	
	return dfs
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

pandas将千万行数据分块保存为CSV文件,保存为HDF5文件 的相关文章

  • 求解gcd最大公约数的两种算法

    文章目录 1 更相减损术2 辗转相除法3 两种算法的比较 1 更相减损术 即 xff1a 辗转相减法 是由我国古代 九章算术 提出的一种求解最大公约数 Grand Central Dispatch 的算法 代码示例 xff1a span c
  • 【AWVS】python调AWVS接口 新建扫描并导出扫描报告(一)

    文章目录 前言一 先上完整python代码二 AWVS介绍三 准备工作1 获取 API KEY2 Header 设置1 接口介绍2 python代码 3 屏蔽警告 四 接口验证1 查看Targets扫描队列1 接口介绍2 python代码3
  • Echarts中国地图与世界地图实战

    文章目录 前言一 先上代码1 中国地图2 世界地图 二 图示1 中国地图2 世界地图 二 Echarts简介1 介绍2 实战流程1 引入echarts js2 定义一个图表容器DIV xff0c 定义id 61 xxx3 初始化echart
  • 部署微软的Bringing-Old-Photos-Back-to-Life,实战和踩坑

    在Windows 10上部署 微软的 Bringing Old Photos Back to Life 关于 Bringing Old Photos Back to Life部署的步骤1 下载源代码2 下载组件2 1 下载PyTorch h
  • 【AWVS】python调AWVS接口 新建扫描并导出扫描报告 [自定义扫描报告](三)

    文章目录 前言一 代码二 关键技术2 1 代码2 2 最重要的方法 replace 2 1 1 描述2 1 2 语法2 1 3 参数2 1 4 特别注意 2 3 实现方法2 3 1 修改左上角logo2 3 2 修改文字 三 修改图片的另一
  • 【web】data:image/png;python-base64用法与实现(一)

    文章目录 一 应用场景二 Data URI Scheme三 python base64文件编解码3 1 编码3 1 1 代码3 1 2 输出结果3 1 3 实现步骤 3 2 解码3 2 1 代码 一 应用场景 在html的源码中 xff0c
  • 【python】json.dumps() 与 json.loads() 用法

    文章目录 一 JSON介绍二 Python和Json数据类型的映射三 json load s 与json dump s 区别四 测试4 1 json dumps 4 2 json loads 4 3 json dump 4 4 json l
  • 【信息收集】利用Wappalyzer进行cms指纹识别(十)

    文章目录 一 Wappalyzer介绍二 设计原理三 python实现代码 一 Wappalyzer介绍 Wappalyzer 是一款浏览器插件 xff0c 通过 Wappalyzer 可以识别出网站采用了那种 web 技术 它能够检测出
  • 【word】批量添加图片题注与批量更新图注

    一 批量添加图注 1 选择一张图片插入题注 xff0c 选中题注 xff0c 然后快捷键shift 43 F9切换为域代码 2 CTRL 43 C复制 xff0c 然后CTRL 43 H打开查找和替换对话框 注意只选择 x y 部分 xff
  • 【Ubuntu】Ubuntu20基础配置+go开发配置

    这里写自定义目录标题 1 基础配置1 1 安装ifconfig网络管理工具1 2 初始化root密码1 3 换镜像源1 4 关闭息屏休眠1 5 关闭自动更新 2 开发环境2 1 go2 1 1 建立软件目录并安装软件2 1 2 建立go工作
  • 【git】git的一些基础操作

    文章目录 一 git下载二 git初次操作1 生成公钥2 修改全局用户名和邮箱地址 xff1a 3 本地仓库关联远端仓库4 本地初始化5 将项目上所有的文件添加到本地仓库6 提交到本地仓库7 创建main分支8 推送到main分支9 拉取远
  • 【anaconda】anaconda学习总结

    文章目录 1 anaconda介绍2 anaconda下载3 简单配置3 1 加入环境变量3 2 配置pycharm3 3 换源 4 相关命令 1 anaconda介绍 Anaconda指的是一个开源的Python发行版本 xff0c 其包
  • python项目打包成依赖

    python项目打包成依赖 xff08 可以pip install 安装 xff09 python打包成pip包 用途 xff1a 可以将别人的代码打包成pip包 xff0c 用pip安装到自己的项目中 xff0c 也可以将自己的代码打包
  • Linux热键详解:Tab键,Ctrl+c、Ctrl+d

    1 Tab键接在一串命令的第一个字段后面 xff0c 则为命令补全 xff1b 若输入is后按两下Tab键则会把所有以is开头的命令都显示出来 xff0c 若时输入ifcon因为其对应的命令只有ifconfig xff0c 所以按一下Tab
  • UI自动化之driver.Tap坐标定位

    相信做UI自动化的小伙伴都知道 xff0c appium不是左右页面的元素都能定位的到的 xff0c 尤其是原生中嵌套了H5页面 xff0c 所有这个时候我们可以通过坐标定位的方式去解决 xff0c 理论上坐标定位可以解决所有的元素识别问题
  • 宣传片制作技巧

    0x00 宣传片中故事脚本主要内容 客户名称和产品名称 xff1b 宣传片的长度以及每个镜头的时间 xff1b 镜头画面及其文字说明 xff1b 镜头声音的文字描述 xff1b 镜头的拍摄方式与组接方式 xff1b 特殊要求及其他注意事项
  • 2021年山东省职业院校技能大赛中职组“网络搭建与应用”赛项

    2021年山东省职业院校技能大赛 中职组 网络搭建与应用 赛项 竞赛试题 2021年 12月 3日 竞赛说明 一 竞赛内容分布 网络搭建与应用 竞赛共分三个部分 xff0c 其中 xff1a 第一部分 xff1a 网络搭建及安全部署项目 x
  • 数组旋转问题【有n个整数,使前面各数顺序向后移m个位置,最后m个数变成最前面m个数】

    目录 一 问题描述 xff1a 二 解题思路三 代码实现四 运行结果 一 问题描述 xff1a 有n个整数 xff0c 使前面各数顺序向后移m个位置 xff0c 最后m个数变成最前面m个数 比如原数组 xff1a 1 2 3 4 5 6 7
  • 【计算机操作系统】(三)系统调用

    一 系统调用 用户接口分为命令接口 xff08 允许用户直接使用 xff09 和程序接口 xff08 允许用户通过程序间接使用 xff09 程序接口由一种系统调用组成 系统调用 是操作系统提供给应用程序 xff08 程序员 xff09 使用
  • 4.选择排序、冒泡排序、插入排序、计数排序

    前言 xff1a 常见的排序操作有选择排序 冒泡排序 插入排序 归并排序 堆排序 快速排序 xff08 二路快排 三路快排 xff09 计数排序 基数排序 桶排序 本文主要介绍的是选择排序 冒泡排序 插入排序 计数排序 注 xff1a 以下

随机推荐