python:HDF和CSV存储优劣对比分析


Posted in Python onJune 08, 2020

小数据用csv,大数据用h5

结论1:几百KB以上的数据都用h5比较好

结论2:几KB的数据h5反而很慢

程序

import pandas as pd
import numpy as np
from wja.wja_tool import test_time as tt
from wja import wja_tool as tool

df = tool.generate_sampleDF(row, col)

tt().run()
df.to_csv('try.csv')
tt().end()

tt().run()
df.to_hdf('try.h5','df',mode='w')
tt().end() 

tt().run()
df1 = pd.read_csv('try.csv')
tt().end()

tt().run()
df2 = pd.read_hdf('try.h5')
tt().end()

对比1:数据10*1

df = tool.generate_sampleDF(10,1)

python:HDF和CSV存储优劣对比分析

# csv保存
# hdf保存
# csv读取
# hdf读取
程序用时:0.015
程序用时:0.9985
程序用时:0.009
程序用时:0.0369

对比2:数据100*10

df = tool.generate_sampleDF(100,10)

python:HDF和CSV存储优劣对比分析

# csv保存
# hdf保存
# csv读取
# hdf读取
程序用时:0.017
程序用时:1.1016
程序用时:0.01
程序用时:0.013

对比3:数据1000*100

df = tool.generate_sampleDF(1000,100)

python:HDF和CSV存储优劣对比分析

# csv保存
# hdf保存
# csv读取
# hdf读取
程序用时:0.2383
程序用时:1.0308
程序用时:0.0499
程序用时:0.016

对比4:数据10000*100

df = tool.generate_sampleDF(10000,100)

python:HDF和CSV存储优劣对比分析

# csv保存
# hdf保存
# csv读取
# hdf读取
程序用时:2.0895
程序用时:1.0073
程序用时:0.4055
程序用时:0.0169

对比5:数据10000*1000

# csv保存
# hdf保存
# csv读取
# hdf读取
df = tool.generate_sampleDF(10000,1000)

python:HDF和CSV存储优劣对比分析

# csv保存
# hdf保存
# csv读取
# hdf读取
程序用时:23.5693
程序用时:2.2057
程序用时:3.3697
程序用时:0.0619

补充知识:python:n个点m条边有权无向图

n个点:有个位置

m条边:两点之间存在m条边有权值

有权:每条边代表一个数值

无向:没有规定行进方向

规定:

1、两点之间的行进路线,最终权值为所经过的边的权值的最大值

2、两点之间走法不止一个,最终取最小值为最终走法

问:

两点之间的最终权值为多少

python:HDF和CSV存储优劣对比分析

如上图,我们可以将其写为列表形式,前两位是从小到大的的两个点,最后一个代表权值,如
[1, 2, 2] 代表1和2之间的权值是2,以此类推

n,m = 5, 10
road = [[1, 2, 2], [1, 3, 3], [1, 4, 7], [1, 5, 2],
    [2, 3, 4], [2, 4, 9], [2, 5, 5], [3, 4, 4],
    [3, 5, 5], [4, 5, 3]]

def hold(list1, list2):
  jiaoji = list(set(list1)&set(list2))
  need = [i for i in set(list1+list2) if i not in jiaoji]
  need.sort()
  return need

def get(road):
  option = {}
  for i in range (m):
    option[(road[i][0],road[i][1])] = [road[i][2]]
  for i in range (m):
    for j in range(i+1,m):
      dot = hold(road[i][:2], road[j][:2])
      if len(dot)==2:
        if (dot[0],dot[1]) in option.keys():
          option[(dot[0],dot[1])].append(max([road[i][2],road[j][2]]))
        else:
          option[(dot[0],dot[1])] = []
          option[(dot[0],dot[1])].append(max([road[i][2],road[j][2]]))
  road_new = []
  for i in option.items():
    road_new.append(list(i[0])+[min(i[1])])
  if road==road_new:
    print(road_new)
    return road_new
  return get(road_new)

输出结果

所有可能的走法如下,并且最后一位输出最短的权值路径。

例如 [2, 3, 3]:代表 从2走到3最短的权值路径是3,对应路径从图中可以到是2-1-3

例如 [3, 5, 3]:代表 从3走到5最短的权值路径是3,对应路径从图中可以到是3-1-5

