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中from module import * 的一个坑
Jul 20 Python
以Flask为例讲解Python的框架的使用方法
Apr 29 Python
Python中getattr函数和hasattr函数作用详解
Jun 14 Python
开源Web应用框架Django图文教程
Mar 09 Python
python实现画圆功能
Jan 25 Python
python批量查询、汉字去重处理CSV文件
May 31 Python
浅谈python下含中文字符串正则表达式的编码问题
Dec 07 Python
python利用itertools生成密码字典并多线程撞库破解rar密码
Aug 12 Python
Python 实现Numpy中找出array中最大值所对应的行和列
Nov 26 Python
python 中的9个实用技巧,助你提高开发效率
Aug 30 Python
pandas使用函数批量处理数据(map、apply、applymap)
Nov 27 Python
python 安全地删除列表元素的方法
Mar 16 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缓存类代码(附详细说明)
2011/06/09 PHP
使用ThinkPHP+Uploadify实现图片上传功能
2014/06/26 PHP
PHP简单的MVC框架实现方法
2015/12/01 PHP
javascrip客户端验证文件大小及文件类型并重置上传
2011/01/12 Javascript
jquery点击页面任何区域实现鼠标焦点十字效果
2013/06/21 Javascript
javascript获取所有同类checkbox选项(实例代码)
2013/11/07 Javascript
编写js扩展方法判断一个数组中是否包含某个元素
2013/11/08 Javascript
Jquery实现图片预加载与延时加载的方法
2014/12/22 Javascript
JS实现在网页中弹出一个输入框的方法
2015/03/03 Javascript
jQuery实现的淡入淡出二级菜单效果代码
2015/09/15 Javascript
Nodejs实战心得之eventproxy模块控制并发
2015/10/27 NodeJs
Vue.js基础知识汇总
2016/04/27 Javascript
javascript中setAttribute兼容性用法分析
2016/12/12 Javascript
angular双向绑定模拟探索
2016/12/26 Javascript
微信小程序--onShareAppMessage分享参数用处(页面分享)
2017/04/18 Javascript
Bootstrap组件之下拉菜单,多级菜单及按钮布局方法实例
2017/05/25 Javascript
简单谈谈原生js的math对象
2017/06/27 Javascript
jQuery+ajax读取json数据并按照价格排序示例
2018/03/28 jQuery
小程序云开发之用户注册登录
2019/05/18 Javascript
JavaScript 继承 封装 多态实现及原理详解
2019/07/29 Javascript
JavaScript数值类型知识汇总
2019/11/17 Javascript
Vue 事件的$event参数=事件的值案例
2021/01/29 Vue.js
python发布模块的步骤分享
2014/02/21 Python
Python实现的密码强度检测器示例
2017/08/23 Python
使用Pyinstaller的最新踩坑实战记录
2017/11/08 Python
pandas 使用均值填充缺失值列的小技巧分享
2019/07/04 Python
Python中BeautifuSoup库的用法使用详解
2019/11/15 Python
sklearn-SVC实现与类参数详解
2019/12/10 Python
Python和Anaconda和Pycharm安装教程图文详解
2020/02/04 Python
Python 如何调试程序崩溃错误
2020/08/03 Python
Jupyter安装链接aconda实现过程图解
2020/11/02 Python
利用CSS3实现动态的二级三级菜单效果实例源码
2017/01/04 HTML / CSS
大学本科毕业生的自我鉴定范文
2013/11/19 职场文书
岗位职责怎么写
2014/03/14 职场文书
2016大学自主招生推荐信范文
2015/03/23 职场文书
获奖感言一句话
2015/07/31 职场文书