Pandas库是Python中最流行的数据操作库。受R框架的启发,它提供了一种通过其数据框架API操作数据的简单方法。下面我们就来介绍一下Pandas在Python中的定位。理解Pandas理解pandas的关键之一是理解pandas是一系列其他python库的包装器。主要有Numpy、SQLalchemy、Matplotlib和openpyxl。数据框的核心内部模型是一系列NumPy数组和pandas函数。pandas利用其他库从数据框中获取数据。例如,sqlalchemy被read_sql和to_sql函数使用;read_excel和to_excel函数使用openpyxl和xlsxwriter。而Matplotlib和Seaborn用于提供一个简单的界面,以使用df.plot()等命令绘制数据框中可用的信息。PandaswithNumpy-EfficientPandas您经常听到的抱怨之一是Python速度慢,或者在处理大量数据时遇到问题。通常,这是由于编写的代码效率低下造成的。原生Python代码确实比编译代码慢。但是,像Pandas这样的库提供了一个用于编译代码的python接口,并且知道如何正确使用它。向量化操作与底层库Numpy一样,pandas比循环更有效地执行向量化操作。这些效率是由于矢量化操作是通过C编译代码而不是本机Python代码执行的。另一个因素是矢量化操作的能力,它对整个数据集进行操作,而不仅仅是子数据集。apply接口允许通过使用CPython接口进行循环来获得一些效率:df.apply(lambdax:x['col_a']*x['col_b'],axis=1)但是,大部分性能增益可以是通过使用向量化实现运算本身得到,可以直接在pandas中使用,也可以直接调用其内部的Numpy数组。通过DTYPES高效存储数据当通过read_csv、read_excel或其他数据帧读取函数将数据帧加载到内存中时,pandas会进行类型推断,这可能是低效的。这些API允许您使用数据类型显式指定每一列的类型。指定数据类型可以更有效地在内存中存储数据。df.astype({'testColumn':str,'testCountCol':float})Dtypes是Numpy的本地对象,允许您定义用于存储特定信息的确切类型和位数。例如,Numpy的类型np.dtype('int32')表示一个32位长整数。pandas默认为64位整数,我们可以通过使用32位节省一半的空间:Handlinglargedatasetswithchunkspandas允许以块的形式加载数据帧中的数据。因此,数据帧可以作为迭代器处理,并且能够处理大于可用内存的数据帧。在读取数据源时定义块大小和get_chunk方法的组合允许pandas将数据作为迭代器处理,如上例所示,一次读取数据帧两行。然后我们可以迭代块:i=0foraindf_iter:#dosomeprocessingchunk=df_iter.get_chunk()i+=1new_chunk=chunk.apply(lambdax:do_something(x),axis=1)new_chunk.to_csv("chunk_output_%i.csv"%i)它的输出可以提供给CSV文件、腌制、导出到数据库等...
