Python - 数据操作

Python 主要通过 Pandas 和 Numpy 这两个库来处理各种格式的数据。在前面的章节中,我们已经了解了这两个库的重要特性。在本章中,我们将从每个库中看到一些关于如何操作数据的基本示例。

Numpy 中的数据操作

NumPy 中定义的最重要的对象是称为 ndarray 的 N 维数组类型。它描述了相同类型的项目的集合。可以使用从零开始的索引来访问集合中的项目。可以通过本教程后面描述的不同数组创建例程来构造 ndarray 类的实例。基本 ndarray 使用 NumPy 中的数组函数创建,如下所示 −

numpy.array

以下是一些有关 Numpy 数据处理的示例。

示例 1

# 多个维度
import numpy as np
a = np.array([[1, 2], [3, 4]])
print a

输出如下 −

[[1, 2] 
 [3, 4]]

示例2

# 最小维度
import numpy as np
a = np.array([1, 2, 3,4,5], ndmin = 2)
print a

输出如下 −

[[1, 2, 3, 4, 5]]

示例3

# dtype 参数
import numpy as np
a = np.array([1, 2, 3], dtype = complex)
print a

输出如下 −

[ 1.+0.j,  2.+0.j,  3.+0.j]

Pandas 中的数据操作

Pandas 通过 SeriesData FramePanel 处理数据。我们将从每个操作中看到一些示例。

Pandas Series

Series 是一个一维标记数组,能够保存任何类型的数据(整数、字符串、浮点数、python 对象等)。轴标签统称为索引。 可以使用以下构造函数 − 创建 pandas Series

pandas.Series( data, index, dtype, copy)

示例

这里我们从 Numpy 数组创建一个系列。

#导入 pandas 库并将其别名为 pd
import pandas as pd
import numpy as np
data = np.array(['a','b','c','d'])
s = pd.Series(data)
print s

输出如下 −

0   a
1   b
2   c
3   d
dtype: object

Pandas DataFrame

Data Frame 是一种二维数据结构,即数据以表格形式按行和列排列。可以使用以下构造函数 − 创建 pandas DataFrame

pandas.DataFrame( data, index, columns, dtype, copy)

现在让我们使用数组创建一个带索引的 DataFrame。

import pandas as pd
data = {'Name':['Tom', 'Jack', 'Steve', 'Ricky'],'Age':[28,34,29,42]}
df = pd.DataFrame(data, index=['rank1','rank2','rank3','rank4'])
print df

输出如下 −

         Age    Name
rank1    28      Tom
rank2    34     Jack
rank3    29    Steve
rank4    42    Ricky

Pandas Panel

panel 是数据的 3D 容器。术语 Panel data 源自计量经济学,部分归因于 pandas − pan(el)-da(ta)-s 这个名称。

可以使用以下构造函数 − 创建 Panel

pandas.Panel(data, items, major_axis, minor_axis, dtype, copy)

在下面的示例中,我们从 DataFrame 对象的字典中创建了一个面板

#creating an empty panel
import pandas as pd
import numpy as np

data = {'Item1' : pd.DataFrame(np.random.randn(4, 3)), 
        'Item2' : pd.DataFrame(np.random.randn(4, 2))}
p = pd.Panel(data)
print p

输出如下 −

<class 'pandas.core.panel.Panel'>
Dimensions: 2 (items) x 4 (major_axis) x 5 (minor_axis)
Items axis: 0 to 1
Major_axis axis: 0 to 3
Minor_axis axis: 0 to 4