用CSV格式来保存文件是个不错的主意,因为大部分程序设计语言和应用程序都能处理这种格式,所以交流起来非常方便。然而这种格式的存储效率不是很高,原因是CSV及其他纯文本格式中含有大量空白符;而后来发明的一些文件格式,如zip、bzip和gzip等,压缩率则有了显著提升。
首先导入模块:
1
2
3
4
5
6
7
|
In [ 1 ]: import numpy as np In [ 3 ]: from tempfile import NamedTemporaryFile In [ 4 ]: from os.path import getsize |
这里我们将使用Python标准的NamedTemporaryFile来存储数据,这些临时文件随后会自动删除。
接下来获取CSV文件格式的大小:
1
2
3
4
5
6
7
8
9
10
|
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文件的大小:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
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:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
|
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的实例讲解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/qq_24683561/article/details/54573938