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模块学习 datetime介绍
Aug 27 Python
Python中的zip函数使用示例
Jan 29 Python
在Python的Django框架中用流响应生成CSV文件的教程
May 02 Python
Python的Flask框架中配置多个子域名的方法讲解
Jun 07 Python
浅谈tensorflow1.0 池化层(pooling)和全连接层(dense)
Apr 27 Python
Python生成短uuid的方法实例详解
May 29 Python
修复 Django migration 时遇到的问题解决
Jun 14 Python
使用Python实现租车计费系统的两种方法
Sep 29 Python
python连接mongodb密码认证实例
Oct 16 Python
python多进程下实现日志记录按时间分割
Jul 22 Python
Python 限定函数参数的类型及默认值方式
Dec 24 Python
利用python控制Autocad:pyautocad方式
Jun 01 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
PHP新手上路(十一)
2006/10/09 PHP
md5 16位二进制与32位字符串相互转换示例
2013/12/30 PHP
PHP的Laravel框架结合MySQL与Redis数据库的使用部署
2016/03/21 PHP
jquery.validate使用攻略 第五步 正则验证
2010/07/01 Javascript
JS定时器实例
2013/04/17 Javascript
教你在heroku云平台上部署Node.js应用
2014/07/30 Javascript
Jquery 实现table样式的设定
2015/01/28 Javascript
JavaScript检查弹出窗口是否被阻拦的方法技巧
2015/03/13 Javascript
移动端JQ插件hammer使用详解
2015/07/03 Javascript
Javascript中常用类型的格式化方法小结
2016/12/26 Javascript
jquery实现百叶窗效果
2017/01/12 Javascript
关于在vue-cli中使用微信自动登录和分享的实例
2017/06/22 Javascript
nodejs基础之常用工具模块util用法分析
2018/12/26 NodeJs
详解vue项目打包步骤
2019/03/29 Javascript
vue select 获取value和lable操作
2020/08/28 Javascript
使用Vant完成通知栏Notify的提示操作
2020/11/11 Javascript
javascript实现左右缓动动画函数
2020/11/25 Javascript
使用Python压缩和解压缩zip文件的教程
2015/05/06 Python
Python 实现文件的全备份和差异备份详解
2016/12/27 Python
python 计算数组中每个数字出现多少次--“Bucket”桶的思想
2017/12/19 Python
利用python将xml文件解析成html文件的实现方法
2017/12/22 Python
详解python函数传参是传值还是传引用
2018/01/16 Python
python DataFrame转dict字典过程详解
2019/12/26 Python
Python代码中如何读取键盘录入的值
2020/05/27 Python
基于HTML5 Canvas 实现弹出框效果
2017/06/05 HTML / CSS
详解HTML5中rel属性的prefetch预加载功能使用
2016/05/06 HTML / CSS
日本著名的服饰鞋帽综合类购物网站:MAGASEEK
2019/01/09 全球购物
美国在线宠物商店:Chewy
2019/01/12 全球购物
Vector, ArrayList, HashTable, HashMap哪些是线程安全的,哪些不是
2015/10/12 面试题
教师实习自我鉴定
2013/12/13 职场文书
工作证明范本(2篇)
2014/09/14 职场文书
法律意见书范文
2015/05/20 职场文书
该怎么书写道歉信?
2019/07/03 职场文书
nginx配置ssl实现https的方法示例
2021/03/31 Servers
vue项目两种方式实现竖向表格的思路分析
2021/04/28 Vue.js
Java实现添加条码或二维码到Word文档
2022/06/01 Java/Android