在 Python 中,定义(创建)DataFrame 主要使用 pandas 库。pandas 是一个强大的数据分析工具,而 DataFrame 是其核心数据结构,类似于一个二维表格或电子表格。

以下是几种定义 DataFrame 的常用方法,从最基本到更复杂的场景。
准备工作:首先导入 pandas
在使用 pandas 之前,你需要先导入它,我们使用 pd 作为其别名。
import pandas as pd
使用字典创建 (最常用)
这是最直观、最常用的方法,字典的 键 将成为 DataFrame 的 列名,字典的 值(列表、数组等)将成为对应列的数据。
示例 1:基本用法
import pandas as pd
# 1. 准备数据:使用字典
data = {
'姓名': ['张三', '李四', '王五', '赵六'],
'年龄': [25, 30, 28, 35],
'城市': ['北京', '上海', '广州', '深圳']
}
# 2. 创建 DataFrame
df = pd.DataFrame(data)
# 3. 打印 DataFrame
print(df)
输出:

姓名 年龄 城市
0 张三 25 北京
1 李四 30 上海
2 王五 28 广州
3 赵六 35 深圳
示例 2:指定行索引 (index)
你可以自定义每一行的标签,而不仅仅是默认的 0, 1, 2...
import pandas as pd
data = {
'姓名': ['张三', '李四', '王五', '赵六'],
'年龄': [25, 30, 28, 35],
'城市': ['北京', '上海', '广州', '深圳']
}
# 使用 index 参数指定行索引
df = pd.DataFrame(data, index=['ID001', 'ID002', 'ID003', 'ID004'])
print(df)
输出:
姓名 年龄 城市
ID001 张三 25 北京
ID002 李四 30 上海
ID003 王五 28 广州
ID004 赵六 35 深圳
使用列表的列表创建
如果你的数据是按行组织的,可以使用列表的列表,你需要额外指定列名。
import pandas as pd
# 1. 准备数据:一个包含多个列表的列表(每个子列表代表一行)
data_rows = [
['张三', 25, '北京'],
['李四', 30, '上海'],
['王五', 28, '广州'],
['赵六', 35, '深圳']
]
# 2. 指定列名
columns = ['姓名', '年龄', '城市']
# 3. 创建 DataFrame
df = pd.DataFrame(data_rows, columns=columns)
print(df)
输出:
姓名 年龄 城市
0 张三 25 北京
1 李四 30 上海
2 王五 28 广州
3 赵六 35 深圳
使用 NumPy 数组创建
如果你的数据是数值型的,并且已经存储在 NumPy 数组中,可以直接创建 DataFrame。
import pandas as pd
import numpy as np
# 1. 准备数据:一个 NumPy 数组
data_array = np.array([
[1, 'A', 100],
[2, 'B', 200],
[3, 'C', 300]
])
# 2. 指定列名
columns = ['ID', 'Grade', 'Score']
# 3. 创建 DataFrame
df = pd.DataFrame(data_array, columns=columns)
print(df)
输出:
ID Grade Score
0 1 A 100
1 2 B 200
2 3 C 300
从文件创建 (非常实用)
在实际应用中,DataFrame 通常不是手动创建的,而是从外部文件(如 CSV, Excel)读取而来。
从 CSV 文件创建
假设你有一个名为 data.csv 的文件,内容如下:
姓名,年龄,城市 张三,25,北京 李四,30,上海 王五,28,广州
你可以使用 pd.read_csv() 来创建 DataFrame:
import pandas as pd
# 从 CSV 文件读取数据并创建 DataFrame
df_from_csv = pd.read_csv('data.csv')
print(df_from_csv)
从 Excel 文件创建
假设你有一个名为 data.xlsx 的 Excel 文件:
import pandas as pd
# 从 Excel 文件读取数据并创建 DataFrame
# 需要安装 openpyxl 或 xlrd 库: pip install openpyxl
df_from_excel = pd.read_excel('data.xlsx')
print(df_from_excel)
创建一个空的 DataFrame
有时你可能需要先创建一个空的 DataFrame,然后在循环或条件判断中逐行添加数据。
import pandas as pd # 创建一个空的 DataFrame,并指定列名 empty_df = pd.DataFrame(columns=['姓名', '年龄', '城市']) print(empty_df)
输出:
Empty DataFrame
Columns: [姓名, 年龄, 城市]
Index: []
| 创建方式 | 适用场景 | 示例代码 |
|---|---|---|
| 字典 | 数据按列组织,最常用 | pd.DataFrame({'A': [1, 2]}) |
| 列表的列表 | 数据按行组织 | pd.DataFrame([[1, 2]], columns=['A', 'B']) |
| NumPy 数组 | 数据为数值型,来自 NumPy | pd.DataFrame(np.array([[1, 2]])) |
| 文件 | 从 CSV, Excel 等外部数据源加载 | pd.read_csv('file.csv') |
| 空 DataFrame | 初始化一个空表,用于后续填充 | pd.DataFrame(columns=['A', 'B']) |
对于初学者而言,掌握使用字典创建 DataFrame 是最重要的第一步。
