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之入门(四)运算
May 27 Python
零基础写python爬虫之urllib2使用指南
Nov 05 Python
浅析python实现scrapy定时执行爬虫
Mar 04 Python
Django admin禁用编辑链接和添加删除操作详解
Nov 15 Python
DJango的创建和使用详解(默认数据库sqlite3)
Nov 18 Python
Python+OpenCV实现旋转文本校正方式
Jan 09 Python
keras tensorflow 实现在python下多进程运行
Feb 06 Python
django 扩展user用户字段inlines方式
Mar 30 Python
django序列化时使用外键的真实值操作
Jul 15 Python
Python lambda表达式原理及用法解析
Aug 18 Python
Matplotlib配色之Colormap详解
Jan 05 Python
OpenCV-Python实现人脸磨皮算法
Jun 07 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
全国FM电台频率大全 - 9 上海市
2020/03/11 无线电
Yii数据模型中rules类验证器用法分析
2016/07/15 PHP
PHPWind9.0手动屏蔽验证码解决后台关闭验证码但是依然显示的问题
2016/08/12 PHP
PHP实现的数独求解问题示例
2017/04/18 PHP
Extjs列表详细信息窗口新建后自动加载解决方法
2010/04/02 Javascript
在IE和VB中支持png图片透明效果的实现方法(vb源码打包)
2011/04/01 Javascript
JS、jQuery中select的用法详解
2016/04/21 Javascript
有关jQuery中parent()和siblings()的小问题
2016/06/01 Javascript
解析浏览器端的AJAX缓存机制
2016/06/21 Javascript
js判断空对象的实例(超简单)
2016/07/26 Javascript
详解jQuery事件
2017/01/13 Javascript
基于JS实现移动端向左滑动出现删除按钮功能
2017/02/22 Javascript
微信小程序之GET请求的实例详解
2017/09/29 Javascript
jquery ajax加载数据前台渲染方式 不用for遍历的方法
2018/08/09 jQuery
vue store之状态管理模式的详细介绍
2019/06/13 Javascript
layui导出所有数据的例子
2019/09/10 Javascript
layui点击按钮页面会自动刷新的解决方案
2019/10/25 Javascript
nodejs制作小爬虫功能示例
2020/02/24 NodeJs
vue实现标签云效果的示例
2020/11/09 Javascript
[08:47]2018国际邀请赛 OG战队举杯时刻
2018/08/29 DOTA
跟老齐学Python之折腾一下目录
2014/10/24 Python
使用Python对IP进行转换的一些操作技巧小结
2015/11/09 Python
python中的字典使用分享
2016/07/31 Python
python实现决策树、随机森林的简单原理
2018/03/26 Python
python 返回列表中某个值的索引方法
2018/11/07 Python
python实现代码统计器
2019/09/19 Python
python Socket网络编程实现C/S模式和P2P
2020/06/22 Python
canvas版人体时钟的实现示例
2021/01/29 HTML / CSS
介绍一下SQL Server的全文索引
2013/08/15 面试题
文明宿舍获奖感言
2014/02/07 职场文书
会计专业毕业自荐书范文
2014/02/08 职场文书
趣味运动会简讯
2015/07/20 职场文书
经典励志格言:每日一句,让你每天充满能量
2019/08/16 职场文书
Python还能这么玩之只用30行代码从excel提取个人值班表
2021/06/05 Python
java中用float时,数字后面加f,这样是为什么你知道吗
2021/09/04 Java/Android
centos环境下nginx高可用集群的搭建指南
2022/07/23 Servers