NumPy.npy与pandas DataFrame的实例讲解


Posted in Python onJuly 09, 2018

用CSV格式来保存文件是个不错的主意,因为大部分程序设计语言和应用程序都能处理这种格式,所以交流起来非常方便。然而这种格式的存储效率不是很高,原因是CSV及其他纯文本格式中含有大量空白符;而后来发明的一些文件格式,如zip、bzip和gzip等,压缩率则有了显著提升。

首先导入模块:

In [1]: import numpy as np
 
In [2]: import pandas as pd
 
In [3]: from tempfile import NamedTemporaryFile
 
In [4]: from os.path import getsize

这里我们将使用Python标准的NamedTemporaryFile来存储数据,这些临时文件随后会自动删除。

接下来获取CSV文件格式的大小:

In [5]: np.random.seed(42)
 
In [6]: a = np.random.randn(365,4)
 
In [7]: tmpf = NamedTemporaryFile()
 
In [8]: np.savetxt(tmpf,a,delimiter=',')
 
In [9]: print("Size CSV file",getsize(tmpf.name))
Size CSV file 36693

下面首先以NumPy.npy格式来保存该数组,随后载入内存,并检查数组的形状以及.npy文件的大小:

In [10]: tmpf = NamedTemporaryFile()
 
In [11]: np.save(tmpf,a)
 
In [12]: tmpf.seek(0)
Out[12]: 0
 
In [13]: loaded = np.load(tmpf)
 
In [14]: print("Shape",loaded.shape)
Shape (365, 4)
 
In [15]: print("Size .npy file",getsize(tmpf.name))
Size .npy file 11760

.npy文件的大小只有CSV文件的三分之一左右。实际上,利用Python可以存储任意复杂的数据结构。也可以序列化格式来存储pandas的DataFrame或者Series数据结构

在Python中,pickle是将Python对象存储到磁盘或其他介质时采用的一种格式,这个格式化的过程叫做序列化。之后,我们可以从存储器中重建该Python对象,这个逆过程称为反序列化。并非所有的Python对象都能够序列化;不过借助诸如dill之列的模块,可以将更多种类的Python对象序列化。

首先用前面生成的NumPy数组创建一个DataFame,接着用to_pickle()方法将其写入一个pickle对象中,然后用read_pickle()函数从这个pickle对象中检索该DataFrame:

In [16]: tmpf.name
Out[16]: '/tmp/tmpyy06safp'
 
In [17]: df = pd.DataFrame(a)
 
In [18]: df.to_pickle(tmpf.name) 是将DataFrame()写入到/tmp/tmpyy06safp中
 
In [19]: print("Size pickled dataframes",getsize(tmpf.name))
Size pickled dataframes 12250
 
In [20]: tmpf.name
Out[20]: '/tmp/tmpyy06safp'
 
In [21]: print("DF from pickle\n",pd.read_pickle(tmpf.name))
DF from pickle
    0   1   2   3
0 0.496714 -0.138264 0.647689 1.523030
1 -0.234153 -0.234137 1.579213 0.767435
2 -0.469474 0.542560 -0.463418 -0.465730
3 0.241962 -1.913280 -1.724918 -0.562288
4 -1.012831 0.314247 -0.908024 -1.412304
5 1.465649 -0.225776 0.067528 -1.424748
6 -0.544383 0.110923 -1.150994 0.375698
7 -0.600639 -0.291694 -0.601707 1.852278
8 -0.013497 -1.057711 0.822545 -1.220844
9 0.208864 -1.959670 -1.328186 0.196861
10 0.738467 0.171368 -0.115648 -0.301104
11 -1.478522 -0.719844 -0.460639 1.057122
12 0.343618 -1.763040 0.324084 -0.385082
13 -0.676922 0.611676 1.031000 0.931280
14 -0.839218 -0.309212 0.331263 0.975545
15 -0.479174 -0.185659 -1.106335 -1.196207
16 0.812526 1.356240 -0.072010 1.003533
17 0.361636 -0.645120 0.361396 1.538037
18 -0.035826 1.564644 -2.619745 0.821903
19 0.087047 -0.299007 0.091761 -1.987569
20 -0.219672 0.357113 1.477894 -0.518270
21 -0.808494 -0.501757 0.915402 0.328751
22 -0.529760 0.513267 0.097078 0.968645
23 -0.702053 -0.327662 -0.392108 -1.463515
24 0.296120 0.261055 0.005113 -0.234587
25 -1.415371 -0.420645 -0.342715 -0.802277
26 -0.161286 0.404051 1.886186 0.174578
27 0.257550 -0.074446 -1.918771 -0.026514
28 0.060230 2.463242 -0.192361 0.301547
29 -0.034712 -1.168678 1.142823 0.751933
..  ...  ...  ...  ...
335 0.160574 0.003046 0.436938 1.190646
336 0.949554 -1.484898 -2.553921 0.934320
337 -1.366879 -0.224765 -1.170113 -1.801980
338 0.541463 0.759155 -0.576510 -2.591042
339 -0.546244 0.391804 -1.478912 0.183360
340 -0.015310 0.579291 0.119580 -0.973069
341 1.196572 -0.158530 -0.027305 -0.933268
342 -0.443282 -0.884803 -0.172946 1.711708
343 -1.371901 -1.613561 1.471170 -0.209324
344 -0.669073 1.039905 -0.605616 1.826010
345 0.677926 -0.487911 2.157308 -0.605715
346 0.742095 0.299293 1.301741 1.561511
347 0.032004 -0.753418 0.459972 -0.677715
348 2.013387 0.136535 -0.365322 0.184680
349 -1.347126 -0.971614 1.200414 -0.656894
350 -1.046911 0.536653 1.185704 0.718953
351 0.996048 -0.756795 -1.421811 1.501334
352 -0.322680 -0.250833 1.328194 0.556230
353 0.455888 2.165002 -0.643518 0.927840
354 0.057013 0.268592 1.528468 0.507836
355 0.538296 1.072507 -0.364953 -0.839210
356 -1.044809 -1.966357 2.056207 -1.103208
357 -0.221254 -0.276813 0.307407 0.815737
358 0.860473 -0.583077 -0.167122 0.282580
359 -0.248691 1.607346 0.490975 0.734878
360 0.662881 1.173474 0.181022 -1.296832
361 0.399688 -0.651357 -0.528617 0.586364
362 1.238283 0.021272 0.308833 1.702215
363 0.240753 2.601683 0.565510 -1.760763
364 0.753342 0.381158 1.289753 0.673181
 
