Pandas 中文手册

4.6 DataFrame的转换与重塑(基础)

Pandas DataFrame转换与重塑基础教程 | 入门指南

Pandas 中文手册

本章节详细讲解Pandas DataFrame的基础转换与重塑操作,包括DataFrame与Series的转换(取行/列、stack/unstack)、DataFrame与NumPy数组、列表、字典的互转方法,以及数据类型修改(astype、infer_dtype)和转置(T属性),配简单代码示例,帮助Pandas初学者快速掌握。

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

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

了解更多

DataFrame的转换与重塑(基础)

引言

Pandas的DataFrame是一个强大的二维数据结构,广泛用于数据处理和分析。在实际应用中,经常需要转换和重塑DataFrame以适应不同需求,例如数据合并、转置或数据类型调整。本章节将介绍DataFrame的基础转换与重塑操作,让新手快速上手。

1. DataFrame的转换与重塑基础

DataFrame的转换与重塑主要指改变数据的结构或格式,例如从宽格式转为长格式、调整行/列顺序等。这在数据清洗和准备阶段非常关键。

2. DataFrame与Series的转换

取行或列

  • 取一列:使用列名获取一个Series,例如df['列名']
  • 取一行:使用索引获取一个Series,例如df.loc[行索引]df.iloc[位置]
  • 示例代码:
    import pandas as pd
    df = pd.DataFrame({'A': [1, 2], 'B': [3, 4]})
    series_col = df['A']  # 获取列A为Series
    series_row = df.loc[0]  # 获取第一行为Series
    

stack和unstack基础

  • stack:将列层级转换为行,将DataFrame转换为Series,适用于多级索引。
  • unstack:将行层级转换为列,将Series转换为DataFrame。
  • 示例代码:
    df = pd.DataFrame({'A': [1, 2], 'B': [3, 4]}, index=['X', 'Y'])
    stacked = df.stack()  # 转换为Series,索引为多层
    unstacked = stacked.unstack()  # 转回DataFrame
    

3. DataFrame与NumPy数组、列表、字典的转换

DataFrame转NumPy数组

  • 使用.values属性:df.values返回一个NumPy数组。
  • 示例:numpy_array = df.values

NumPy数组转DataFrame

  • 使用pd.DataFrame()函数:例如pd.DataFrame(numpy_array, columns=['列名'])
  • 示例代码:
    import numpy as np
    arr = np.array([[1, 2], [3, 4]])
    df_from_arr = pd.DataFrame(arr, columns=['A', 'B'])
    

DataFrame转列表或字典

  • 转列表:使用.to_numpy().tolist().values.tolist()获取列表形式的嵌套列表。
  • 转字典:使用.to_dict()方法,参数如'list'(每列为列表)或'records'(每行为字典)。
  • 示例代码:
    df = pd.DataFrame({'A': [1, 2], 'B': [3, 4]})
    list_data = df.values.tolist()
    dict_data = df.to_dict('records')  # 返回[{'A': 1, 'B': 3}, {'A': 2, 'B': 4}]
    

4. 修改DataFrame的数据类型(astype、infer_dtype)

astype方法

  • 用于显式转换数据类型,例如将整数转为浮点数或字符串。
  • 示例代码:
    df['A'] = df['A'].astype('float')  # 将列A转为浮点型
    

infer_dtype函数

  • 属于Pandas的api.types模块,用于推断数据类型。
  • 示例代码:
    from pandas.api.types import infer_dtype
    dtype = infer_dtype(df['A'])  # 返回数据类型的推断,如'int64'
    
  • 注意:infer_dtype主要用于分析,而astype用于修改。

5. DataFrame的转置(T属性)

  • 转置是交换行和列,使用.T属性。
  • 示例代码:
    df = pd.DataFrame({'A': [1, 2], 'B': [3, 4]}, index=['X', 'Y'])
    transposed = df.T  # 转置后,行变列,列变行
    

总结

本章节介绍了DataFrame的基础转换与重塑操作,涵盖与Series的转换、与NumPy数组、列表、字典的互转,数据类型修改以及转置。通过示例代码,新手可以快速理解和应用这些功能,为后续高级Pandas操作打下基础。建议结合实际数据练习以加深理解。

实践建议

  • 尝试在Jupyter Notebook中运行代码示例。
  • 使用自己的数据应用这些方法,观察效果。
  • 参考Pandas官方文档获取更多高级功能。
开发工具推荐
Python开发者工具包

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

获取工具包