当前位置:首页 > Python > 正文

Python中创建DataFrame的四种方法详解 - Pandas数据处理教程

Python中创建DataFrame的四种方法

全面指南:从列表、字典、NumPy数组和CSV文件创建Pandas DataFrame

本教程详细介绍了在Python中使用Pandas库创建DataFrame的四种主要方法,包含实际代码示例、输出结果和适用场景分析。

从列表创建DataFrame

这是最基础的方法,使用列表或列表的列表来创建DataFrame。每个内部列表代表一行数据。

基本语法:

import pandas as pd

data = [['Alice', 25], ['Bob', 30], ['Charlie', 35]]
df = pd.DataFrame(data, columns=['Name', 'Age'])

代码示例:

# 导入pandas库
import pandas as pd

# 创建数据列表
employees = [
    ['John', 'Marketing', 45000],
    ['Sarah', 'Engineering', 72000],
    ['Mike', 'Sales', 58000],
    ['Emma', 'HR', 51000]
]

# 创建DataFrame
df = pd.DataFrame(employees, 
                 columns=['Name', 'Department', 'Salary'])

# 显示前3行
print(df.head(3))

输出结果:

    Name  Department  Salary
0   John   Marketing   45000
1  Sarah  Engineering  72000
2   Mike       Sales   58000

优点

  • 简单直观,适合少量数据
  • 不需要预定义数据结构
  • 易于理解,适合初学者

缺点

  • 不适合大型数据集
  • 缺乏列数据类型控制
  • 代码可读性随数据量增加而降低

从字典创建DataFrame

最常用的方法,字典的键成为列名,值成为列数据。这种方式更符合DataFrame的列式结构。

基本语法:

data = {'Name': ['Alice', 'Bob', 'Charlie'],
        'Age': [25, 30, 35]}
df = pd.DataFrame(data)

代码示例:

# 创建字典数据
product_data = {
    'ProductID': [101, 102, 103, 104],
    'ProductName': ['Laptop', 'Mouse', 'Keyboard', 'Monitor'],
    'Price': [1200, 25, 45, 300],
    'InStock': [True, True, False, True]
}

# 从字典创建DataFrame
df = pd.DataFrame(product_data)

# 显示整个DataFrame
print(df)

输出结果:

   ProductID ProductName  Price  InStock
0        101      Laptop   1200     True
1        102       Mouse     25     True
2        103    Keyboard     45    False
3        104     Monitor    300     True

优点

  • 结构清晰,列名与数据明确关联
  • 支持不同长度的列(自动填充NaN)
  • 易于添加/删除列

缺点

  • 字典值必须是列表或数组
  • 创建后行索引默认从0开始
  • 不直接支持行方向的构造

从NumPy数组创建

适合数值数据处理,特别是当数据已存在于NumPy数组中时,可以实现高效转换。

基本语法:

import numpy as np
import pandas as pd

array = np.array([[1, 2], [3, 4]])
df = pd.DataFrame(array, columns=['A', 'B'])

代码示例:

import numpy as np

# 创建NumPy数组
sensor_data = np.array([
    [1, 23.4, 0.55],
    [2, 24.1, 0.62],
    [3, 22.8, 0.58],
    [4, 25.3, 0.67]
])

# 从NumPy数组创建DataFrame
df = pd.DataFrame(sensor_data, 
                 columns=['SensorID', 'Temperature', 'Humidity'])

# 显示DataFrame信息
print(df.info())
print("\n描述性统计:")
print(df.describe())

输出结果:

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 4 entries, 0 to 3
Data columns (total 3 columns):
 #   Column       Non-Null Count  Dtype  
---  ------       --------------  -----  
 0   SensorID     4 non-null      float64
 1   Temperature  4 non-null      float64
 2   Humidity     4 non-null      float64
dtypes: float64(3)
memory usage: 224.0 bytes
None

描述性统计:
       SensorID  Temperature   Humidity
count       4.0     4.000000   4.000000
mean        2.5    23.900000   0.605000
std         1.3     1.076388   0.051234
min         1.0    22.800000   0.550000
25%         1.8    23.325000   0.572500
50%         2.5    23.750000   0.600000
75%         3.2    24.400000   0.642500
max         4.0    25.300000   0.670000

优点

  • 高性能,适合大型数值数据集
  • 无缝集成NumPy的数学运算
  • 内存效率高

缺点

  • 主要适用于数值数据
  • 需要额外导入NumPy库
  • 列名需要单独指定

从CSV文件创建

实际工作中最常用的方法,适合从外部文件加载数据。Pandas提供了强大的CSV读取功能。

基本语法:

df = pd.read_csv('filename.csv')

代码示例:

# 从CSV文件读取数据
# 假设有一个名为'sales_data.csv'的文件
# 内容如下:
# Date,Product,Quantity,Revenue
# 2023-01-01,A,15,450
# 2023-01-01,B,8,320
# 2023-01-02,A,12,360
# 2023-01-02,B,10,400

df = pd.read_csv('sales_data.csv', parse_dates=['Date'])

# 显示前2行
print("前2行数据:")
print(df.head(2))

# 按日期分组计算总收入
daily_revenue = df.groupby('Date')['Revenue'].sum()
print("\n每日总收入:")
print(daily_revenue)

输出结果:

前2行数据:
        Date Product  Quantity  Revenue
0 2023-01-01       A        15      450
1 2023-01-01       B         8      320

每日总收入:
Date
2023-01-01    770
2023-01-02    760
Name: Revenue, dtype: int64

优点

  • 适合处理真实世界的大型数据集
  • 支持各种数据格式选项(分隔符、编码等)
  • 内存映射支持处理超过内存大小的文件

缺点

  • 需要数据文件存在于文件系统
  • 需要处理文件路径和格式问题
  • 错误处理更复杂(如编码问题)

四种方法比较

以下表格总结了四种创建DataFrame方法的主要特点和使用场景:

方法 适用场景 性能 灵活性 数据类型支持
从列表创建 小规模数据、简单示例 基本类型
从字典创建 中等规模数据、结构化数据 ⭐⭐ ⭐⭐⭐ 所有Pandas支持的类型
从NumPy数组创建 数值计算、科学计算 ⭐⭐⭐⭐ ⭐⭐ 主要是数值类型
从CSV文件创建 真实世界数据、大数据集 ⭐⭐⭐ ⭐⭐⭐⭐ 所有类型(需要正确解析)

使用建议:

  • 对于学习和快速原型,推荐使用字典方法
  • 处理数值数据时,考虑使用NumPy数组方法
  • 在真实项目中,CSV文件方法是最常见的选择
  • 小型临时数据集可使用列表方法

总结

Python的Pandas库提供了多种灵活的方法来创建DataFrame,每种方法都有其特定的使用场景和优势。掌握这些方法可以帮助你:

  • 根据数据来源选择最合适的创建方式
  • 提高数据处理的效率和性能
  • 编写更清晰、更易维护的数据处理代码
  • 在不同场景间灵活切换数据处理方法

© 2023 Python数据处理教程 | 使用Pandas创建DataFrame的四种方法详解

发表评论