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采用requests库模拟登录和抓取数据的简单示例
Jul 05 Python
python有证书的加密解密实现方法
Nov 19 Python
python中异常报错处理方法汇总
Nov 20 Python
pygame实现俄罗斯方块游戏
Jun 26 Python
Python中矩阵创建和矩阵运算方法
Aug 04 Python
python画图系列之个性化显示x轴区段文字的实例
Dec 13 Python
selenium 安装与chromedriver安装的方法步骤
Jun 12 Python
使用python打印十行杨辉三角过程详解
Jul 10 Python
Python如何优雅获取本机IP方法
Nov 10 Python
Django之form组件自动校验数据实现
Jan 14 Python
解决jupyter notebook打不开无反应 浏览器未启动的问题
Apr 10 Python
教你使用一行Python代码玩遍童年的小游戏
Aug 23 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
剧场版动画《PSYCHO-PASS 3 FIRST INSPECTOR》3月27日日本上映!
2020/03/06 日漫
PHP 和 HTML
2006/10/09 PHP
PHP 编写的 25个游戏脚本
2009/05/11 PHP
PHP中使用gettext解决国际化问题的例子(i18n)
2014/06/13 PHP
PHP生成随机数的方法实例分析
2015/01/22 PHP
大家在抢红包,程序员在研究红包算法
2015/08/31 PHP
php生成HTML文件的类方法
2019/10/11 PHP
JavaScript 编程引入命名空间的方法与代码
2007/08/13 Javascript
表单类各种类型(文本框)失去焦点效果jquery代码
2013/04/26 Javascript
JS事件在IE与FF中的区别详细解析
2013/11/20 Javascript
对于Form表单reset方法的新认识
2014/03/05 Javascript
使用js检测浏览器是否支持html5中的video标签的方法
2014/03/12 Javascript
jQuery多级弹出菜单插件ZoneMenu
2014/12/18 Javascript
常用的JS验证和函数汇总
2014/12/23 Javascript
js实现类似MSN提示的页面效果代码分享
2015/08/24 Javascript
AngularJs实现ng1.3+表单验证
2015/12/10 Javascript
Jquery为DIV添加click事件的简单实例
2016/06/02 Javascript
详解基于angular-cli配置代理解决跨域请求问题
2017/07/05 Javascript
jQuery初级教程之网站品牌列表效果
2017/08/02 jQuery
vue小白入门教程
2018/04/02 Javascript
vue使用laydate时间插件的方法
2018/11/14 Javascript
express express-session的使用小结
2018/12/12 Javascript
微信小程序scroll-view隐藏滚动条的方法详解
2020/03/25 Javascript
在Django的URLconf中进行函数导入的方法
2015/07/18 Python
python生成n个元素的全组合方法
2018/11/13 Python
快速解决vue.js 模板和jinja 模板冲突的问题
2019/07/26 Python
PyTorch-GPU加速实例
2020/06/23 Python
python获取时间戳的实现示例(10位和13位)
2020/09/23 Python
美国东北部户外服装和设备零售商:Eastern Mountain Sports
2016/10/05 全球购物
英国在线汽车和面包车零件商店:Car Parts 4 Less
2018/08/15 全球购物
医学检验专业大学生求职信
2013/11/18 职场文书
运动会横幅标语
2014/06/17 职场文书
公司董事长助理工作职责
2014/07/12 职场文书
工伤死亡理赔协议书
2014/10/20 职场文书
2014年语文教师工作总结
2014/12/18 职场文书
MySQL 数据 data 基本操作
2022/05/04 MySQL