Pandas 库之 DataFrame

Pandas 是一个强大的 Python 数据分析库,它提供了高效的数据结构和数据分析工具。DataFrame 是 Pandas 中最重要的数据结构之一,广泛用于存储和处理结构化数据。DataFrame 是一个二维的表格型数据结构,类似于数据库中的表、Excel 工作表或 SQL 查询结果。

1. DataFrame 简介

DataFrame 是一个由行和列组成的表格数据结构,类似于电子表格或 SQL 表。每列可以包含不同类型的数据(整数、浮点数、字符串等)。DataFrame 是 Pandas 中最常用的数据结构之一,广泛应用于数据清洗、数据转换、数据分析和机器学习等领域。

2. 创建 DataFrame

2.1 从字典创建 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

2.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

2.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

2.4 从 CSV 文件加载 DataFrame

你可以直接从 CSV 文件加载数据到 DataFrame

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

3. DataFrame 操作

3.1 查看数据

  • head():查看前 n 行数据,默认是 5 行。
  • tail():查看后 n 行数据,默认是 5 行。
print(df.head())  # 查看前 5 行
print(df.tail(3))  # 查看最后 3 行

3.2 访问列

可以通过列名访问 DataFrame 的列数据。

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

也可以使用 df.column 访问列。

print(df.Name)

3.3 访问行

使用 loc[] 和 iloc[] 可以访问行:

  • loc[]:按标签访问。
  • iloc[]:按位置访问。
print(df.loc[0])  # 按标签访问第一行
print(df.iloc[1])  # 按位置访问第二行

3.4 选择特定的行和列

通过 loc[] 或 iloc[] 可以选择特定的行和列。

# 选择第 1 行,第 2 列
print(df.iloc[0, 1])

# 选择 Name 列,Age 列的前两行
print(df.loc[:1, ['Name', 'Age']])

3.5 修改数据

可以直接修改 DataFrame 中的值。

df.loc[0, 'Age'] = 26  # 修改第一行的 Age 值
print(df)

3.6 添加列

使用 DataFrame 中的列名,可以添加新列。

df['Country'] = ['USA', 'USA', 'USA']
print(df)

3.7 删除列

可以使用 drop() 删除列。

df = df.drop('Country', axis=1)  # axis=1 表示删除列
print(df)

3.8 删除行

可以使用 drop() 删除指定行。

df = df.drop(0, axis=0)  # 删除第一行
print(df)

3.9 排序数据

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

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

3.10 处理缺失值

可以使用 fillna() 填充缺失值,或者使用 dropna() 删除含有缺失值的行。

df['Age'] = df['Age'].fillna(df['Age'].mean())  # 使用均值填充缺失值
df = df.dropna()  # 删除含有缺失值的行

3.11 条件过滤

使用布尔索引对 DataFrame 进行条件过滤。

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

4. 数据聚合

4.1 groupby() 分组操作

groupby() 用于根据某些列对数据进行分组,并对每个分组执行聚合操作。

df = pd.DataFrame({
    'City': ['New York', 'Los Angeles', 'New York', 'Chicago'],
    'Age': [25, 30, 35, 40],
    'Salary': [100000, 120000, 130000, 110000]
})

grouped = df.groupby('City')
print(grouped['Salary'].mean())  # 根据 City 分组,计算每个城市的平均工资

4.2 agg() 聚合函数

使用 agg() 可以同时对多个列应用不同的聚合函数。

agg_result = df.groupby('City').agg({
    'Age': 'mean',  # 计算每个城市的平均年龄
    'Salary': 'sum'  # 计算每个城市的总工资
})
print(agg_result)

5. 常用的 DataFrame 方法

  • df.shape:返回 DataFrame 的形状(行数和列数)。
  • df.info():显示 DataFrame 的简要信息(列名、数据类型、非空值数量等)。
  • df.describe():返回数据的统计摘要,包括均值、标准差、最小值、最大值等。
  • df.to_csv():将 DataFrame 导出为 CSV 文件。
  • df.to_excel():将 DataFrame 导出为 Excel 文件。

6. 总结

Pandas 中的 DataFrame 是一个功能强大的数据结构,用于存储和处理表格数据。通过 DataFrame,你可以方便地进行数据清洗、分析、汇总、统计等操作,尤其在数据科学和机器学习中,DataFrame 是不可或缺的重要工具。