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的Flask框架中实现全文搜索功能
Apr 20 Python
python获得一个月有多少天的方法
Jun 04 Python
Python制作爬虫采集小说
Oct 25 Python
Python调用系统底层API播放wav文件的方法
Aug 11 Python
django 发送邮件和缓存的实现代码
Jul 18 Python
python 划分数据集为训练集和测试集的方法
Dec 11 Python
Django Rest framework之认证的实现代码
Dec 17 Python
Python matplotlib画图与中文设置操作实例分析
Apr 23 Python
Python3 使用selenium插件爬取苏宁商家联系电话
Dec 23 Python
python 统计文件中的字符串数目示例
Dec 24 Python
Pytest实现setup和teardown的详细使用详解
Apr 17 Python
你需要掌握的20个Python常用技巧
Feb 28 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 分页原理详解
2009/08/21 PHP
PHP实现时间轴函数代码
2011/10/08 PHP
PHP 使用pcntl和libevent 实现Timer功能
2013/10/27 PHP
PHP调用JAVA的WebService简单实例
2014/03/11 PHP
基于PHP的简单采集数据入库程序
2014/07/30 PHP
PHP树的深度编历生成迷宫及A*自动寻路算法实例分析
2015/03/10 PHP
php的闭包(Closure)匿名函数初探
2016/02/14 PHP
半角全角相互转换的js函数
2009/10/16 Javascript
JS实现鼠标点击展开或隐藏表格行的方法
2015/03/03 Javascript
解决node-webkit 不支持html5播放mp4视频的方法
2015/03/11 Javascript
Sublime Text 3常用插件及安装方法
2015/12/16 Javascript
jquery mobile界面数据刷新的实现方法
2016/05/28 Javascript
BootStrap iCheck插件全选与获取value值的解决方法
2016/08/24 Javascript
JavaScript 函数模式详解及示例
2016/09/07 Javascript
JS常用算法实现代码
2016/11/14 Javascript
JavaScript简单生成 N~M 之间随机数的方法
2017/01/13 Javascript
React-native桥接Android原生开发详解
2018/01/17 Javascript
jQuery实现的回车触发按钮事件功能示例
2018/03/25 jQuery
JS实现点击li标签弹出对应的索引功能【案例】
2019/02/18 Javascript
Jquery实现获取子元素的方法分析
2019/08/24 jQuery
JavaScript获取当前url路径过程解析
2019/12/27 Javascript
vue@cli3项目模板怎么使用public目录下的静态文件
2020/07/07 Javascript
vue调用微信JSDK 扫一扫,相册等需要注意的事项
2021/01/03 Vue.js
对tf.reduce_sum tensorflow维度上的操作详解
2018/07/26 Python
Python操作SQLite数据库过程解析
2019/09/02 Python
Python高阶函数、常用内置函数用法实例分析
2019/12/26 Python
解决tensorflow打印tensor有省略号的问题
2020/02/04 Python
Python标准库shutil模块使用方法解析
2020/03/10 Python
Python新手学习装饰器
2020/06/04 Python
python rsa-oaep加密的示例代码
2020/09/23 Python
python cookie反爬处理的实现
2020/11/01 Python
HTML5本地存储之IndexedDB
2017/06/16 HTML / CSS
StubHub巴西:购买和出售您的门票
2016/07/22 全球购物
super关键字的用法
2012/04/10 面试题
入党积极分子思想汇报
2014/01/02 职场文书
redis哨兵常用命令和监控示例详解
2021/05/27 Redis