3.1 Pandas快速入门

Pandas是一种流行的数据科学Python软件包,它提供了强大和灵活的数据结构,使数据操作和分析变得很容易,从选择、替换列和索引到重塑数据,有很多优点。DataFrame是Pandas的结构之一。

本章节将介绍Pandas DataFrame从基本操作到高级的操作。本节的主要内容包含:

一、什么是Pandas DataFrame

Pandas库中的DataFrame,它具有可能是不同类型的二维数组。通常,您可以说Pandas DataFrame由三个主要组件组成:数据、索引和列。

DataFrame可以包含以下数据:

注意:np.ndarraynp.array()之间的差异,前者是实际数据类型,而后者是从其他数据结构生成数组的函数。

结构化数组允许用户通过命名字段操作数据:在下面的示例中,创建了三个元组的结构化数组。每个元组的第一个元素将被命名foo并且将是int类型,而第二个元素将被命名bar并且将是一个浮点数。

另一方面,记录数组扩展了结构化数组的属性。它们允许用户按属性而不是索引访问结构化数组的字段。

import numpy as np # 结构化数组 my_array = np.ones(3, dtype=([('foo', int), ('bar', float)])) # 打印结构化数组 print(my_array['foo']) # 记录数组 my_array2 = my_array.view(np.recarray) # 打印记录数组 print(my_array2.foo)

除了数据,您还可以指定DataFrame的索引和列名称。索引一方面表示行的差异,而列名表示列的差异。稍后您将看到,当您操作数据时,DataFrame的这两个组件将派上用场。

如果你还未安装Pandas,请安装如下命令安装

pip install pandas

二、创建Pandas DataFrame

在可以作为创建’DataFrame’的输入的众多方式中,NumPy ndarray就是其中之一。要以NumPy数组创建DataFrame,您只需将其传递给DataFrame()函数中的data参数即可。

import numpy as np import pandas as pd data = np.array([[1, 2], [3, 4]]) print(pd.DataFrame(data), "\n") data = np.array([['', 'Col1', 'Col2'], ['Row1', 1, 2], ['Row2', 3, 4]]) print(pd.DataFrame(data=data[1:, 1:], index=data[1:, 0], columns=data[0, 1:]))

输出如下:

   0  1
0  1  2
1  3  4 

     Col1 Col2
Row1    1    2
Row2    3    4

这种创建DataFrame的方法对于可以作为DataFrame()输入的所有结构都是一样的。

其中的三个参数:

三、多种方式创建Pandas DataFrame

再看一下下面的示例代码:

import numpy as np import pandas as pd # 将2D数组作为DataFrame的输入 my_2darray = np.array([[1, 2, 3], [4, 5, 6]]) print(pd.DataFrame(my_2darray)) # 将字典作为DataFrame的输入 my_dict = {1: ['1', '3'], 2: ['1', '2'], 3: ['2', '4']} print(pd.DataFrame(my_dict)) # 将DataFrame作为DataFrame的输入 my_df = pd.DataFrame(data=[4, 5, 6, 7], index=range(1, 5), columns=['A']) print(pd.DataFrame(my_df)) # 以Series作为DataFrame的输入 my_series = pd.Series({"United Kingdom":"London", "India":"New Delhi", "United States":"Washington", "Belgium":"Brussels"}) print(pd.DataFrame(my_series))

运行后输出如下:

   0  1  2
0  1  2  3
1  4  5  6
   1  2  3
0  1  1  2
1  3  2  4
   A
1  4
2  5
3  6
4  7
                         0
United Kingdom      London
India            New Delhi
United States   Washington
Belgium           Brussels

注意:Series和DataFrame的索引包含原始字典的键,但它们是按顺序排列的。

四、Pandas DataFrame的常见属性

在创建DataFrame之后,您可以将shape属性或len()函数与.index属性结合使用。

import numpy as np import pandas as pd df = pd.DataFrame(np.array([[1, 2, 3], [4, 5, 6]])) print("df:\n", df) print("df.shape:", df.shape) print("len(df.index):", len(df.index)) print("df[0].count():", df[0].count()) print("list(df.columns.values):", list(df.columns.values))

运行后输出如下:

df:
    0  1  2
0  1  2  3
1  4  5  6
df.shape: (2, 3)
len(df.index): 2
df[0].count(): 2
list(df.columns.values): [0, 1, 2]

代码解释:

五、获取Pandas DataFrame的数据

与数组一样,创建Pandas DataFrame后我们需要知道如何获取指定的元素。

import numpy as np import pandas as pd df = pd.DataFrame(data=np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]), index=[1, 2, 0], columns=[48, 49, 50]) print(df) # 用.iloc[][]选择指定元素 print("\ndf.iloc[1][48]:\n", df.iloc[1][48]) # 用.iloc[]选择相应位置的那行 print("\ndf.iloc[1]:\n", df.iloc[1]) # 用.loc[]选择相应标签的那行 print("\ndf.loc[1]:\n", df.loc[1]) # 用.loc[:, 'A']选择列 print("\ndf.loc[:, 48]:\n", df.loc[:, 48])

运行后输出如下:

48 49 50 1 1 2 3 2 4 5 6 0 7 8 9 df.iloc[1][48]: 4 df.iloc[1]: 48 4 49 5 50 6 Name: 2, dtype: int64 df.loc[1]: 48 1 49 2 50 3 Name: 1, dtype: int64 df.loc[:, 48]: 1 1 2 4 0 7 Name: 48, dtype: int64

代码解释:

注意.loc[].iloc[]这两者之间的细微差别。

六、总结

通过本节的学习对了解了Pandas DataFrame的概念和对它基本的操作,下面我们再进一步对Pandas DataFrame进行学习。

若有疑问,欢迎联系作者(微信:lixu1770105)。