[[1, 2, 2], [1, 3, 3], [1, 4, 3], [1, 5, 2], [2, 3, 3],
[2, 4, 3], [2, 5, 2], [3, 4, 3], [3, 5, 3], [4, 5, 3]]

以上这篇python:HDF和CSV存储优劣对比分析就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
使用python加密自己的密码
Aug 04 Python
python得到qq句柄,并显示在前台的方法
Oct 14 Python
Python3模拟登录操作实例分析
Mar 12 Python
Python3.8中使用f-strings调试
May 22 Python
Python generator生成器和yield表达式详解
Aug 08 Python
python实现简单图书管理系统
Nov 22 Python
Python自动化测试笔试面试题精选
Mar 12 Python
解决keras GAN训练是loss不发生变化,accuracy一直为0.5的问题
Jul 02 Python
如何用PyPy让你的Python代码运行得更快
Dec 02 Python
Pytorch中Softmax与LogSigmoid的对比分析
Jun 05 Python
python使用pymysql模块操作MySQL
Jun 16 Python
5行Python代码实现一键批量扣图
Jun 29 Python
Python实现一个简单的毕业生信息管理系统的示例代码
Jun 08 #Python
Python while true实现爬虫定时任务
Jun 08 #Python
python 实现rolling和apply函数的向下取值操作
Jun 08 #Python
基于python计算滚动方差(标准差)talib和pd.rolling函数差异详解
Jun 08 #Python
Python实现查找数据库最接近的数据
Jun 08 #Python
python numpy库np.percentile用法说明
Jun 08 #Python
python thrift 实现 单端口多服务的过程
Jun 08 #Python
You might like
利用discuz实现PHP大文件上传应用实例代码
2008/11/14 PHP
PHP If Else(elsefi) 语句
2013/04/07 PHP
Zend Framework数据库操作技巧总结
2017/02/18 PHP
深入理解Yii2.0乐观锁与悲观锁的原理与使用
2017/07/26 PHP
PHP使用pdo连接access数据库并循环显示数据操作示例
2018/06/05 PHP
tp5框架无刷新分页实现方法分析
2019/09/26 PHP
jQuery之折叠面板的深入解析
2013/06/19 Javascript
JQuery-tableDnD 拖拽的基本使用介绍
2013/07/04 Javascript
FF IE浏览器修改标签透明度的方法
2014/01/27 Javascript
AngularJS ng-bind-template 指令详解
2016/07/30 Javascript
javascript 动态脚本添加的简单方法
2016/10/11 Javascript
JS动态生成年份和月份实例代码
2017/02/04 Javascript
深入理解React Native原生模块与JS模块通信的几种方式
2017/07/24 Javascript
深入理解基于vue-cli的vuex配置
2017/07/24 Javascript
js禁止表单重复提交
2017/08/29 Javascript
基于js中document.cookie全面解析
2017/09/14 Javascript
微信小程序选择图片和放大预览图片功能
2017/11/02 Javascript
基于input动态模糊查询的实现方法
2017/12/12 Javascript
复制粘贴功能的Python程序
2008/04/04 Python
使用Python编写Linux系统守护进程实例
2015/02/03 Python
Python3中的2to3转换工具使用示例
2015/06/12 Python
python UNIX_TIMESTAMP时间处理方法分析
2016/04/18 Python
使用pycharm生成代码模板的实例
2018/05/23 Python
Pandas:Series和DataFrame删除指定轴上数据的方法
2018/11/10 Python
pandas dataframe添加表格框线输出的方法
2019/02/08 Python
Django之创建引擎索引报错及解决详解
2019/07/17 Python
python 服务器运行代码报错ModuleNotFoundError的解决办法
2020/09/16 Python
瑞贝卡·明可弗包包官网:Rebecca Minkoff
2016/07/21 全球购物
Space NK英国站:英国热门美妆网站
2017/12/11 全球购物
GOLFINO英国官网:高尔夫服装
2020/04/11 全球购物
瑞典多品牌连锁店:Johnells
2021/01/13 全球购物
九年级体育教学反思
2014/01/23 职场文书
房地产公司见习自我鉴定
2014/04/28 职场文书
“向国旗敬礼”主题班会活动设计方案
2014/09/27 职场文书
解决golang post文件时Content-Type出现的问题
2021/05/02 Golang
Pytorch 如何实现LSTM时间序列预测
2021/05/17 Python