Python Pandas - DataFrame



在 Python 的 pandas 库中,DataFrame 是一个二维带标签的数据结构,用于数据操作和分析。它可以处理不同类型的数据,例如整数、浮点数和字符串。每一列都有一个唯一的标签,每一行都有一个唯一的索引值,这有助于访问特定的行。

DataFrame 用于机器学习任务,允许用户操作和分析大型数据集。它支持诸如过滤、排序、合并、分组和数据转换等操作。

DataFrame 的特性

以下是 Pandas DataFrame 的特性:

  • 列可以是不同类型。
  • 大小是可变的。
  • 带标签的轴(行和列)。
  • 可以对行和列执行算术运算。

Python Pandas DataFrame 结构

您可以将 DataFrame 视为类似于 SQL 表格或电子表格数据表示。假设我们正在创建一个包含学生数据的数据框。

Structure Table

创建 pandas DataFrame

可以使用以下构造函数创建一个 pandas DataFrame:

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

构造函数的参数如下:

序号 参数和描述
1

data

data 可以采用多种形式,例如 ndarray、series、map、列表、字典、常量以及另一个 DataFrame。

2

index

用于结果框架的行标签,是可选的。如果未传递索引,则默认为 np.arange(n)。

3

columns

此参数指定列标签,可选的默认语法为 - np.arange(n)。只有在未传递索引时才为真。

4

dtype

每列的数据类型。

5

copy

此命令(或任何它是什么)用于复制数据,如果默认为 False。

从不同的输入创建 DataFrame

可以使用各种输入(例如)创建 pandas DataFrame:

  • 列表
  • 字典
  • Series
  • NumPy ndarrays
  • 另一个 DataFrame
  • 外部输入文件,例如 CSV、JSON、HTML、Excel 表格等等。

在本章的后续部分,我们将了解如何使用这些输入创建 DataFrame。

创建空 DataFrame

可以使用 DataFrame 构造函数在没有任何输入的情况下创建一个空 DataFrame。

示例

以下是创建空 DataFrame 的示例。

#import the pandas library and aliasing as pd
import pandas as pd
df = pd.DataFrame()
print(df)

输出如下:

Empty DataFrame
Columns: []
Index: []

从列表创建 DataFrame

可以使用单个列表或列表的列表创建 DataFrame。

示例

以下示例演示如何从 Python 列表对象创建 pandas DataFrame。

import pandas as pd
data = [1,2,3,4,5]
df = pd.DataFrame(data)
print(df)

输出如下:

     0
0    1
1    2
2    3
3    4
4    5

示例

这是另一个从 Python 列表的列表创建 Pandas DataFrame 的示例。

import pandas as pd
data = [['Alex',10],['Bob',12],['Clarke',13]]
df = pd.DataFrame(data,columns=['Name','Age'])
print(df)

输出如下:

      Name      Age
0     Alex      10
1     Bob       12
2     Clarke    13

从 ndarray/列表的字典创建 DataFrame

所有ndarrays都必须具有相同的长度。如果传递索引,则索引的长度应等于数组的长度。

如果没有传递索引,则默认情况下,索引将是 range(n),其中n是数组的长度。

示例

以下是根据 Python 字典创建 DataFrame 的示例。

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

输出如下:

      Age      Name
0     28        Tom
1     34       Jack
2     29      Steve
3     42      Ricky

注意 - 请观察值 0,1,2,3。它们是使用函数 range(n) 为每个值分配的默认索引。

示例

现在让我们使用数组创建一个带索引的 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

注意 - 请注意,index参数为每一行分配一个索引。

从字典列表创建 DataFrame

字典列表可以作为输入数据传递以创建 DataFrame。字典键默认情况下被视为列名。

示例

以下示例显示如何通过传递字典列表来创建 DataFrame。

import pandas as pd
data = [{'a': 1, 'b': 2},{'a': 5, 'b': 10, 'c': 20}]
df = pd.DataFrame(data)
print(df)

输出如下:

    a    b      c
0   1   2     NaN
1   5   10   20.0

注意 - 请注意,NaN(非数字)附加在缺失区域。

示例

以下示例显示如何使用字典列表、行索引和列索引创建 DataFrame。

import pandas as pd
data = [{'a': 1, 'b': 2},{'a': 5, 'b': 10, 'c': 20}]

#With two column indices, values same as dictionary keys
df1 = pd.DataFrame(data, index=['first', 'second'], columns=['a', 'b'])

#With two column indices with one index with other name
df2 = pd.DataFrame(data, index=['first', 'second'], columns=['a', 'b1'])
print(df1)
print(df2)

输出如下:

#df1 output
         a  b
first    1  2
second   5  10

#df2 output
         a  b1
first    1  NaN
second   5  NaN

注意 - 请注意,df2 DataFrame 是使用与字典键不同的列索引创建的;因此,在适当位置添加了 NaN。而 df1 是使用与字典键相同的列索引创建的,因此添加了 NaN。

从 Series 字典创建 DataFrame

Series 的字典可以传递来形成 DataFrame。结果索引是传递的所有 Series 索引的并集。

示例

这是一个例子:

import pandas as pd

d = {'one' : pd.Series([1, 2, 3], index=['a', 'b', 'c']),
   'two' : pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])}

df = pd.DataFrame(d)
print(df)

输出如下:

      one    two
a     1.0    1
b     2.0    2
c     3.0    3
d     NaN    4

注意 - 请注意,对于 series one,没有传递标签‘d’,但在结果中,对于标签d,附加了 NaN。

示例

另一个从 Series 创建 Pandas DataFrame 的示例:

import pandas as pd

data = pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])

df = pd.DataFrame(data)
print(df)

输出如下:

       0
a      1
b      2
c      3
d      4
广告