做网站都去哪申请网址,关键词推广seo,那个网站系统好,如何在百度上推广自己以二进制格式存储#xff08;或序列化#xff09;数据的一种简单方法是使用 Python 的内置 pickle 模块。同时#xff0c;pandas 构造的对象都有一个 to_pickle 方法#xff0c;该方法以 pickle 格式将数据写入磁盘。
我们先把之前示例用到的ex1.csv文件加载到pandas对象中…以二进制格式存储或序列化数据的一种简单方法是使用 Python 的内置 pickle 模块。同时pandas 构造的对象都有一个 to_pickle 方法该方法以 pickle 格式将数据写入磁盘。
我们先把之前示例用到的ex1.csv文件加载到pandas对象中然后将数据以二进制pickle格式写入examples/frame_pickle文件中
import pandas as pdframe pd.read_csv(examples/ex1.csv)
frame.to_pickle(examples/frame_pickle)
以上代码会将数据输出到一个frame_pickle文件中 Pickle 文件通常仅在 Python 中可读。可以直接使用内置的 pickle 来读取存储在文件中的任何 “pickled” 对象或者用更简单方便的方式来读取就是 pandas.read_pickle我们把上面生成的frame_pickle文件加载回来pd.read_pickle(examples/frame_pickle) 可以打印出来会输出以下内容
abcdmessage01234hello15678world29101112foo
注意Pickle 仅推荐作为短期存储格式。问题在于很难保证格式会随着时间的推移而稳定例如今天被 picked 的对象可能无法使用更高版本的 library来unpickle 。pandas 会尽可能保持向后兼容性但在将来可能需要 “打破” 当前的pickle 格式。
pandas 也内置了对其他几种开源二进制数据格式的支持例如 HDF5、ORC 和 Apache Parquet。例如如果安装了 pyarrow pip install pyarrow或conda install pyarrow则可以使用 pandas.read_parquet 读取 Parquet 文件。
fec pd.read_parquet(datasets/fec/fec.parquet)
fec.head()
输出前5行
cmte_idcand_idcand_nmcontbr_nmcontbr_citycontbr_stcontbr_zipcontbr_employercontbr_occupationcontb_receipt_amtcontb_receipt_dtreceipt_descmemo_cdmemo_textform_tpfile_num0C00410118P20002978Bachmann, MichelleHARVEY, WILLIAMMOBILEAL366010290RETIREDRETIRED250.020-JUN-11NoneNoneNoneSA17A7361661C00410118P20002978Bachmann, MichelleHARVEY, WILLIAMMOBILEAL366010290RETIREDRETIRED50.023-JUN-11NoneNoneNoneSA17A7361662C00410118P20002978Bachmann, MichelleSMITH, LANIERLANETTAL368633403INFORMATION REQUESTEDINFORMATION REQUESTED250.005-JUL-11NoneNoneNoneSA17A7490733C00410118P20002978Bachmann, MichelleBLEVINS, DARONDAPIGGOTTAR724548253NONERETIRED250.001-AUG-11NoneNoneNoneSA17A7490734C00410118P20002978Bachmann, MichelleWARDENBURG, HAROLDHOT SPRINGS NATIONAR719016467NONERETIRED300.020-JUN-11NoneNoneNoneSA17A736166
对于HDF5格式文件的存取我也将在后面进行学习。鼓励感兴趣的同学自己探索不同的文件格式以了解它们的速度以及它们对在数据分析中的效果。
一、读取 Microsoft Excel 文件
pandas 支持使用ExcelFile 类或 pandas.read_excel 函数等读取存储在 Excel 2003及更高版本文件中的表格数据。但是在内部这些工具要使用附加组件包 xlrd 和 openpyxl 分别读取旧式 XLS 和较新的 XLSX 文件。我们可以使用 pip 或 conda分开安装。
pip install openpyxl xlrd
如果使用的是conda开发工具则可以使用
conda install openpyxl xlrd
使用 pandas的ExcelFile我们通过传递 xls 或 xlsx 文件的路径来创建实例这里使用的ex1.xlsx是一个二进制文件无法直接打开例如
xlsx pd.ExcelFile(examples/ex1.xlsx)
此xlsx对象可以显示文件中可用工作表名称的列表 xlsx.sheet_names
然后可以通过 parse 将存储在工作表中的数据读入 DataFrame加载为DataFrame后就可以方便的进行数据处理分析等。
xlsx.parse(sheet_nameSheet1)
输出
Unnamed: 0abcdmessage001234hello115678world229101112foo 从上面输出可以了解到这个 Excel 表格有一个索引列所以我们可以使用 index_col 参数来指示重新编码
xlsx.parse(sheet_nameSheet1, index_col0)
输出
abcdmessage01234hello15678world29101112foo
使用pandas.ExcelFile读取excel文件中的多个工作表会更快但我们也可以使用pandas.read_excel这个编写代码相对更简单同样接收文件名作为参数。例如
frame pd.read_excel(examples/ex1.xlsx, sheet_nameSheet1) 输出
Unnamed: 0abcdmessage001234hello115678world229101112foo
要将 pandas 数据写入 Excel 格式要先创建一个 ExcelWriter然后使用 pandas 对象的 to_excel 方法将数据写入其中
writer pd.ExcelWriter(examples/ex2.xlsx)
frame.to_excel(writer, Sheet1)
writer.save()
还可以将文件路径传递给 to_excel 而避免使用 ExcelWriter
frame.to_excel(examples/ex2.xlsx)
二、使用 HDF5 格式
HDF5 是一种备受推崇的文件格式用于存储大量科学阵列数据。它以 C 库的形式提供并且具有许多其他编程语言的接口包括 Java、Julia、MATLAB 和 Python。HDF5 中的“HDF”代表分层数据格式。每个 HDF5 文件都可以存储多个数据集和支持元数据。与其他更简单的格式相比HDF5 支持具有多种压缩模式的动态压缩从而能够更高效地存储具有重复模式的数据。HDF5 是处理不适合内存的数据集的不错选择因为我们可以方便有效地读取和写入大数组中的小部分。
要开始使用 HDF5 和 pandas必须首先通过使用 pip 或 conda 安装 PyTables
pip install tables或 conda install pytables
注意PyTables 包在 PyPI 中称为 “tables”因此如果使用 pip 安装则必须运行 pip install tables
虽然可以使用 PyTables 或 h5py 库直接访问 HDF5 文件但 pandas 提供了一个高级接口可简化 Series 和 DataFrame 对象的存储。HDFStore 类的工作方式类似于字典。例如
import numpy as np
import pandas as pdframe pd.DataFrame({a: np.random.standard_normal(100)})
store pd.HDFStore(examples/mydata.h5)
store[obj1] frame
store[obj1_col] frame[a]
print(store)
store.close()
以上代码会在examples目录中生成一个mydata.h5二进制文件该文件类似于字典存储了frame中的数据。同时控制台打印出了store对象的类型和该文件存储的位置
class pandas.io.pytables.HDFStore File path: examples/mydata.h5 可以使用相同的类似字典的方式检索 HDF5 文件中包含的对象
import numpy as np
import pandas as pdframe pd.DataFrame({a: np.random.standard_normal(100)})
store pd.HDFStore(examples/mydata.h5)
store[obj1] frame
store[obj1_col] frame[a]
#检索对象
obj1 store[obj1]
print(obj1)store.close() 输出 a 0 -0.116291 1 -1.111014 2 -1.202469 3 0.436760 4 -0.989590 .. ... 95 -1.201137 96 1.113517 97 -0.942226 98 -0.485934 99 0.590444
[100 rows x 1 columns]
HDFStore 支持两种存储架构即 “fixed” 和 “table” 默认为 “fixed”。后者通常较慢但它支持使用特殊语法的查询操作例如
import numpy as np
import pandas as pdframe pd.DataFrame({a: np.random.standard_normal(100)})
store pd.HDFStore(examples/mydata.h5)
#默认fixed存储
store[obj1] frame
store[obj1_col] frame[a]#设置table存储
store.put(obj2, frame, formattable)
#根据条件查询需要的数据
a store.select(obj2, where[index 10 and index 15])
print(a)
store.close()
输出 a 10 0.211580 11 0.196123 12 -0.869757 13 -1.543114 14 -0.566423 15 0.078732
还有更方便的方法DataFrame.to_hdf 和 pandas.read_hdf 上代码学习
import numpy as np
import pandas as pdframe pd.DataFrame({a: np.random.standard_normal(100)})#将frame中的数据以table存储方式写入mydata.h5
frame.to_hdf(examples/mydata.h5, obj3, formattable)
#读取前5行。
a pd.read_hdf(examples/mydata.h5, obj3, where[index 5])print(a)输出 a 0 -0.321670 1 0.011807 2 1.048680 3 -1.443384 4 0.312067 如果需要可以删除创建的 HDF5 文件如下所示
import osos.remove(examples/mydata.h5)
注意如果需要处理存储在远程服务器如 Amazon S3 或 HDFS上的数据则使用专为分布式存储设计的二进制格式如 Apache Parquet可能更合适。
如果是在本地处理大量数据可以更多的使用 PyTables 和 h5py但是基于以上的学习内容还不够需要深入了解他们的功能。由于许多数据分析问题都是 I/O 密集型而不是 CPU 密集型的因此 HDF5 这样的工具使用会极大的提高我们的访问效率。
另外一个要注意的是HDF5 不是数据库。它非常适合一次写入、多次读取的数据集。虽然我们可以随时将数据添加到HDF5 文件中但如果多个写入器同时写入则有可能会造成文件损坏。 文章转载自: http://www.morning.fbjqq.cn.gov.cn.fbjqq.cn http://www.morning.dnmgr.cn.gov.cn.dnmgr.cn http://www.morning.qinhuangdjy.cn.gov.cn.qinhuangdjy.cn http://www.morning.htbbp.cn.gov.cn.htbbp.cn http://www.morning.xjqkh.cn.gov.cn.xjqkh.cn http://www.morning.pzbjy.cn.gov.cn.pzbjy.cn http://www.morning.sbdqy.cn.gov.cn.sbdqy.cn http://www.morning.rccbt.cn.gov.cn.rccbt.cn http://www.morning.dgfpp.cn.gov.cn.dgfpp.cn http://www.morning.jntdf.cn.gov.cn.jntdf.cn http://www.morning.bsqth.cn.gov.cn.bsqth.cn http://www.morning.zgqysw.cn.gov.cn.zgqysw.cn http://www.morning.pwxkn.cn.gov.cn.pwxkn.cn http://www.morning.hxgly.cn.gov.cn.hxgly.cn http://www.morning.xnrgb.cn.gov.cn.xnrgb.cn http://www.morning.nqgds.cn.gov.cn.nqgds.cn http://www.morning.xbnkm.cn.gov.cn.xbnkm.cn http://www.morning.qfplp.cn.gov.cn.qfplp.cn http://www.morning.rgrz.cn.gov.cn.rgrz.cn http://www.morning.rbzd.cn.gov.cn.rbzd.cn http://www.morning.xcfmh.cn.gov.cn.xcfmh.cn http://www.morning.jzlkq.cn.gov.cn.jzlkq.cn http://www.morning.kzxlc.cn.gov.cn.kzxlc.cn http://www.morning.gklxm.cn.gov.cn.gklxm.cn http://www.morning.cwkcq.cn.gov.cn.cwkcq.cn http://www.morning.mkygc.cn.gov.cn.mkygc.cn http://www.morning.kntsd.cn.gov.cn.kntsd.cn http://www.morning.kmlmf.cn.gov.cn.kmlmf.cn http://www.morning.kkzwn.cn.gov.cn.kkzwn.cn http://www.morning.qbmjf.cn.gov.cn.qbmjf.cn http://www.morning.xwbwm.cn.gov.cn.xwbwm.cn http://www.morning.gpnfg.cn.gov.cn.gpnfg.cn http://www.morning.qtfss.cn.gov.cn.qtfss.cn http://www.morning.ddxjr.cn.gov.cn.ddxjr.cn http://www.morning.wdykx.cn.gov.cn.wdykx.cn http://www.morning.ztqyj.cn.gov.cn.ztqyj.cn http://www.morning.nqlcj.cn.gov.cn.nqlcj.cn http://www.morning.lrmts.cn.gov.cn.lrmts.cn http://www.morning.yxlpj.cn.gov.cn.yxlpj.cn http://www.morning.gpcy.cn.gov.cn.gpcy.cn http://www.morning.eronghe.com.gov.cn.eronghe.com http://www.morning.drqrl.cn.gov.cn.drqrl.cn http://www.morning.wlfxn.cn.gov.cn.wlfxn.cn http://www.morning.hdrrk.cn.gov.cn.hdrrk.cn http://www.morning.mhybs.cn.gov.cn.mhybs.cn http://www.morning.xtqr.cn.gov.cn.xtqr.cn http://www.morning.kxqmh.cn.gov.cn.kxqmh.cn http://www.morning.xsklp.cn.gov.cn.xsklp.cn http://www.morning.dxtxk.cn.gov.cn.dxtxk.cn http://www.morning.jcbjy.cn.gov.cn.jcbjy.cn http://www.morning.ynlbj.cn.gov.cn.ynlbj.cn http://www.morning.pphbn.cn.gov.cn.pphbn.cn http://www.morning.plqsz.cn.gov.cn.plqsz.cn http://www.morning.dkfb.cn.gov.cn.dkfb.cn http://www.morning.kpbq.cn.gov.cn.kpbq.cn http://www.morning.pjrgb.cn.gov.cn.pjrgb.cn http://www.morning.cjsnj.cn.gov.cn.cjsnj.cn http://www.morning.fcqlt.cn.gov.cn.fcqlt.cn http://www.morning.xsymm.cn.gov.cn.xsymm.cn http://www.morning.ddzqx.cn.gov.cn.ddzqx.cn http://www.morning.joinyun.com.gov.cn.joinyun.com http://www.morning.kwqcy.cn.gov.cn.kwqcy.cn http://www.morning.lsjtq.cn.gov.cn.lsjtq.cn http://www.morning.rjrh.cn.gov.cn.rjrh.cn http://www.morning.wcqxj.cn.gov.cn.wcqxj.cn http://www.morning.yhywr.cn.gov.cn.yhywr.cn http://www.morning.qsy37.cn.gov.cn.qsy37.cn http://www.morning.sfnr.cn.gov.cn.sfnr.cn http://www.morning.gqddl.cn.gov.cn.gqddl.cn http://www.morning.rfycj.cn.gov.cn.rfycj.cn http://www.morning.kfldw.cn.gov.cn.kfldw.cn http://www.morning.dnhdp.cn.gov.cn.dnhdp.cn http://www.morning.mxhys.cn.gov.cn.mxhys.cn http://www.morning.lrjtx.cn.gov.cn.lrjtx.cn http://www.morning.tnjz.cn.gov.cn.tnjz.cn http://www.morning.gtmdq.cn.gov.cn.gtmdq.cn http://www.morning.sxfmg.cn.gov.cn.sxfmg.cn http://www.morning.nkddq.cn.gov.cn.nkddq.cn http://www.morning.ycgrl.cn.gov.cn.ycgrl.cn http://www.morning.drjll.cn.gov.cn.drjll.cn