[365 rows x 4 columns]

以上这篇NumPy.npy与pandas DataFrame的实例讲解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python 示例分享---逻辑推理编程解决八皇后
Jul 20 Python
Python实现图片转字符画的示例
Aug 22 Python
python matplotlib画图实例代码分享
Dec 27 Python
Python3利用Dlib19.7实现摄像头人脸识别的方法
May 11 Python
运行django项目指定IP和端口的方法
May 14 Python
wxPython的安装与使用教程
Aug 31 Python
pandas 透视表中文字段排序方法
Nov 16 Python
python获取指定日期范围内的每一天,每个月,每季度的方法
Aug 08 Python
Python实现报警信息实时发送至邮箱功能(实例代码)
Nov 11 Python
python从内存地址上加载python对象过程详解
Jan 08 Python
解决jupyter notebook 前面书写后面内容消失的问题
Apr 13 Python
解决Jupyter-notebook不弹出默认浏览器的问题
Mar 30 Python
数组保存为txt, npy, csv 文件, 数组遍历enumerate的方法
Jul 09 #Python
详解Python的hasattr() getattr() setattr() 函数使用方法
Jul 09 #Python
将tensorflow的ckpt模型存储为npy的实例
Jul 09 #Python
caffe binaryproto 与 npy相互转换的实例讲解
Jul 09 #Python
利用Python如何生成便签图片详解
Jul 09 #Python
Caffe均值文件mean.binaryproto转mean.npy的方法
Jul 09 #Python
使用Python更换外网IP的方法
Jul 09 #Python
You might like
150kHz到30Mhz完全冲浪手册
2020/03/20 无线电
javascript延时重复执行函数 lLoopRun.js
2007/06/29 Javascript
javascript contains和compareDocumentPosition 方法来确定是否HTML节点间的关系
2010/02/04 Javascript
jquery append()方法与html()方法的区别及使用介绍
2014/08/01 Javascript
js实现用户注册协议倒计时的方法
2015/01/21 Javascript
Bootstrap媒体对象的实现
2016/05/01 Javascript
AngularJS实现树形结构(ztree)菜单示例代码
2016/09/18 Javascript
jquery文字填写自动高度的实现方法
2016/11/07 Javascript
使用vue.js实现checkbox的全选和多个的删除功能
2017/02/17 Javascript
Express+Nodejs 下的登录拦截实现代码
2017/07/01 NodeJs
vue使用drag与drop实现拖拽的示例代码
2017/09/07 Javascript
基于js中document.cookie全面解析
2017/09/14 Javascript
微信小程序如何像vue一样在动态绑定类名
2018/04/17 Javascript
值得收藏的八个常用的js正则表达式
2018/10/19 Javascript
关于React动态加载路由处理的相关问题
2019/01/07 Javascript
Vue.js + Nuxt.js 项目中使用 Vee-validate 表单校验
2019/04/22 Javascript
发布订阅模式在vue中的实际运用实例详解
2019/06/09 Javascript
js实现坦克大战游戏
2020/02/24 Javascript
git使用.gitignore设置不生效或不起作用问题的解决方法
2017/06/01 Python
python3+PyQt5自定义视图详解
2018/04/24 Python
tensorflow实现逻辑回归模型
2018/09/08 Python
Python后台开发Django的教程详解(启动)
2019/04/08 Python
Python基础之列表常见操作经典实例详解
2020/02/26 Python
html5自带表单验证体验优化及提示气泡修改功能
2017/09/12 HTML / CSS
京东奢侈品:全球奢侈品牌
2018/03/17 全球购物
简单的辞职信范文
2014/01/18 职场文书
毕业生如何写自荐信
2014/03/26 职场文书
出国留学经济担保书
2014/04/01 职场文书
村庄环境整治方案
2014/05/15 职场文书
运动会宣传口号
2014/06/09 职场文书
服务理念口号
2014/06/11 职场文书
法院反腐倡廉心得体会
2014/09/09 职场文书
四年级数学教学反思
2016/02/16 职场文书
大学生创业计划书常用模板
2019/08/07 职场文书
postgresql 删除重复数据案例详解
2021/08/02 PostgreSQL
java中用float时,数字后面加f,这样是为什么你知道吗
2021/09/04 Java/Android