杰瑞科技汇

Python新建DataFrame的几种方法?

在 Python 中,最常用和最强大的库来创建 DataFrame 的是 Pandas,下面我将为你详细介绍如何使用 Pandas 从不同来源创建 DataFrame,并包含丰富的示例。

Python新建DataFrame的几种方法?-图1
(图片来源网络,侵删)

准备工作:安装 Pandas

如果你的环境中还没有安装 Pandas,请先打开终端或命令行工具,运行以下命令:

pip install pandas

安装完成后,在你的 Python 脚本中导入它:

import pandas as pd
# 导入numpy,因为它经常和pandas一起使用,尤其是在创建示例数据时
import numpy as np

约定俗成:我们通常使用 pd 作为 pandas 的别名,这样代码会更简洁。


从字典 创建 DataFrame

这是最常见和直观的方式之一,字典的键会成为 DataFrame 的列名,字典的值(通常是列表或数组)会成为对应列的数据。

Python新建DataFrame的几种方法?-图2
(图片来源网络,侵删)

基本语法: pd.DataFrame(data, columns=..., index=...)

  • data: 包含数据的字典。
  • columns: (可选) 指定列名的列表,可以用来重新排序或筛选列。
  • index: (可选) 指定行索引的列表。

示例 2.1: 最简单的字典创建

# 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.2: 指定列和索引

# 使用示例 2.1 的数据
data = {
    '姓名': ['张三', '李四', '王五', '赵六'],
    '年龄': [25, 30, 28, 35],
    '城市': ['北京', '上海', '广州', '深圳']
}
# 创建时指定列的顺序和行索引
df_custom = pd.DataFrame(
    data,
    columns=['姓名', '城市', '年龄'],  # 指定列顺序
    index=['ID001', 'ID002', 'ID003', 'ID004'] # 指定行索引
)
print(df_custom)

输出:

      姓名  城市  年龄
ID001  张三  北京  25
ID002  李四  上海  30
ID003  王五  广州  28
ID004  赵六  深圳  35

从列表的列表 创建 DataFrame

当你有一个类似表格的二维列表结构时,可以使用这种方法。

Python新建DataFrame的几种方法?-图3
(图片来源网络,侵删)
  • 外层列表代表每一行。
  • 内层列表代表每一行的数据。
# 1. 准备数据:一个二维列表
data_list = [
    ['张三', 25, '北京'],
    ['李四', 30, '上海'],
    ['王五', 28, '广州']
]
# 2. 创建 DataFrame (需要指定列名)
df_from_list = pd.DataFrame(data_list, columns=['姓名', '年龄', '城市'])
print(df_from_list)

输出:

  姓名  年龄  城市
0  张三  25  北京
1  李四  30  上海
2  王五  28  广州

从 NumPy 数组 创建 DataFrame

NumPy 是 Pandas 的底层依赖,两者结合非常紧密。

# 1. 准备数据:一个二维 NumPy 数组
data_array = np.array([
    [1, 'A', 100],
    [2, 'B', 200],
    [3, 'C', 300]
])
# 2. 创建 DataFrame
df_from_array = pd.DataFrame(data_array, columns=['ID', 'Grade', 'Score'])
print(df_from_array)

输出:

  ID Grade  Score
0  1     A    100
1  2     B    200
2  3     C    300

从列表的字典 创建 DataFrame

这种方式与从字典创建类似,但结构略有不同,数据是按行组织的。

  • 外层列表代表每一行。
  • 内层字典的键是列名,值是对应单元格的数据。
# 1. 准备数据:一个字典的列表
data_list_of_dicts = [
    {'姓名': '张三', '年龄': 25, '城市': '北京'},
    {'姓名': '李四', '年龄': 30, '城市': '上海'},
    {'姓名': '王五', '年龄': 28, '城市': '广州', '职业': '工程师'} # 注意这一行多了一个字段
]
# 2. 创建 DataFrame
# Pandas 会自动处理缺失值,用 NaN (Not a Number) 填充
df_from_dict_list = pd.DataFrame(data_list_of_dicts)
print(df_from_dict_list)

输出:

  姓名  年龄  城市    职业
0  张三  25  北京   NaN
1  李四  30  上海   NaN
2  王五  28  广州  工程师

注意:当某一行缺少某个字段时,Pandas 会自动用 NaN (代表缺失值) 填充。


创建一个空的 DataFrame

你可能想先创建一个空的 DataFrame,之后再逐步添加数据。

# 创建一个只有列名的空 DataFrame
empty_df = pd.DataFrame(columns=['姓名', '年龄', '城市'])
print(empty_df)

输出:

Empty DataFrame
Columns: [姓名, 年龄, 城市]
Index: []

从外部文件 创建 DataFrame (非常重要)

在实际应用中,DataFrame 最常见的来源是外部文件,如 CSV、Excel 等。

从 CSV 文件创建

假设你有一个名为 data.csv 的文件,内容如下:

姓名,年龄,城市
张三,25,北京
李四,30,上海
王五,28,广州

使用 pd.read_csv() 函数:

# 如果文件在当前目录下
df_from_csv = pd.read_csv('data.csv')
# 如果文件有路径,请提供完整路径,
# df_from_csv = pd.read_csv('C:/Users/YourUser/Documents/data.csv')
print(df_from_csv)

输出:

  姓名  年龄  城市
0  张三  25  北京
1  李四  30  上海
2  王五  28  广州

从 Excel 文件创建

假设你有一个名为 data.xlsx 的 Excel 文件,第一个工作表名为 "Sheet1"。

使用 pd.read_excel() 函数,你可能需要先安装 openpyxlxlrd 库:pip install openpyxl

# 读取 Excel 文件
df_from_excel = pd.read_excel('data.xlsx', sheet_name='Sheet1')
print(df_from_excel)
数据源 方法 适用场景
字典 pd.DataFrame(dict) 最常用,列名和数据清晰定义。
列表的列表 pd.DataFrame(list_of_lists, columns=[...]) 数据已按行组织,类似表格。
NumPy 数组 pd.DataFrame(array, columns=[...]) 处理数值型数据,与科学计算库结合紧密。
列表的字典 pd.DataFrame(list_of_dicts) 数据按行组织,每行是一个字典,列名不统一。
空 DataFrame pd.DataFrame(columns=[...]) 先定义结构,再动态填充数据。
CSV 文件 pd.read_csv('file.csv') 从逗号分隔的文本文件加载数据。
Excel 文件 pd.read_excel('file.xlsx') 从 Microsoft Excel 文件加载数据。

对于初学者来说,从字典创建 DataFrame 是必须掌握的核心技能,随着你处理的数据越来越复杂,从文件读取 会成为你日常工作流中最重要的部分。

分享:
扫描分享到社交APP
上一篇
下一篇