Pandas 库中,DataFrame 是一个非常重要的数据结构,用于存储和处理二维数据。它可以看作是一个表格,类似于 Excel 表格或数据库中的表,具有行和列。

1. DataFrame 基本介绍

DataFrame 是一个 表格型数据结构,它有以下特点:

  • 行和列:每一行代表一个样本,每一列代表一个特征或属性。
  • 异构数据类型:每一列可以包含不同的数据类型,如数值、字符串、布尔值等。
  • 轴标签:每一行和每一列都有一个标签,行标签(index)和列标签(columns)。

2. 创建 DataFrame

可以通过多种方式创建 DataFrame,最常见的方式包括从字典、列表或其他 DataFrame 创建。

从字典创建 DataFrame

import pandas as pd

# 字典形式的数据
data = {
    'Name': ['Alice', 'Bob', 'Charlie'],
    'Age': [24, 27, 22],
    'City': ['New York', 'Los Angeles', 'Chicago']
}

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

输出:

      Name  Age         City
0    Alice   24     New York
1      Bob   27  Los Angeles
2  Charlie   22      Chicago

从列表创建 DataFrame

import pandas as pd

# 列表形式的数据
data = [['Alice', 24, 'New York'], ['Bob', 27, 'Los Angeles'], ['Charlie', 22, 'Chicago']]
df = pd.DataFrame(data, columns=['Name', 'Age', 'City'])
print(df)

输出:

      Name  Age         City
0    Alice   24     New York
1      Bob   27  Los Angeles
2  Charlie   22      Chicago

从 NumPy 数组创建 DataFrame

import pandas as pd
import numpy as np

# 使用 NumPy 数组创建 DataFrame
data = np.array([['Alice', 24, 'New York'], ['Bob', 27, 'Los Angeles'], ['Charlie', 22, 'Chicago']])
df = pd.DataFrame(data, columns=['Name', 'Age', 'City'])
print(df)

输出:

      Name Age         City
0    Alice  24     New York
1      Bob  27  Los Angeles
2  Charlie  22      Chicago

3. 访问 DataFrame 的数据

访问列

可以通过列标签访问 DataFrame 的列:

# 访问单列
print(df['Name'])

# 输出:
# 0      Alice
# 1        Bob
# 2    Charlie
# Name: Name, dtype: object

访问多列

# 访问多列
print(df[['Name', 'City']])

# 输出:
#       Name         City
# 0    Alice     New York
# 1      Bob  Los Angeles
# 2  Charlie      Chicago

访问行

可以使用 .loc[].iloc[] 来访问特定的行。

  • loc[]:通过标签访问行或列。
  • iloc[]:通过位置(索引)访问行或列。
# 通过标签访问第 1 行数据
print(df.loc[0])

# 通过位置访问第 1 行数据
print(df.iloc[0])

输出:

# 通过标签访问
Name       Alice
Age           24
City    New York
Name: 0, dtype: object

# 通过位置访问
Name       Alice
Age           24
City    New York
Name: 0, dtype: object

访问指定行和列的交集

# 访问第 1 行,第 2 列的值
print(df.iloc[0, 1])  # 输出:24

4. 修改 DataFrame 的数据

修改某一列的数据

df['Age'] = [25, 28, 23]  # 更新 'Age' 列的数据
print(df)

输出:

      Name  Age         City
0    Alice   25     New York
1      Bob   28  Los Angeles
2  Charlie   23      Chicago

修改某一行的数据

df.loc[1] = ['Bob', 30, 'San Francisco']  # 更新第二行的数据
print(df)

输出:

      Name  Age             City
0    Alice   25         New York
1      Bob   30  San Francisco
2  Charlie   23          Chicago

5. 数据操作

选择特定的行

# 选择 Age 大于 24 的行
print(df[df['Age'] > 24])

输出:

      Name  Age             City
1      Bob   30  San Francisco

排序数据

# 按 Age 列排序
df_sorted = df.sort_values(by='Age', ascending=False)
print(df_sorted)

输出:

      Name  Age             City
1      Bob   30  San Francisco
0    Alice   25         New York
2  Charlie   23          Chicago

删除列

# 删除 'City' 列
df.drop('City', axis=1, inplace=True)
print(df)

输出:

      Name  Age
0    Alice   25
1      Bob   30
2  Charlie   23

删除行

# 删除第 1 行
df.drop(0, axis=0, inplace=True)
print(df)

输出:

      Name  Age
1      Bob   30
2  Charlie   23

6. 聚合与分组

Pandas 提供了强大的分组和聚合功能。比如,可以根据某个列进行分组,然后进行聚合计算。

# 按 Age 列分组并计算每组的最大 Age
df_grouped = df.groupby('Age').max()
print(df_grouped)

输出:

        Name       City
Age
23   Charlie    Chicago
30       Bob  San Francisco

7. 处理缺失数据

Pandas 提供了多种处理缺失数据的方法,例如使用 NaN 表示缺失数据。

import numpy as np

# 插入缺失值
df.loc[0, 'Age'] = np.nan

# 检查缺失数据
print(df.isnull())

# 填充缺失数据
df['Age'].fillna(df['Age'].mean(), inplace=True)
print(df)

总结

DataFrame 是 Pandas 中的核心数据结构,它能够高效地处理和分析大量的二维数据。通过使用 DataFrame,你可以:

  • 创建、修改、访问 数据;
  • 排序、筛选、分组 数据;
  • 处理缺失数据
  • 进行统计计算 等。

Pandas 提供了非常丰富的数据操作功能,它使得数据分析变得更加高效和便捷。如果你对 DataFrame 有更多的需求,可以通过查阅 Pandas 官方文档进一步了解其强大功能。