accessor的用法,很多朋友看过后都恍然大悟,原来我们常用的str也只是其中之一而已。本篇我们将继续介绍几个pandas的骚操作。
从clipboard剪切板载入数据
将pandas对象转换为“压缩”格式
使用"测试模块"制作伪数据
从列项中创建DatetimeIndex
从clipboard剪切板载入数据
当我们的数据存在excel表里,或者其它的IDE编辑器中的时候,我们想要通过pandas载入数据。我们通常的做法是先保存再载入,其实这样做起来十分繁琐。一个简单的方法就是使用pd.read_clipboard() 直接从电脑的剪切板缓存区中提取数据。
这样我们就可以直接将结构数据转变为DataFrame或者Series了。excel表中数据是这样的:
在纯文本文件中,比如txt文件,是这样的:
将上面excel或者txt中的数据选中然后复制,然后使用pandas的read_clipboard()即可完成到DataFrame的转换。parse_dates参数设置为 "d",可以自动识别日期,并调整为xxxx-xx-xx的格式。
将pandas对象转换为“压缩”格式
在pandas中,我们可以直接将objects打包成为 gzip, bz2, zip, or xz 等压缩格式,而不必将没压缩的文件放在内存中然后进行转化。来看一个例子如何使用:
导入文件,读取并存为abalone(DataFrame结构)。当我们要存为压缩的时候,简单的使用 to_json() 即可轻松完成转化过程。下面通过设置相应参数将abalone存为了.gz格式的压缩文件。
abalone.to_json('df.json.gz', orient='records',
lines=True, compression='gzip')
如果我们想知道储存压缩文件的大小,可以通过内置模块os.path,使用getsize方法来查看文件的字节数。下面是两种格式储存文件的大小对比。
>>> import os.path
>>> abalone.to_json('df.json', orient='records', lines=True)
>>> os.path.getsize('df.json') / os.path.getsize('df.json.gz')
11.603035760226396
使用"测试模块"制作伪数据
在pandas中,有一个测试模块可以帮助我们生成半真实(伪数据),并进行测试,它就是util.testing。下面同我们通过一个简单的例子看一下如何生成数据测试:
上面简单的使用了makeTimeDataFrame 和 makeDataFrame 分别生成了一组时间数据和DataFrame的数据。但这只是其中的两个用法,关于testing中的方法有大概30多个,如果你想全部了解,可以通过查看dir获得:
从列项中创建DatetimeIndex
也许我们有的时候会遇到这样的情形(为了说明这种情情况,我使用了product进行交叉迭代的创建了一组关于时间的数据):
明显看到,列项中有year,month,day,它们分别在各个列中,而并非是一个完整日期。那么如何从这些列中将它们组合在一起并设置为新的index呢?
通过to_datetime的使用,我们就可以直接将年月日组合为一个完整的日期,然后赋给索引。代码如下:
当然,你可以选择将原有的年月日列移除,只保留data数据列,然后squeeze转换为Series结构。