Pandas 中文手册

4.2 DataFrame的创建方法(覆盖常见场景)

Pandas DataFrame创建方法完整教程 | 新手快速入门

Pandas 中文手册

本章节详细介绍了Pandas中DataFrame的多种创建方法,包括从列表、元组、字典、NumPy数组、Series字典以及外部数据源,附带简单易懂的代码示例,适合初学者学习。

推荐工具
PyCharm专业版开发必备

功能强大的Python IDE,提供智能代码补全、代码分析、调试和测试工具,提高Python开发效率。特别适合处理列表等数据结构的开发工作。

了解更多

DataFrame的创建方法完全指南

在本章中,我们将详细介绍Pandas中DataFrame的多种创建方法,帮助你快速上手数据处理。DataFrame是Pandas的核心数据结构,类似于一个二维表格,广泛应用于数据分析和数据科学中。掌握其创建方式是学习Pandas的第一步,无论你是新手还是有经验的开发者,都能从中受益。

从列表或元组创建DataFrame

列表或元组是Python中最基本的数据结构,我们可以使用它们来创建DataFrame。这种方法适用于数据已经以列表或元组形式存在的情况。

import pandas as pd

# 从列表创建DataFrame
# 数据是一个嵌套列表,每行是一个列表元素
data_list = [['Alice', 25, '北京'],
             ['Bob', 30, '上海'],
             ['Charlie', 35, '广州']]
df_list = pd.DataFrame(data_list, columns=['姓名', '年龄', '城市'])
print(df_list)

# 从元组创建DataFrame,方法与列表类似
data_tuple = (('Alice', 25), ('Bob', 30), ('Charlie', 35))
df_tuple = pd.DataFrame(data_tuple, columns=['姓名', '年龄'])
print(df_tuple)

解释:在这个示例中,我们首先导入pandas库。然后,创建一个嵌套列表data_list,每行代表一个人的信息。使用pd.DataFrame()函数,将数据转换为DataFrame,并通过columns参数指定列名。元组方式类似,但元组不可变,创建时更适用于固定数据场景。

从字典创建DataFrame

字典的键可以作为列名,值作为该列的数据列表,这是创建DataFrame非常直观和常见的方法。

# 从字典创建DataFrame,键为列名,值为列表数据
data_dict = {
    '姓名': ['Alice', 'Bob', 'Charlie'],
    '年龄': [25, 30, 35],
    '城市': ['北京', '上海', '广州']
}
df_dict = pd.DataFrame(data_dict)
print(df_dict)

# 字典值可以是单个常量,会被广播到所有行
simple_dict = {'列1': [1, 2, 3], '列2': '常量值'}
df_simple = pd.DataFrame(simple_dict)
print(df_simple)

解释:这里,字典data_dict的每个键对应一个列名,值是该列的数据列表。pd.DataFrame()会自动处理,创建一个规范的DataFrame。如果值不是列表而是单个元素,如simple_dict,它会自动广播到所有行,适合创建具有重复值的列。

从NumPy数组创建DataFrame

NumPy数组是Python中进行数值计算的常用工具,与Pandas集成良好。你可以从NumPy数组创建DataFrame,并指定行索引和列名。

import numpy as np

# 创建一个NumPy数组
np_array = np.array([[1, 2, 3],
                     [4, 5, 6],
                     [7, 8, 9]])

# 从NumPy数组创建DataFrame,指定行索引和列名
df_np = pd.DataFrame(np_array, 
                     index=['行1', '行2', '行3'], 
                     columns=['列A', '列B', '列C'])
print(df_np)

解释:首先,我们导入numpy库并创建一个二维数组np_array。然后,使用pd.DataFrame()函数将数组转换为DataFrame,通过index参数设置行索引名称,columns参数设置列名。这对于数值数据特别有用,因为NumPy数组在性能上更优。

从Series字典创建DataFrame

Pandas的Series对象是带有标签的一维数组,可以从Series字典创建DataFrame,字典的键是列名,值是Series对象。

# 创建多个Series对象
s1 = pd.Series([1, 2, 3], name='列A')
s2 = pd.Series([4, 5, 6], name='列B')
s3 = pd.Series([7, 8, 9], name='列C')

# 从Series字典创建DataFrame
series_dict = {'A': s1, 'B': s2, 'C': s3}
df_series = pd.DataFrame(series_dict)
print(df_series)

解释:在这个例子中,我们创建了三个Series对象s1s2s3,每个都有名称。然后,将它们放入字典series_dict中,键'A''B''C'成为列名,对应的Series值成为列数据。这种方法适合需要单独操作列的场景。

创建空DataFrame与指定数据类型的DataFrame

有时你可能需要先创建一个空的DataFrame,或者明确指定各列的数据类型,这在数据初始化和预处理中很常见。

# 创建一个完全空的DataFrame
empty_df = pd.DataFrame()
print(empty_df)

# 创建带列名的空DataFrame
empty_with_cols = pd.DataFrame(columns=['姓名', '年龄', '城市'])
print(empty_with_cols)

# 创建指定数据类型的DataFrame
dtypes_df = pd.DataFrame({
    '整数列': pd.Series([], dtype='int'),
    '浮点数列': pd.Series([], dtype='float'),
    '字符串列': pd.Series([], dtype='object')
})
print(dtypes_df)

解释empty_df是一个没有任何数据或列的DataFrame,而empty_with_cols指定了列名但无数据,便于后续填充。对于dtypes_df,我们使用Series对象并指定dtype参数来定义每列的数据类型,如整数、浮点数或字符串,这有助于数据一致性和性能优化。

从外部数据创建DataFrame(提前入门)

在实际项目中,数据通常来自外部文件或数据库。这里简要介绍几种常见方式,后续章节会详细讲解每种格式的读取方法。

# 示例:从CSV文件创建DataFrame
# df_csv = pd.read_csv('data.csv')
# print(df_csv.head())

# 其他常见格式示例
# df_excel = pd.read_excel('data.xlsx')
# df_json = pd.read_json('data.json')
# 从SQL数据库读取,需要额外库如sqlalchemy
# df_sql = pd.read_sql('SELECT * FROM table', con=engine)

解释:Pandas提供了多种函数来读取外部数据,例如read_csv()用于CSV文件、read_excel()用于Excel文件、read_json()用于JSON文件等。这些函数会返回一个DataFrame对象,让你可以直接进行数据处理。本节只是入门,后续章节将深入讲解文件格式、参数设置和性能优化。

总结

通过本章学习,你应该已经掌握了Pandas中创建DataFrame的多种方法,包括从基本数据结构(列表、元组、字典、NumPy数组、Series)到外部数据源。这些方法覆盖了常见的数据创建场景,建议多练习并结合实际项目应用,以加深理解。在后续章节中,我们将进一步探讨DataFrame的操作、分析和可视化,帮助你成为更高效的数据分析者。

开发工具推荐
Python开发者工具包

包含虚拟环境管理、代码格式化、依赖管理、测试框架等Python开发全流程工具,提高开发效率。特别适合处理复杂数据结构和算法。

获取工具包