使用Pandas进行数据重塑的完整指南

一、基本数据结构

Pandas中的两个主要数据结构是Series和DataFrame。 Series是一个一维标记数组,可以保存任何数据类型。 DataFrame是具有行和列标签的二维表格,可以保存多种类型的数据。 在本指南中,我们将重点关注面向DataFrame的维度重塑。

以下是如何创建Series和DataFrame的示例代码:

import pandas as pd

# 创建Series
s = pd.Series([1, 3, 5, np.nan, 6, 8])

# 创建DataFrame
df = pd.DataFrame({'A': ['foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'foo'],
                   'B': ['one', 'one', 'two', 'three', 'two', 'two', 'one', 'three'],
                   'C': np.random.randn(8),
                   'D': np.random.randn(8)})

在以上代码中,我们使用了NumPy中的NaN值来表示缺失的值。此外,我们还使用了`np.random.randn()`函数来生成随机数据,以便我们更好地理解如何进行数据重塑。

二、重塑操作

1. 堆叠和取消堆叠

堆叠是指将DataFrame中的列压缩到较小的行中。 取消堆叠是指将已压缩的行重新扩展为列。 以下是如何使用`stack()`和`unstack()`方法执行这些操作的示例:

# 创建一个df
df = pd.DataFrame({'学生': ['小明', '小明', '小红', '小红'],
                   '科目': ['数学', '语文', '数学', '语文'],
                   '成绩': [90, 88, 92, 85]})

# 堆叠操作
stacked_df = df.set_index(['学生', '科目']).stack()
stacked_df

# 取消堆叠操作
unstacked_df = stacked_df.unstack()
unstacked_df

在以上示例中,我们首先创建了一个包含学生姓名、科目和成绩的DataFrame。然后,我们使用`set_index()`方法将学生姓名和科目设置为索引,并使用`stack()`方法将列堆叠成行。最后,我们使用`unstack()`方法将已堆叠的行重新扩展为列。

2. 透视表

透视表是一种根据数据中的值来汇总数据的方法。可以使用Pandas中的`pivot_table()`函数轻松创建透视表。以下是一个示例代码:

# 创建数据
data = {'省份': ['江苏', '江苏', '山东', '山东', '广东'],
        '城市': ['南京', '苏州', '济南', '青岛', '广州'],
        '销售额': [100, 200, 150, 180, 120]}

df = pd.DataFrame(data)

# 创建透视表
pivot_table = pd.pivot_table(df, 
                             values='销售额', 
                             index='省份', 
                             columns='城市')

pivot_table

在以上代码中,我们首先创建了一个包含省份、城市和销售额的DataFrame。然后,使用`pivot_table()`函数创建了一个透视表。在`pivot_table()`函数中,我们指定要聚合的值、行和列。

3. 重命名列名

重命名列名是一项非常常见的操作。 在Pandas中,我们可以使用`rename()`方法来重命名DataFrame的列名。 以下是一个示例:

# 创建一个df
df = pd.DataFrame({'A': [1, 2, 3],
                   'B': [4, 5, 6]})

# 重命名列名
df.rename(columns={'A': '新A', 'B': '新B'}, inplace=True)
df

在以上代码中,我们首先创建了一个包含’A’和’B’列的DataFrame。然后,使用`rename()`方法将列’A’和’B’重命名为’新A’和’新B’。

4. 删除列和行

时不时需要删除DataFrame中的列和行。 我们可以使用`drop()`方法来删除列和行。以下是一个示例:

# 创建一个df
df = pd.DataFrame({'A': [1, 2, 3],
                   'B': [4, 5, 6],
                   'C': [7, 8, 9]})

# 删除列
df.drop('C', axis=1, inplace=True)

# 删除行
df.drop(0, inplace=True)
df

在以上代码中,我们首先创建了一个包含三列的DataFrame。然后,使用`drop()`方法删除了列’C’和第一行。

5. 数据类型转换

有时需要将DataFrame中的数据类型从一个类型转换为另一个类型。 在Pandas中,我们可以使用`astype()`方法来实现转换。 以下是示例:

# 创建一个df
df = pd.DataFrame({'A': [1, 2, 3],
                   'B': ['4', '5', '6']})

# 将'B'列的类型从str转换为int
df['B'] = df['B'].astype(int)
df.dtypes

在以上代码中,我们首先创建了一个包含’A’和’B’列的DataFrame,其中’B’列的类型为str。然后,使用`astype()`方法将’B’列的类型从str转换为int。

三、总结

使用Pandas进行数据重塑是数据分析和数据处理中非常常见的操作。在本指南中,我们介绍了如何使用Pandas进行数据重塑:堆叠和取消堆叠,透视表,重命名列名,删除列和行,以及数据类型转换。掌握这些技能可以帮助您更好地理解、分析和处理数据。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/152617.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-11-13 06:05
下一篇 2024-11-13 06:05

相关推荐

  • Java JsonPath 效率优化指南

    本篇文章将深入探讨Java JsonPath的效率问题,并提供一些优化方案。 一、JsonPath 简介 JsonPath是一个可用于从JSON数据中获取信息的库。它提供了一种DS…

    编程 2025-04-29
  • 运维Python和GO应用实践指南

    本文将从多个角度详细阐述运维Python和GO的实际应用,包括监控、管理、自动化、部署、持续集成等方面。 一、监控 运维中的监控是保证系统稳定性的重要手段。Python和GO都有强…

    编程 2025-04-29
  • Python读取CSV数据画散点图

    本文将从以下方面详细阐述Python读取CSV文件并画出散点图的方法: 一、CSV文件介绍 CSV(Comma-Separated Values)即逗号分隔值,是一种存储表格数据的…

    编程 2025-04-29
  • Python wordcloud入门指南

    如何在Python中使用wordcloud库生成文字云? 一、安装和导入wordcloud库 在使用wordcloud前,需要保证库已经安装并导入: !pip install wo…

    编程 2025-04-29
  • Python应用程序的全面指南

    Python是一种功能强大而简单易学的编程语言,适用于多种应用场景。本篇文章将从多个方面介绍Python如何应用于开发应用程序。 一、Web应用程序 目前,基于Python的Web…

    编程 2025-04-29
  • Python小波分解入门指南

    本文将介绍Python小波分解的概念、基本原理和实现方法,帮助初学者掌握相关技能。 一、小波变换概述 小波分解是一种广泛应用于数字信号处理和图像处理的方法,可以将信号分解成多个具有…

    编程 2025-04-29
  • 打造照片漫画生成器的完整指南

    本文将分享如何使用Python编写一个简单的照片漫画生成器,本文所提到的所有代码和技术都适用于初学者。 一、环境准备 在开始编写代码之前,我们需要准备一些必要的环境。 首先,需要安…

    编程 2025-04-29
  • 如何在Java中拼接OBJ格式的文件并生成完整的图像

    OBJ格式是一种用于表示3D对象的标准格式,通常由一组顶点、面和纹理映射坐标组成。在本文中,我们将讨论如何将多个OBJ文件拼接在一起,生成一个完整的3D模型。 一、读取OBJ文件 …

    编程 2025-04-29
  • Python字符转列表指南

    Python是一个极为流行的脚本语言,在数据处理、数据分析、人工智能等领域广泛应用。在很多场景下需要将字符串转换为列表,以便于操作和处理,本篇文章将从多个方面对Python字符转列…

    编程 2025-04-29
  • Python中读入csv文件数据的方法用法介绍

    csv是一种常见的数据格式,通常用于存储小型数据集。Python作为一种广泛流行的编程语言,内置了许多操作csv文件的库。本文将从多个方面详细介绍Python读入csv文件的方法。…

    编程 2025-04-29

发表回复

登录后才能评论