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中实现结构相似的函数调用方法
Mar 10 Python
python中字典(Dictionary)用法实例详解
May 30 Python
怎样使用Python脚本日志功能
Aug 14 Python
解决Django模板无法使用perms变量问题的方法
Sep 10 Python
python实现写数字文件名的递增保存文件方法
Oct 25 Python
pytorch 批次遍历数据集打印数据的例子
Dec 30 Python
python实现在一个画布上画多个子图
Jan 19 Python
使用Django和Postgres进行全文搜索的实例代码
Feb 13 Python
Python ATM功能实现代码实例
Mar 19 Python
通俗讲解python 装饰器
Sep 07 Python
Django返回HTML文件的实现方法
Sep 17 Python
python爬虫scrapy图书分类实例讲解
Nov 23 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读取30天之内的根据算法排序的代码
2008/04/06 PHP
PHP 存储文本换行实现方法
2010/01/05 PHP
五款PHP代码重构工具推荐
2014/10/14 PHP
简单概括PHP的字符串中单引号与双引号的区别
2016/05/07 PHP
html读出文本文件内容
2007/01/22 Javascript
jQuery插件原来如此简单 jQuery插件的机制及实战
2012/02/07 Javascript
js简单实现HTML标签Select联动带跳转
2013/10/23 Javascript
Javascript核心读书有感之表达式和运算符
2015/02/11 Javascript
举例讲解jQuery对DOM元素的向上遍历、向下遍历和水平遍历
2016/07/07 Javascript
ECMAScript6轮播图实践知识总结
2016/08/17 Javascript
微信小程序之仿微信漂流瓶实例
2016/12/09 Javascript
深入理解vue-loader如何使用
2017/06/06 Javascript
Vue 2.5 Level E 发布了: 新功能特性一览
2017/10/24 Javascript
setTimeout时间设置为0详细解析
2018/03/13 Javascript
详解搭建es6+devServer简单开发环境
2018/09/25 Javascript
使用pkg打包Node.js应用的方法步骤
2018/10/19 Javascript
理理Vue细节(推荐)
2019/04/16 Javascript
Vue2(三)实现子菜单展开收缩,带动画效果实现方法
2019/04/28 Javascript
vue中使用[provide/inject]实现页面reload的方法
2019/09/30 Javascript
《javascript设计模式》学习笔记五:Javascript面向对象程序设计工厂模式实例分析
2020/04/08 Javascript
[46:43]DOTA2上海特级锦标赛D组小组赛#1 EG VS COL第三局
2016/02/28 DOTA
python自定义类并使用的方法
2015/05/07 Python
python中map()与zip()操作方法
2016/02/27 Python
把pandas转换int型为str型的方法
2019/01/29 Python
torch 中各种图像格式转换的实现方法
2019/12/26 Python
pytorch+lstm实现的pos示例
2020/01/14 Python
关于Tensorflow使用CPU报错的解决方式
2020/02/05 Python
HTML5中使用postMessage实现两个网页间传递数据
2016/06/22 HTML / CSS
YBF Beauty官网:美丽挚友,美国知名彩妆品牌
2020/11/22 全球购物
40岁生日感言
2014/02/15 职场文书
元旦晚会策划方案
2014/02/18 职场文书
党政领导班子群众路线对照检查材料
2014/10/26 职场文书
孕妇离婚协议书范本
2014/11/20 职场文书
2014年物业公司工作总结
2014/11/22 职场文书
廉洁自律个人总结
2015/02/14 职场文书
2016年“5.12”国际护士节活动总结
2016/04/06 职场文书