如何成为Python的数据操作库Pandas的专家?

开发 后端

Pandas库是Python中最流行的数据操作库。受到R语言的frames启发,它提供了一种通过其data-frame API操作数据的简单方法。下面我们给大家介绍Pandas在Python中的定位。

 

如何成为Python的数据操作库Pandas的专家?

 

了解Pandas

要很好地理解pandas,关键之一是要理解pandas是一系列其他python库的包装器。主要的有Numpy、SQL alchemy、Matplot lib和openpyxl。

data frame的核心内部模型是一系列NumPy数组和pandas函数。

pandas利用其他库来从data frame中获取数据。例如,SQL alchemy通过read_sql和to_sql函数使用;openpyxl和xlsx writer用于read_excel和to_excel函数。而Matplotlib和Seaborn则用于提供一个简单的接口,使用诸如df.plot()这样的命令来绘制data frame中可用的信息。

Numpy的Pandas-高效的Pandas

您经常听到的抱怨之一是Python很慢,或者难以处理大量数据。通常情况下,这是由于编写的代码的效率很低造成的。原生Python代码确实比编译后的代码要慢。不过,像Pandas这样的库提供了一个用于编译代码的python接口,并且知道如何正确使用这个接口。

向量化操作

与底层库Numpy一样,pandas执行向量化操作的效率比执行循环更高。这些效率是由于向量化操作是通过C编译代码执行的,而不是通过本机python代码执行的。另一个因素是向量化操作的能力,它可以对整个数据集进行操作,而不只是对一个子数据集进行操作。

应用接口允许通过使用CPython接口进行循环来获得一些效率:

df.apply(lambda x: x['col_a'] * x['col_b'], axis=1)

但是,大部分性能收益可以通过使用向量化操作本身获得,可以直接在pandas中使用,也可以直接调用它的内部Numpy数组。

通过DTYPES高效地存储数据

当通过read_csv、read_excel或其他数据帧读取函数将数据帧加载到内存中时,pandas会进行类型推断,这可能是低效的。这些api允许您明确地利用dtypes指定每个列的类型。指定dtypes允许在内存中更有效地存储数据。

df.astype({'testColumn': str, 'testCountCol': float})

Dtypes是来自Numpy的本机对象,它允许您定义用于存储特定信息的确切类型和位数。

例如,Numpy的类型np.dtype(' int32 ')表示一个32位长的整数。pandas默认为64位整数,我们可以节省一半的空间使用32位:

 

如何成为Python的数据操作库Pandas的专家?

 

处理带有块的大型数据集

pandas允许按块(chunk)加载数据帧中的数据。因此,可以将数据帧作为迭代器处理,并且能够处理大于可用内存的数据帧。

 

如何成为Python的数据操作库Pandas的专家?

 

在读取数据源时定义块大小和get_chunk方法的组合允许panda以迭代器的方式处理数据,如上面的示例所示,其中数据帧一次读取两行。然后我们可以遍历这些块:

i = 0for a in df_iter: # do some processing chunk = df_iter.get_chunk() i += 1 new_chunk = chunk.apply(lambda x: do_something(x), axis=1) new_chunk.to_csv("chunk_output_%i.csv" % i )

它的输出可以被提供到一个CSV文件,pickle,导出到数据库,等等…

 

责任编辑:赵宁宁
相关推荐

2011-09-01 15:01:38

网页设计

2023-01-06 08:24:00

PandasPython

2020-06-24 11:59:31

PythonPandas数据处理

2019-07-29 08:59:14

主管阿里专家Leader

2014-04-14 16:50:15

Linux专家

2023-01-28 10:09:00

Pandas数据分析Python

2021-08-12 08:00:00

Pandas数据分析SQL

2019-07-05 11:20:31

PythonMySQL数据库

2018-05-16 09:00:24

数据质量数据管理数据科学家

2020-11-19 15:26:36

SQLPandas代码

2010-08-24 08:58:42

开发者

2015-03-19 14:56:08

程序员专专家级的程序员

2010-05-05 15:45:52

Oracle数据库

2023-09-25 13:19:41

pandasPython

2023-11-21 09:11:31

2010-03-08 11:35:22

2009-02-24 10:19:49

Oracle DBA深入解析Oracle求职

2021-02-01 07:40:55

架构师阿里技专家

2019-07-17 17:00:29

数据库数据库管理员DBA

2020-11-16 08:56:02

Python
点赞
收藏

51CTO技术栈公众号