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脚本来删除指定容量以上的文件的教程
May 04 Python
Python使用Pycrypto库进行RSA加密的方法详解
Jun 06 Python
Python实现的弹球小游戏示例
Aug 01 Python
numpy判断数值类型、过滤出数值型数据的方法
Jun 09 Python
Python2实现的图片文本识别功能详解
Jul 11 Python
解决使用pycharm提交代码时冲突之后文件丢失找回的方法
Aug 05 Python
python3+selenium实现qq邮箱登陆并发送邮件功能
Jan 23 Python
pybind11在Windows下的使用教程
Jul 04 Python
利用PyCharm操作Github(仓库新建、更新,代码回滚)
Dec 18 Python
python 实现两个线程交替执行
May 02 Python
详解查看Python解释器路径的两种方式
Oct 15 Python
Python获取指定网段正在使用的IP
Dec 14 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
用在PHP里的JS打印函数
2006/10/09 PHP
PHP Warning: Module 'modulename' already loaded in问题解决办法
2015/03/16 PHP
PHP实现给定一列字符,生成指定长度的所有可能组合示例
2019/06/22 PHP
php中yar框架实例用法讲解
2020/12/27 PHP
MSN消息提示类
2006/09/05 Javascript
用javascript获取地址栏参数
2006/12/22 Javascript
在jquery中处理带有命名空间的XML数据
2011/06/13 Javascript
js获取浏览器的可视区域尺寸的实现代码
2011/11/30 Javascript
nodejs教程 安装express及配置app.js文件的详细步骤
2013/05/11 NodeJs
JS的千分位算法实现思路
2013/07/31 Javascript
jquery submit ie6下失效的原因分析及解决方法
2013/11/15 Javascript
Jquery插件easyUi表单验证提交(示例代码)
2013/12/30 Javascript
Javascript保存网页为图片借助于html2canvas库实现
2014/09/05 Javascript
AngularJS入门教程之Cookies读写操作示例
2016/11/02 Javascript
解决Angular.Js与Django标签冲突的方案
2016/12/20 Javascript
node安装--linux下的快速安装教程
2017/03/21 Javascript
在 Angular 中实现搜索关键字高亮示例
2017/03/21 Javascript
实例讲解v-if和v-show的区别
2019/01/31 Javascript
基于javascript的拖拽类封装详解
2019/04/19 Javascript
详解一些适用于Node.js的命名约定
2019/12/08 Javascript
JavaScript简单编程实例学习
2020/02/14 Javascript
vue-cli4.x创建企业级项目的方法步骤
2020/06/18 Javascript
Vue路由权限控制解析
2020/11/09 Javascript
python list格式数据excel导出方法
2018/10/31 Python
Python实现简单的列表冒泡排序和反转列表操作示例
2019/07/10 Python
Python for循环通过序列索引迭代过程解析
2020/02/07 Python
某公司C#程序员面试题笔试题
2014/05/26 面试题
C# Debug和Testing相关面试题
2015/10/25 面试题
应届生学校辅导员求职信
2013/11/07 职场文书
酒店司机岗位职责
2013/12/14 职场文书
金融管理毕业生求职信
2014/03/03 职场文书
小班评语大全
2014/05/04 职场文书
大学毕业生求职自荐书
2014/06/05 职场文书
企业环保标语
2014/06/10 职场文书
公司户外活动总结
2014/07/04 职场文书
导游词之苏州寒山寺
2019/12/05 职场文书