3.5 Series的修改与转换
Pandas Series 修改与转换:从索引操作到数据类型转换与合并
本章详细讲解Pandas Series的修改与转换技巧,包括按索引或位置修改值、使用rename和reindex修改索引、astype改变数据类型、与列表字典NumPy数组的相互转换,以及通过concat和append进行拼接合并,适合新手快速上手。
Pandas Series 修改与转换指南
Series 是 Pandas 中一种基本的一维数据结构,类似于带标签的数组。在本章中,我们将学习如何修改 Series 的值、索引和数据类型,以及如何将其与其他数据结构进行转换和合并。内容对新手友好,包含示例代码。
修改 Series 的值
Series 的值可以通过索引或位置进行修改。
按索引修改
使用索引直接赋值来修改特定值。
import pandas as pd
# 创建一个示例 Series
s = pd.Series([10, 20, 30], index=['a', 'b', 'c'])
print("原始 Series:")
print(s)
# 按索引修改值
s['a'] = 100
print("\n修改后的 Series:")
print(s)
按位置修改
使用 .iloc 属性按整数位置修改值。
# 按位置修改(位置从 0 开始)
s.iloc[1] = 200 # 修改第二个元素
print("\n按位置修改后的 Series:")
print(s)
修改 Series 的索引
Series 的索引可以通过重命名或重新索引来修改。
使用 rename 重命名索引
.rename 方法允许您更改一个或多个索引标签。
# 重命名索引
s_renamed = s.rename(index={'a': 'A', 'b': 'B'})
print("\n重命名索引后的 Series:")
print(s_renamed)
使用 reindex 重新索引
.reindex 方法创建一个新的 Series,基于新的索引列表。如果索引不存在,会引入 NaN 值。
# 重新索引
new_index = ['A', 'B', 'C', 'D']
s_reindexed = s.reindex(new_index)
print("\n重新索引后的 Series:")
print(s_reindexed)
修改 Series 的数据类型
使用 .astype 方法可以转换 Series 的数据类型。
# 创建一个整数类型的 Series
s_int = pd.Series([1, 2, 3])
print("原始数据类型:")
print(s_int.dtype)
# 转换为浮点类型
s_float = s_int.astype('float64')
print("\n转换后的数据类型:")
print(s_float.dtype)
print("\n转换后的 Series:")
print(s_float)
Series 与列表、字典、NumPy 数组的转换
Series 转列表
使用 .tolist() 方法将 Series 转换为 Python 列表。
# Series 转列表
s_list = s.tolist()
print("\nSeries 转换为列表:")
print(s_list)
Series 转字典
使用 .to_dict() 方法将 Series 转换为 Python 字典。
# Series 转字典
s_dict = s.to_dict()
print("\nSeries 转换为字典:")
print(s_dict)
Series 转 NumPy 数组
使用 .values 或 .to_numpy() 方法将 Series 转换为 NumPy 数组。
import numpy as np
# Series 转 NumPy 数组
s_array = s.values # 或 s.to_numpy()
print("\nSeries 转换为 NumPy 数组:")
print(s_array)
反向转换:从列表、字典、NumPy 数组创建 Series
# 从列表创建 Series
list_data = [1, 2, 3]
s_from_list = pd.Series(list_data)
print("\n从列表创建的 Series:")
print(s_from_list)
# 从字典创建 Series
dict_data = {'a': 1, 'b': 2, 'c': 3}
s_from_dict = pd.Series(dict_data)
print("\n从字典创建的 Series:")
print(s_from_dict)
# 从 NumPy 数组创建 Series
np_array = np.array([4, 5, 6])
s_from_np = pd.Series(np_array)
print("\n从 NumPy 数组创建的 Series:")
print(s_from_np)
Series 的拼接与合并
使用 concat 拼接
pandas.concat 函数用于拼接多个 Series。
# 创建两个 Series
s1 = pd.Series([1, 2], index=['x', 'y'])
s2 = pd.Series([3, 4], index=['a', 'b'])
# 拼接 Series
s_concat = pd.concat([s1, s2])
print("\n拼接后的 Series:")
print(s_concat)
使用 append 合并(已弃用)
.append 方法也可用于合并 Series,但自 Pandas 1.4.0 起已弃用,建议使用 concat。
# 使用 append 合并(仅作示例)
s_appended = s1.append(s2)
print("\n使用 append 合并的 Series:")
print(s_appended)
print("\n注意:append 方法已弃用,建议使用 concat。")
总结
本章我们学习了如何修改 Pandas Series 的值、索引和数据类型,以及如何与列表、字典、NumPy 数组进行转换。我们还讨论了 Series 的拼接与合并方法。记住,在实际使用中,优先使用 concat 进行拼接,而不是弃用的 append。通过这些操作,您可以灵活处理数据,为后续分析打下基础。