一、基本数据结构
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进行数据重塑:堆叠和取消堆叠,透视表,重命名列名,删除列和行,以及数据类型转换。掌握这些技能可以帮助您更好地理解、分析和处理数据。