在 Python 中,最常用的创建 DataFrame 的方式是使用 pandas 库,DataFrame 是一个二维的、大小可变、且具有标签轴(行和列)的数据结构,类似于 Excel 表格或 SQL 表。

下面我将为你详细介绍几种创建 DataFrame 的常用方法,从最基础到更复杂的场景。
第一步:安装 Pandas
如果你的环境中还没有安装 pandas,请先打开终端或命令提示符,运行以下命令:
pip install pandas
从字典创建(最常用)
这是最直观、最常用的方法之一,字典的键将作为 DataFrame 的列名,字典的值(通常是列表)将作为该列的数据。
示例:

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 深圳
从列表的列表创建
如果你有一系列等长的列表,每个内部列表代表一行数据,你可以用它们来创建 DataFrame。
示例:
import pandas as pd
# 1. 准备数据:列表的列表
data = [
['张三', 25, '北京'],
['李四', 30, '上海'],
['王五', 28, '广州'],
['赵六', 35, '深圳']
]
# 2. 创建 DataFrame,并指定列名
# columns 参数用于指定列名
df = pd.DataFrame(data, columns=['姓名', '年龄', '城市'])
# 3. 打印 DataFrame
print(df)
输出:

姓名 年龄 城市
0 张三 25 北京
1 李四 30 上海
2 王五 28 广州
3 赵六 35 深圳
从列表的字典创建
这是一种混合方式,外层是列表,内层是字典,每个字典代表一行数据,字典的键成为列名,这种方法非常灵活,特别是当数据行不完整时。
示例:
import pandas as pd
# 1. 准备数据:列表的字典
data = [
{'姓名': '张三', '年龄': 25, '城市': '北京'},
{'姓名': '李四', '年龄': 30}, # 缺少 '城市' 信息
{'姓名': '王五', '年龄': 28, '城市': '广州'},
{'城市': '深圳', '年龄': 35, '姓名': '赵六'} # 键的顺序不影响
]
# 2. 创建 DataFrame
# pandas 会自动处理缺失的数据,填充为 NaN (Not a Number)
df = pd.DataFrame(data)
# 3. 打印 DataFrame
print(df)
输出:
姓名 年龄 城市
0 张三 25.0 北京
1 李四 30.0 NaN
2 王五 28.0 广州
3 赵六 35.0 深圳
注意:李四的城市列自动填充了NaN。
从 NumPy 数组创建
如果你的数据已经是 NumPy 数组格式,可以直接将其转换为 DataFrame。
示例:
import pandas as pd
import numpy as np
# 1. 准备数据:NumPy 数组
data = np.array([
[1, 'A', 100],
[2, 'B', 150],
[3, 'C', 120]
])
# 2. 创建 DataFrame,并指定列名
df = pd.DataFrame(data, columns=['ID', '类别', '分数'])
# 3. 打印 DataFrame
print(df)
输出:
ID 类别 分数
0 1 A 100
1 2 B 150
2 3 C 120
从文件创建(实际应用中非常普遍)
在实际工作中,数据通常存储在外部文件中,如 CSV、Excel 等,pandas 提供了非常方便的读取函数。
从 CSV 文件创建
假设你有一个名为 data.csv 的文件,内容如下:
姓名,年龄,城市 张三,25,北京 李四,30,上海 王五,28,广州
使用 pd.read_csv() 函数:
import pandas as pd
# 从 CSV 文件创建 DataFrame
df = pd.read_csv('data.csv')
# 打印 DataFrame
print(df)
从 Excel 文件创建
假设你有一个名为 data.xlsx 的 Excel 文件。
使用 pd.read_excel() 函数(需要安装 openpyxl 库:pip install openpyxl):
import pandas as pd
# 从 Excel 文件创建 DataFrame
# sheet_name='Sheet1' 指定要读取的工作表名
df = pd.read_excel('data.xlsx', sheet_name='Sheet1')
# 打印 DataFrame
print(df)
创建 DataFrame 后的常用操作
创建 DataFrame 后,你可能需要查看或操作它。
import pandas as pd
data = {'姓名': ['张三', '李四'], '年龄': [25, 30]}
df = pd.DataFrame(data)
# 1. 查看前几行数据 (默认5行)
print("前两行数据:")
print(df.head(2))
# 2. 查看数据的基本信息(列名、非空值数量、数据类型等)
print("\n数据信息:")
df.info()
# 3. 查看数据的描述性统计(仅针对数值列)
print("\n描述性统计:")
print(df.describe())
# 4. 获取列名
print("\n列名:")
print(df.columns)
# 5. 获取索引
print("\n索引:")
print(df.index)
| 创建方式 | 适用场景 | 示例代码 |
|---|---|---|
| 从字典 | 数据结构清晰,列名明确 | pd.DataFrame({'A': [1, 2]}) |
| 从列表的列表 | 数据行结构规整 | pd.DataFrame([[1, 2], [3, 4]], columns=['A', 'B']) |
| 从列表的字典 | 数据行不完整或结构灵活 | pd.DataFrame([{'A': 1}, {'B': 2}]) |
| 从 NumPy 数组 | 数据已为数值型数组 | pd.DataFrame(np.array([[1, 2]])) |
| 从文件 | 实际应用最广,读取外部数据 | pd.read_csv('file.csv') |
对于初学者来说,从字典创建和从文件创建 是必须掌握的两种核心方法。
