Pandas 数据结构详解:2.2 DataFrame的创建与操作

Pandas是Python中用于数据分析的强大库,其中最重要的数据结构之一就是DataFrame。DataFrame是一个二维的、大小可变的、带标签的数据结构,类似于电子表格或SQL表格。它可以存储不同类型的数据(如整数、浮点数、字符串等),并且支持多种操作。本文将详细介绍DataFrame的创建与操作,包括优缺点和注意事项。

1. DataFrame的创建

1.1 从字典创建DataFrame

最常见的创建DataFrame的方法之一是通过字典。字典的键将成为DataFrame的列名,而字典的值将成为列的数据。

import pandas as pd

data = {
    'Name': ['Alice', 'Bob', 'Charlie'],
    'Age': [25, 30, 35],
    'City': ['New York', 'Los Angeles', 'Chicago']
}

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

输出:

      Name  Age         City
0    Alice   25     New York
1      Bob   30  Los Angeles
2  Charlie   35      Chicago

优点:

  • 简单直观,易于理解。
  • 可以直接从已有的数据结构(如字典)创建DataFrame。

缺点:

  • 对于大型数据集,字典的创建可能会占用较多内存。

注意事项:

  • 确保字典的每个值都是相同长度的列表,否则会引发错误。

1.2 从列表创建DataFrame

可以通过嵌套列表创建DataFrame,其中每个子列表代表一行数据。

data = [
    ['Alice', 25, 'New York'],
    ['Bob', 30, 'Los Angeles'],
    ['Charlie', 35, 'Chicago']
]

df = pd.DataFrame(data, columns=['Name', 'Age', 'City'])
print(df)

输出:

      Name  Age         City
0    Alice   25     New York
1      Bob   30  Los Angeles
2  Charlie   35      Chicago

优点:

  • 适合快速创建小型DataFrame。
  • 结构简单,易于理解。

缺点:

  • 不如字典灵活,列名需要单独指定。

注意事项:

  • 确保每个子列表的长度一致,以避免数据不对齐。

1.3 从NumPy数组创建DataFrame

如果你有一个NumPy数组,可以直接将其转换为DataFrame。

import numpy as np

data = np.array([
    ['Alice', 25, 'New York'],
    ['Bob', 30, 'Los Angeles'],
    ['Charlie', 35, 'Chicago']
])

df = pd.DataFrame(data, columns=['Name', 'Age', 'City'])
print(df)

输出:

      Name Age         City
0    Alice  25     New York
1      Bob  30  Los Angeles
2  Charlie  35      Chicago

优点:

  • 高效,适合处理大量数值数据。
  • 可以利用NumPy的强大功能进行数据处理。

缺点:

  • 数据类型不够灵活,所有数据会被视为字符串。

注意事项:

  • 确保NumPy数组的维度与列名的数量一致。

1.4 从CSV文件创建DataFrame

Pandas提供了从CSV文件直接读取数据的功能,这对于处理大型数据集非常有用。

df = pd.read_csv('data.csv')
print(df.head())

优点:

  • 方便快捷,适合处理外部数据源。
  • 支持多种文件格式(如CSV、Excel等)。

缺点:

  • 需要确保文件路径正确,且文件格式符合要求。

注意事项:

  • 可以使用pd.read_csv()的参数来处理缺失值、指定数据类型等。

2. DataFrame的基本操作

2.1 查看数据

使用head()tail()方法可以快速查看DataFrame的前几行或后几行数据。

print(df.head(2))  # 查看前两行
print(df.tail(2))  # 查看后两行

2.2 选择列

可以通过列名选择特定的列。

print(df['Name'])  # 选择Name列

2.3 选择行

使用ilocloc方法可以选择特定的行。

print(df.iloc[0])  # 选择第一行
print(df.loc[1])   # 选择索引为1的行

2.4 过滤数据

可以根据条件过滤数据。

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

2.5 添加新列

可以通过赋值的方式添加新列。

df['Salary'] = [70000, 80000, 90000]
print(df)

2.6 删除列

使用drop()方法可以删除指定的列。

df = df.drop('Salary', axis=1)
print(df)

2.7 数据统计

Pandas提供了多种统计方法,如mean()sum()count()等。

print(df['Age'].mean())  # 计算年龄的平均值

2.8 数据排序

可以使用sort_values()方法对数据进行排序。

df = df.sort_values(by='Age', ascending=False)
print(df)

3. 总结

DataFrame是Pandas中最重要的数据结构之一,提供了灵活的数据存储和操作方式。通过不同的方法创建DataFrame,可以根据具体需求选择最合适的方式。掌握DataFrame的基本操作是数据分析的基础,能够帮助我们高效地处理和分析数据。

在使用DataFrame时,注意数据的类型和结构,合理选择创建和操作的方法,以提高代码的可读性和执行效率。Pandas的强大功能使得数据分析变得更加简单和高效,是数据科学家和分析师不可或缺的工具。