找回密码
 会员注册
查看: 25|回复: 0

Python酷库之旅-第三方库Pandas(011)

[复制链接]

2万

主题

0

回帖

7万

积分

超级版主

积分
70601
发表于 2024-9-10 01:34:03 | 显示全部楼层 |阅读模式
目录一、用法精讲25、pandas.HDFStore.get函数25-1、语法25-2、参数25-3、功能25-4、返回值25-5、说明25-6、用法25-6-1、数据准备25-6-2、代码示例25-6-3、结果输出26、pandas.HDFStore.select函数26-1、语法26-2、参数26-3、功能26-4、返回值26-5、说明26-6、用法26-6-1、数据准备26-6-2、代码示例26-6-3、结果输出 27、pandas.HDFStore.info函数27-1、语法27-2、参数27-3、功能27-4、返回值27-5、说明27-6、用法27-6-1、数据准备27-6-2、代码示例27-6-3、结果输出 二、推荐阅读1、Python筑基之旅2、Python函数之旅3、Python算法之旅4、Python魔法之旅5、博客个人主页一、用法精讲25、pandas.HDFStore.get函数25-1、语法#25、pandas.HDFStore.get函数HDFStore.get(key)Retrievepandasobjectstoredinfile.Parameters:keystrReturnsbjectSametypeasobjectstoredinfile.25-2、参数25-2-1、key(必须):一个字符串,指定了要检索的数据在HDF5文件中的位置或名称,这个key通常对应于你在将数据保存到HDF5文件时所使用的名称或路径。25-3、功能       用于从HDF5文件中检索(或获取)存储的数据。25-4、返回值        一般来说,这个函数会返回与key相关联的pandas对象,如DataFrame、Series或其他可能的pandas容器。        具体来说,返回值可以是:25-4-1、DataFrame:如果存储在HDF5文件中与key相关联的数据是一个表格或类似表格的数据结构,那么get方法将返回一个DataFrame对象。DataFrame是pandas中用于存储和操作结构化数据的主要数据结构,它以表格形式存储数据,包含行和列。25-4-2、Series:在某些情况下,如果存储的数据是一维的,比如时间序列数据或单个列的数据,那么get方法可能会返回一个Series对象,Series是pandas中用于存储一维数据(即具有索引的数组)的数据结构。25-4-3、其他pandas对象:虽然不常见,但理论上HDF5文件中也可以存储其他类型的pandas对象,如Panel(注意:从pandas0.25.0版本开始,Panel已被弃用并从pandas库中移除)。然而,随着pandas的发展,这种情况变得越来越罕见。25-4-4、None或默认值:如果指定的key在HDF5文件中不存在,并且get方法没有提供默认值作为第二个参数,那么它可能会引发一个KeyError。但是,如果提供了默认值(尽管这不是get方法的标准行为,因为get方法在HDFStore中通常不直接支持默认值参数,这可能是DataFrame.get方法的混淆),那么它将返回该默认值。然而,在HDFStore的上下文中,更常见的做法是使用try-except块来捕获KeyError,并在需要时处理这种情况。25-5、说明    无25-6、用法25-6-1、数据准备无25-6-2、代码示例#25、pandas.HDFStore.get函数importpandasaspd#创建一个示例的DataFramedata=pd.DataFrame({'A':[1,2,3,4],'B':['foo','bar','foo','bar'],'C':[0.1,0.2,0.3,0.4]})#将数据保存到HDF5文件中filename='example.h5'key='data'data.to_hdf(filename,key=key,format='table',mode='w')#从HDF5文件中读取数据withpd.HDFStore(filename,mode='r')asstore:df_from_hdf=store.get(key)#打印读取的数据print("DatareadfromHDF5:")print(df_from_hdf)25-6-3、结果输出#25、pandas.HDFStore.get函数#DatareadfromHDF5:#ABC#01foo0.1#12bar0.2#23foo0.3#34bar0.426、pandas.HDFStore.select函数26-1、语法#26、pandas.HDFStore.select函数HDFStore.select(key,where=None,start=None,stop=None,columns=None,iterator=False,chunksize=None,auto_close=False)Retrievepandasobjectstoredinfile,optionallybasedonwherecriteria.WarningPandasusesPyTablesforreadingandwritingHDF5files,whichallowsserializingobject-dtypedatawithpicklewhenusingthe“fixed”format.Loadingpickleddatareceivedfromuntrustedsourcescanbeunsafe.See:https://docs.python.org/3/library/pickle.htmlformore.Parameters:keystrObjectbeingretrievedfromfile.wherelistorNoneListofTerm(orconvertible)objects,optional.startintorNoneRownumbertostartselection.stopint,defaultNoneRownumbertostopselection.columnslistorNoneAlistofcolumnsthatifnotNone,willlimitthereturncolumns.iteratorboolorFalseReturnsaniterator.chunksizeintorNoneNumberorrowstoincludeiniteration,returnaniterator.auto_closeboolorFalseShouldautomaticallyclosethestorewhenfinished.ReturnsbjectRetrievedobjectfromfile.26-2、参数26-2-1、key(必须):要检索的HDF5文件中的键(或路径),这通常是在将数据保存到HDF5文件时指定的名称或路径。26-2-2、where(可选,默认值为None):用于筛选数据的条件表达式。如果是一个字符串,则它应该是一个有效的Pandas查询字符串,类似于在DataFrame上使用.query()方法时所使用的字符串;如果是一个可调用对象(如函数),则它应该接受一个DataFrame作为输入,并返回一个布尔序列来指示哪些行应该被选中。26-2-3、start/stop(可选,默认值为None):要检索的行的起始/结束索引(0-based),如果指定了start和stop,则只会检索这两个索引之间的行(包括start,但不包括stop)。26-2-4、columns(可选,默认值为None):要检索的列名列表或单个列名,如果指定了此参数,则只会检索这些列的数据。26-2-5、iterator(可选,默认值为False):如果为True,则返回一个迭代器,该迭代器逐个块地生成数据,而不是一次性将整个数据集加载到内存中,这对于处理大型数据集非常有用。26-2-6、chunksize(可选,默认值为None):当iterator=True时,此参数指定了每个块中的行数,它允许你控制内存的使用量,并可以在处理大型数据集时提高性能。26-2-7、auto_close(可选,默认值为False):如果为True,则在迭代器耗尽或发生异常时自动关闭存储,这有助于确保即使在发生错误时也能正确关闭文件。然而,请注意,如果你打算在迭代器耗尽后继续使用HDFStore对象,则应该将此参数设置为False。26-3、功能        从HDF5文件中检索存储在特定key下的pandas对象(如DataFrame或Series),并允许用户根据一系列参数来筛选或控制检索的数据。26-4、返回值  返回值取决于存储在HDF5文件中与key相关联的数据类型以及查询条件(如果有的话)。通常情况下,返回值是pandas对象,如:26-4-1、DataFrame:如果检索的数据是表格形式的,那么返回的将是一个DataFrame对象。26-4-2、Series:如果检索的数据是一维的(例如,单个列的数据),那么返回的可能是一个Series对象,尽管这通常发生在明确指定了单列作为columns参数时。26-4-3、其他pandas对象:理论上也可以是其他pandas容器,但在HDF5文件的上下文中,最常见的是DataFrame和Series。26-5、说明    无    26-6、用法26-6-1、数据准备无26-6-2、代码示例#26、pandas.HDFStore.select函数importpandasaspdimportnumpyasnp#创建一个示例DataFramenp.random.seed(0)#设置随机种子以确保结果可重复data=pd.DataFrame({'A':np.random.randn(100),'B':np.random.randn(100),'C':np.random.randn(100),'D':np.random.randint(0,2,100)})#将DataFrame保存到HDF5文件中withpd.HDFStore('example.h5')asstore:store.put('data',data,format='table')#从HDF5文件中检索数据的示例withpd.HDFStore('example.h5')asstore:#选择所有数据print("\nAlldata:")all_data=store.select('data')print(all_data.head())#只打印前几行以节省空间#选择特定的列print("\nSpecificcolumns(A,B):")specific_columns=store.select('data',columns=['A','B'])print(specific_columns.head())#选择部分数据行(注意:HDF5的索引可能不是从0开始的,但这里假设它是)print("\nPartialdata(rows10to19):")partial_data=store.select('data',start=10,stop=20)print(partial_data)#使用chunksize来逐块读取数据print("\nDatareadinchunks:")chunks=store.select('data',chunksize=10)fori,chunkinenumerate(chunks):print(f"Chunk{i+1}:")print(chunk.head())#只打印每个块的前几行26-6-3、结果输出 #26、pandas.HDFStore.select函数#Alldata:#ABCD#01.7640521.883151-0.3691820#10.400157-1.347759-0.2393790#20.978738-1.2704851.0996601#32.2408930.9693970.6552641#41.867558-1.1731230.6401320##Specificcolumns(A,B):#AB#01.7640521.883151#10.400157-1.347759#20.978738-1.270485#32.2408930.969397#41.867558-1.173123##Partialdata(rows10to19):#ABCD#100.1440441.8675590.9101790#111.4542740.9060450.3172180#120.761038-0.8612260.7863281#130.1216751.910065-0.4664190#140.443863-0.268003-0.9444460#150.3336740.802456-0.4100500#161.4940790.947252-0.0170201#17-0.205158-0.1550100.3791521#180.3130680.6140792.2593090#19-0.8540960.922207-0.0422570##Datareadinchunks:#Chunk1:#ABCD#01.7640521.883151-0.3691820#10.400157-1.347759-0.2393790#20.978738-1.2704851.0996601#32.2408930.9693970.6552641#41.867558-1.1731230.6401320#Chunk2:#ABCD#100.1440441.8675590.9101790#111.4542740.9060450.3172180#120.761038-0.8612260.7863281#130.1216751.910065-0.4664190#140.443863-0.268003-0.9444460#Chunk3:#ABCD#20-2.5529900.376426-0.9559450#210.653619-1.099401-0.3459821#220.8644360.298238-0.4635960#23-0.7421651.3263860.4814810#242.269755-0.694568-1.5407971#Chunk4:#ABCD#300.154947-0.769916-1.4240611#310.3781630.539249-0.4933200#32-0.887786-0.674333-0.5428610#33-1.9807960.0318310.4160501#34-0.347912-0.635846-1.1561821#Chunk5:#ABCD#40-1.048553-1.491258-0.6374370#41-1.4200180.439392-0.3972721#42-1.7062700.166673-0.1328810#431.9507750.635031-0.2977910#44-0.5096522.383145-0.3090130#Chunk6:#ABCD#50-0.895467-0.0682420.5210651#510.3869021.713343-0.5757881#52-0.510805-0.7447550.1419530#53-1.180632-0.826439-0.3193280#54-0.028182-0.0984530.6915391#Chunk7:#ABCD#60-0.672460-0.498032-1.1888591#61-0.3595531.929532-0.5068161#62-0.8131460.949421-0.5963140#63-1.7262830.087551-0.0525670#640.177426-1.225436-1.9362800#Chunk8:#ABCD#700.7290910.9208590.3990460#710.1289830.318728-2.7725931#721.1394010.8568311.9559120#73-1.234826-0.6510260.3900931#740.402342-1.034243-0.6524091#Chunk9:#ABCD#80-1.165150-0.353994-0.1105410#810.900826-1.3749511.0201730#820.465662-0.643618-0.6920501#83-1.536244-2.2234031.5363770#841.4882520.6252310.2863440#Chunk10:#ABCD#90-0.403177-1.292857-0.6280881#911.2224450.267051-0.4810271#920.208275-0.0392832.3039170#930.976639-1.168093-1.0600161#940.3563660.523277-0.135950027、pandas.HDFStore.info函数27-1、语法#27、pandas.HDFStore.info函数HDFStore.info()Printdetailedinformationonthestore.Returns:str27-2、参数    无27-3、功能        提供关于存储在HDF5文件中的数据集(也称为键或节点)的详细信息。27-4、返回值        没有直接的返回值(即不返回任何数据给变量),而是将信息打印到控制台(或标准输出)。27-5、说明    无27-6、用法27-6-1、数据准备无27-6-2、代码示例#27、pandas.HDFStore.info函数importpandasaspdimportnumpyasnp#创建一个包含随机数的数据帧data=pd.DataFrame({'A':np.random.randn(100),'B':np.random.randn(100),'C':np.random.randn(100),'D':np.random.randint(0,2,100)})#将数据写入HDF5文件withpd.HDFStore('example.h5')asstore:store.put('data',data,format='table')#使用HDFStore.info()函数获取HDF5文件的信息withpd.HDFStore('example.h5')asstore:#打印存储的信息store.info()#读取数据以确认all_data=store.select('data')print("\nAlldata(first5rows):")print(all_data.head())27-6-3、结果输出 #27、pandas.HDFStore.info函数#Alldata(first5rows):#ABCD#0-1.186803-0.9833450.6610221#10.549244-0.429500-0.0223291#21.4089890.7792680.0795741#3-1.1786960.9181250.1743320#4-0.538677-0.124535-1.1652081二、推荐阅读1、Python筑基之旅2、Python函数之旅3、Python算法之旅4、Python魔法之旅5、博客个人主页
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2025-1-8 12:12 , Processed in 0.439642 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表