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 11 Python
Python程序中的观察者模式结构编写示例
May 27 Python
Python编程之微信推送模板消息功能示例
Aug 21 Python
Python3利用SMTP协议发送E-mail电子邮件的方法
Sep 30 Python
python中的迭代和可迭代对象代码示例
Dec 27 Python
Python实现的购物车功能示例
Feb 11 Python
在CMD命令行中运行python脚本的方法
May 12 Python
详解Python传入参数的几种方法
May 16 Python
Python3实现将一维数组按标准长度分隔为二维数组
Nov 29 Python
pycharm不能运行.py文件的解决方法
Feb 12 Python
PyInstaller将Python文件打包为exe后如何反编译(破解源码)以及防止反编译
Apr 15 Python
如何使用pycharm连接Databricks的步骤详解
Sep 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短网址的生成代码(仿微博短网址)
2014/05/07 PHP
jquery+php实现导出datatables插件数据到excel的方法
2015/07/06 PHP
WordPress中邮件的一些修改和自定义技巧
2015/12/15 PHP
php实现简单的守护进程创建、开启与关闭操作
2019/08/13 PHP
JavaScript 的方法重载效果
2009/08/07 Javascript
浮动的div自适应居中显示的js代码
2013/12/23 Javascript
JavaScript也谈内存优化
2014/06/06 Javascript
JavaScript中的迭代器和生成器详解
2014/10/29 Javascript
在JavaScript应用中实现延迟加载的方法
2015/06/25 Javascript
JS特效实现图片自动播放并可控的效果
2015/07/31 Javascript
基于jQuery实现自动轮播旋转木马特效
2015/11/02 Javascript
基于JavaScript实现Tab选项卡切换效果
2016/11/24 Javascript
nodeJS实现简单网页爬虫功能的实例(分享)
2017/06/08 NodeJs
jquery加载单文件vue组件的方法
2017/06/20 jQuery
微信JSAPI Ticket接口签名详解
2020/06/28 Javascript
JS中的多态实例详解
2017/10/15 Javascript
详细分析jsonp的原理和实现方式
2017/11/20 Javascript
微信小程序中上传图片并进行压缩的实现代码
2018/08/28 Javascript
javascript 构建模块化开发过程解析
2019/09/11 Javascript
JS实现网站吸顶条
2020/01/08 Javascript
JS实现横向轮播图(中级版)
2020/01/18 Javascript
JS实现进度条动态加载特效
2020/03/25 Javascript
Python中计算三角函数之cos()方法的使用简介
2015/05/15 Python
Python模拟登录验证码(代码简单)
2016/02/06 Python
浅谈python之新式类
2018/08/12 Python
python定时按日期备份MySQL数据并压缩
2019/04/19 Python
使用CSS3制作倾斜导航条和毛玻璃效果
2017/09/12 HTML / CSS
公司清洁工岗位职责
2013/12/14 职场文书
新闻学专业个人求职信写作
2014/02/04 职场文书
扬尘污染防治方案
2014/06/15 职场文书
教师学习群众路线心得体会
2014/11/04 职场文书
升学宴答谢词
2015/01/05 职场文书
工会积极分子个人总结
2015/03/03 职场文书
如何写好竞聘报告
2019/04/03 职场文书
SQLServer之常用函数总结详解
2021/08/30 SQL Server
我的收音机情缘
2022/04/05 无线电