首先导入 Pandas
在使用 Pandas 之前,请确保你已经安装了它,并在代码中导入它。

# 如果尚未安装,请先运行: pip install pandas import pandas as pd import numpy as np # 有时会用到 numpy 生成随机数据
从字典 创建 DataFrame
这是最常用、最直观的方法之一,字典的键(key)将成为 DataFrame 的列名,字典的值(value)是包含该列数据的列表。
特点:
- 列名由字典的键决定。
- 列的顺序通常与字典键的插入顺序一致(Python 3.7+ 保证)。
- 每个列表的长度(即数据条数)必须相同。
示例 1:基本用法
# 1. 准备数据:字典
data = {
'姓名': ['张三', '李四', '王五', '赵六'],
'年龄': [25, 30, 28, 35],
'城市': ['北京', '上海', '广州', '深圳']
}
# 2. 创建 DataFrame
df = pd.DataFrame(data)
# 3. 查看结果
print(df)
输出:
姓名 年龄 城市
0 张三 25 北京
1 李四 30 上海
2 王五 28 广州
3 赵六 35 深圳
从列表的列表 创建 DataFrame
如果你已经有了一个二维列表(每个子列表代表一行数据),可以直接用它来创建 DataFrame。

特点:
- 列名默认为整数索引(0, 1, 2, ...)。
- 通常需要手动指定
columns参数来设置列名。
示例 2:基本用法
# 1. 准备数据:列表的列表
data_list = [
['张三', 25, '北京'],
['李四', 30, '上海'],
['王五', 28, '广州'],
['赵六', 35, '深圳']
]
# 2. 创建 DataFrame,并指定列名
df = pd.DataFrame(data_list, columns=['姓名', '年龄', '城市'])
# 3. 查看结果
print(df)
输出:
姓名 年龄 城市
0 张三 25 北京
1 李四 30 上海
2 王五 28 广州
3 赵六 35 深圳
从 NumPy 数组 创建 DataFrame
当你的数据是数值型时,从 NumPy 数组创建 DataFrame 非常高效。
示例 3:从随机数组创建
# 1. 准备数据:一个 3x4 的随机数组
data_array = np.random.rand(3, 4)
# 2. 创建 DataFrame,并指定列名和索引
df = pd.DataFrame(
data_array,
columns=['A', 'B', 'C', 'D'],
index=['行1', '行2', '行3']
)
# 3. 查看结果
print(df)
输出:

A B C D
行1 0.123456 0.789012 0.345678 0.901234
行2 0.567890 0.234567 0.678901 0.456789
行3 0.789012 0.345678 0.901234 0.123456
从列表的字典 创建 DataFrame
这是另一种非常常见的结构,尤其是在处理 JSON 数据时,列表中的每个字典代表一行数据。
特点:
- 字典的键会成为列名。
- 如果某一行缺少某个键,对应的值会自动填充为
NaN(Not a Number,表示缺失值)。
示例 4:处理缺失值
# 1. 准备数据:列表的字典
data_list_of_dicts = [
{'姓名': '张三', '年龄': 25, '城市': '北京'},
{'姓名': '李四', '年龄': 30, '城市': '上海'},
{'姓名': '王五', '城市': '广州'}, # 缺少 '年龄' 键
{'年龄': 35, '城市': '深圳', '职业': '工程师'} # 增加了 '职业' 键
]
# 2. 创建 DataFrame
df = pd.DataFrame(data_list_of_dicts)
# 3. 查看结果
print(df)
输出:
姓名 年龄 城市 职业
0 张三 25.0 北京 NaN
1 李四 30.0 上海 NaN
2 王五 NaN 广州 NaN
3 NaN 35.0 深圳 工程师
从输出可以看到,Pandas 自动处理了缺失值和新增的列。
从 CSV 或 Excel 文件 读取
虽然这不完全是“生成”,但在实际工作中,我们经常需要从外部文件加载数据到 DataFrame 中,这是最常见的数据来源。
示例 5:从 CSV 文件读取
假设你有一个名为 data.csv 的文件,内容如下:
姓名,年龄,城市 张三,25,北京 李四,30,上海 王五,28,广州
# 1. 从 CSV 文件读取数据到 DataFrame
df = pd.read_csv('data.csv')
# 2. 查看结果
print(df)
输出:
姓名 年龄 城市
0 张三 25 北京
1 李四 30 上海
2 王五 28 广州
创建一个空的 DataFrame
有时,你可能需要先创建一个空的 DataFrame,然后在循环或条件判断中逐行或逐列地添加数据。
示例 6:创建空 DataFrame 并添加数据
# 1. 创建一个只有列名的空 DataFrame
df_empty = pd.DataFrame(columns=['姓名', '年龄', '城市'])
# 2. 查看初始状态
print("初始空 DataFrame:")
print(df_empty)
print("-" * 20)
# 3. 准备要添加的新数据行
new_row1 = {'姓名': '钱七', '年龄': 40, '城市': '杭州'}
new_row2 = {'姓名': '孙八', '年龄': 22, '城市': '成都'}
# 4. 使用 append 方法添加行 (注意:append 方法在较新版本中已弃用)
# 推荐使用 pd.concat
df = pd.concat([df_empty, pd.DataFrame([new_row1])], ignore_index=True)
df = pd.concat([df, pd.DataFrame([new_row2])], ignore_index=True)
# 5. 查看最终结果
print("添加数据后的 DataFrame:")
print(df)
输出:
初始空 DataFrame:
Empty DataFrame
Columns: [姓名, 年龄, 城市]
Index: []
--------------------
添加数据后的 DataFrame:
姓名 年龄 城市
0 钱七 40 杭州
1 孙八 22 成都
注意:
df.append()方法虽然简单,但在循环中大量使用会导致性能问题,推荐使用pd.concat(),如上例所示。
总结与选择建议
| 方法 | 适用场景 | 特点 |
|---|---|---|
| 从字典 | 已知列名和数据列表,结构清晰。 | 最常用,列名直观。 |
| 从列表的列表 | 数据已经是二维列表形式。 | 需要手动指定列名。 |
| 从 NumPy 数组 | 处理纯数值型、大规模数据。 | 高效,常用于科学计算。 |
| 从列表的字典 | 数据结构类似 JSON,每行是一个对象。 | 能灵活处理缺失值和新列。 |
| 从文件读取 | 分析真实世界的数据(CSV, Excel等)。 | 实际工作中的主要数据来源。 |
| 创建空 DataFrame | 动态、逐步构建 DataFrame。 | 需要后续填充数据。 |
对于初学者和大多数日常任务,从字典创建 是最需要掌握的方法,当你开始处理更复杂的数据源时,从列表的字典创建 和 从文件读取 会变得非常重要。
