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爬虫之urllib2中的两个重要概念:Openers和Handlers
Nov 05 Python
基于Python实现的ID3决策树功能示例
Jan 02 Python
selenium python 实现基本自动化测试的示例代码
Feb 25 Python
python实现计数排序与桶排序实例代码
Mar 28 Python
Python 利用高德地图api实现经纬度与地址的批量转换
Aug 14 Python
Django项目之Elasticsearch搜索引擎的实例
Aug 21 Python
Flask项目中实现短信验证码和邮箱验证码功能
Dec 05 Python
python如何使用socketserver模块实现并发聊天
Dec 14 Python
Python中文分词库jieba,pkusegwg性能准确度比较
Feb 11 Python
详解Django3中直接添加Websockets方式
Feb 12 Python
Python利用imshow制作自定义渐变填充柱状图(colorbar)
Dec 10 Python
Python编写万花尺图案实例
Jan 03 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获取指定月份第一天和最后一天的方法
2015/07/18 PHP
使用PHP下载CSS文件中的所有图片【几行代码即可实现】
2016/12/14 PHP
PHP 文件锁与进程锁的使用示例
2017/08/07 PHP
PHP聊天室简单实现方法详解
2018/12/08 PHP
用javascript实现的仿Flash广告图片轮换效果
2007/04/24 Javascript
javascript之Partial Application学习
2013/01/10 Javascript
裁剪字符串trim()自定义改进版
2013/04/10 Javascript
Jquery 模板数据绑定插件的使用方法详解
2013/07/08 Javascript
js获取事件源及触发该事件的对象
2013/10/24 Javascript
JS实现简单的图书馆享元模式实例
2015/06/30 Javascript
jquery+CSS3模拟Path2.0动画菜单效果代码
2015/08/31 Javascript
JS实现DIV容器赋值的方法
2015/12/14 Javascript
jQuery 3.0中存在问题及解决办法
2016/07/15 Javascript
JS批量替换内容中关键词为超链接
2017/02/20 Javascript
jQuery Easyui Treegrid实现显示checkbox功能
2017/08/08 jQuery
通过nodejs 服务器读取HTML文件渲染到页面的方法
2018/05/17 NodeJs
在Vue组件中获取全局的点击事件方法
2018/09/06 Javascript
Vue结合后台导入导出Excel问题详解
2019/02/19 Javascript
bootstrap 日期控件 datepicker被弹出框dialog覆盖的解决办法
2019/07/09 Javascript
layui实现数据分页功能(ajax异步)
2019/07/27 Javascript
浅谈bootstrap layer.open中end的使用方法
2019/09/12 Javascript
详解ES6中class的实现原理
2020/10/03 Javascript
vue实现购物车的小练习
2020/12/21 Vue.js
python中函数默认值使用注意点详解
2016/06/01 Python
python基础教程项目五之虚拟茶话会
2018/04/02 Python
python邮件发送smtplib使用详解
2020/06/16 Python
使用python验证代理ip是否可用的实现方法
2018/07/25 Python
Django中celery执行任务结果的保存方法
2019/07/12 Python
css3 中translate和transition的使用方法
2020/03/26 HTML / CSS
设计部经理的岗位职责
2013/11/16 职场文书
理财投资建议书
2014/03/12 职场文书
《冬阳童年骆驼队》教学反思
2014/04/15 职场文书
商场客服专员岗位职责
2014/06/13 职场文书
元旦晚会活动总结
2014/07/09 职场文书
物资采购管理制度
2015/08/06 职场文书
MATLAB 如何求取离散点的曲率最大值
2021/04/16 Python