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应用程序在windows下不出现cmd窗口的办法
May 29 Python
wxpython 最小化到托盘与欢迎图片的实现方法
Jun 09 Python
python列表的增删改查实例代码
Jan 30 Python
numpy中的高维数组转置实例
Apr 17 Python
python事件驱动event实现详解
Nov 21 Python
python matplotlib实现双Y轴的实例
Feb 12 Python
Python3实现的简单工资管理系统示例
Mar 12 Python
python 基于TCP协议的套接字编程详解
Jun 29 Python
pytorch的梯度计算以及backward方法详解
Jan 10 Python
python 密码学示例——凯撒密码的实现
Sep 21 Python
Django生成数据库及添加用户报错解决方案
Oct 09 Python
解决Pyinstaller打包软件失败的一个坑
Mar 04 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
wordpress之wp-settings.php
2007/08/17 PHP
实用函数2
2007/11/08 PHP
PHP中使用匿名函数操作数据库的例子
2014/11/17 PHP
codeigniter中实现一次性加载多个view的方法
2015/03/20 PHP
PHP SplObjectStorage使用实例
2015/05/12 PHP
JQuery 选项卡效果(JS与HTML的分离)
2010/04/01 Javascript
js静态方法与实例方法分析
2011/07/04 Javascript
怎么选择Javascript框架(Javascript Framework)
2013/11/22 Javascript
跟我学习javascript的var预解析与函数声明提升
2015/11/16 Javascript
iscroll.js的上拉下拉刷新时无法回弹的解决方法
2016/02/18 Javascript
Javascript 实现微信分享(QQ、朋友圈、分享给朋友)
2016/10/21 Javascript
React-Native做一个文本输入框组件的实现代码
2017/08/10 Javascript
vue自定义全局组件(自定义插件)的用法
2018/01/30 Javascript
原生JS进行前后端同构
2018/04/22 Javascript
详解VS Code使用之Vue工程配置format代码格式化
2019/03/20 Javascript
如何利用JavaScript编写更好的条件语句详解
2020/08/10 Javascript
使用Vant完成通知栏Notify的提示操作
2020/11/11 Javascript
在pycharm 中添加运行参数的操作方法
2019/01/19 Python
python抖音表白程序源代码
2019/04/07 Python
python pytest进阶之fixture详解
2019/06/27 Python
Pytorch 中retain_graph的用法详解
2020/01/07 Python
Python接口测试get请求过程详解
2020/02/28 Python
tensorflow常用函数API介绍
2020/04/19 Python
Watchshop德国:欧洲在线手表No.1
2019/06/20 全球购物
日常奢侈品,轻松购物:Verishop
2019/08/20 全球购物
英国钻石公司:British Diamond Company
2020/02/16 全球购物
垃圾分类的活动方案
2014/08/15 职场文书
学生考试舞弊检讨书
2015/01/01 职场文书
我的法兰西岁月观后感
2015/06/09 职场文书
2015最新婚礼主持词
2015/06/30 职场文书
篮球赛闭幕式主持词
2015/07/03 职场文书
小学运动会加油词
2015/07/18 职场文书
广播稿:校园广播稿范文
2019/04/17 职场文书
开网店计划分析
2019/07/30 职场文书
css3实现背景图片颜色修改的多种方式
2021/04/13 HTML / CSS
vue+iview实现手机号分段输入框
2022/03/25 Vue.js