Pandas(第十五集:DataFrame数据映射)


序号函数说明
1replace()函数替换元素
2map()函数处理某一单独的列【最重要】—用于Series
3rename()函数替换索引
4apply()函数对数据进行操作,既支持Series,也支持DataFrame
5transform()函数对数据进行操作,既支持Series,也支持DataFrame

1. 源数据

def make_df(indexs, columns):
    data = [[str(j) + str(i) for j in columns] for i in indexs]
    df = pd.DataFrame(data=data, index=indexs, columns=columns)
    return df

df = make_df([1, 2, 3, 4], list('ABCD'))

在这里插入图片描述

2. replace()函数【替换元素】

df.replace({'A1': 'A11', 'B3': 'B33'})

在这里插入图片描述

3. map()函数【对一列数据进行处理】

df2 = df.copy()
# map() 一般用在Series数据结构,不能用于DataFrame
# 将第一列中的数据 乘2
df2['A'].map(lambda x: x * 2)
# 新增一列:判断第一列的数据是否及格
df2['A_JG'] = df2['A'].map(lambda n: '及格' if n == 'A2' else '不及格')

在这里插入图片描述

4. rename()函数【替换索引】

df2.rename(index={1: 'Mr.A'})  # 默认情况下 只修改行索引

在这里插入图片描述

df2.rename(columns={'A': 'a_column'}, axis=1)  # 修改列索引

在这里插入图片描述

# 重置索引,会生成0123这样的索引,原有的索引会生成index这一列的数据
df2.reset_index()

在这里插入图片描述

# 设置索引,将列变成行索引
df2.set_index(keys=['D'])

在这里插入图片描述

5. apply()函数

​ Pandas 的 apply() 方法是用来调用一个函数,让此函数对数据对象进行批量处理。
apply() 使用时,通常放入一个 lambda 函数表达式、或一个函数作为操作运算。

5.1 源数据

data = np.random.randint(0, 10, size=(5, 3))
df = pd.DataFrame(data=data, index=list('ABCDE'), columns=['Python', 'NumPy', 'Pandas'])

在这里插入图片描述

5.2 对Series进行操作,大于5的数据为True,否则为False

df['Python_pd'] = df['Python'].apply(lambda x: True if x > 5 else False)

在这里插入图片描述

5.3 对DataFrame进行操作,求均值

# axis=0列 axis=1行
# x指的是DataFrame中某一列或某一行的Series数据
df['mean'] = df.apply(lambda x: x.mean(), axis=1)

在这里插入图片描述

5.4 applymap()是DataFrame专有的方法,其中的x是每一个元素

df.applymap(lambda x: x + 100)

6. transform()函数【既支持Series,也支持DataFrame】

transform()是pandas中的转换函数,对DataFrame执行传入的函数后返回一个相同形状的DataFrame

df2['Python'].transform([np.sqrt, np.exp])

在这里插入图片描述

def convert(x):
    if x.mean() > 5:
        return x * 10
    else:
        return x * (-10)


print(df2.transform(convert))  # 对列进行操作
# print(df2.transform(convert, axis=1))  # 对行进行操作

在这里插入图片描述

<think>嗯,用户想要获取Pandas中Series方法的总结和使用说明。我需要先回忆一下Series的基本结构。根据引用[2],Series是由数据值value和标签索引index组成的一维结构,类似字典。所以应该从创建、操作、数据清洗等方面来组织内容。 首先,Series的创建方法有很多,比如从列表、字典、NumPy数组等。用户可能需要具体的例子,比如使用pd.Series(data, index)的格式。引用[2]中提到数据值和索引一一对应,这点很重要,创建时如果数据与索引长度不匹配会报错,得提醒用户注意。 接下来是常用方法,比如head()、tail()查看数据,describe()生成统计信息。这些基础方法用户可能经常用到,需要详细说明。比如describe()返回的是计数、均值、标准差等,引用[2]和[3]中的例子可能有帮助。 然后是数据操作,比如加减乘除运算,向量化操作。这里可以提到Series支持NumPy的运算,比如np.log(s),用户可能需要进行数学变换。 数据清洗方面,drop()方法很重要。根据引用[1],drop()可以删除指定标签的行,默认返回新对象,inplace参数控制是否修改原数据。需要给出示例,比如s.drop('a')。另外,处理缺失值的方法如dropna()和fillna()也要包括进去,用户处理数据时常用到这些。 索引和筛选部分,loc和iloc的区别需要解释清楚。loc是基于标签的,iloc是基于位置的,避免混淆。布尔索引也是一个重点,比如s[s > 0],这在数据筛选中很常用。 统计计算方面,sum()、mean()、max()等方法要列出,并说明它们的使用。分组方法groupby()可能也需要简单提及,虽然更常用于DataFrame,但Series也可以使用。 排序方法sort_values()和sort_index()必须包含,用户经常需要对数据进行排序,ascending参数控制升序降序。需要给出例子,比如s.sort_values(ascending=False)。 类型转换如astype(),比如将字符串转为数值,或者修改数据类型节省内存,这些应用场景用户可能会遇到。 可视化部分,plot()方法可以快速生成图表,结合Matplotlib,用户可能需要简单的例子,如s.plot(kind='bar')。 最后,注意事项部分要提醒索引对齐特性,这是Pandas的重要功能,比如运算时自动按索引对齐数据。另外,内存管理和性能优化的建议也很实用,比如使用astype()减少内存占用。 用户可能还需要实际案例来综合运用这些方法。例如,从创建Series开始,进行数据清洗、运算、统计,最后可视化。引用[3]中的例子涉及DataFrame和Series的转换,但可以调整成纯Series的例子,比如计算平均值后处理。 需要确保所有提到的函数都有示例代码,帮助用户理解用法。同时,检查引用内容是否正确对应,比如引用[1]关于drop()的参数,引用[2]的结构说明,引用[3]中的merge可能不直接相关,但可以忽略,重点放在Series本身。 相关问题部分,要考虑用户可能进一步的问题,比如如何选择合适的方法、处理缺失值的不同方法对比、索引对齐的应用场景,以及如何提升处理大型Series的效率。这些问题能帮助用户深入理解Series的使用。</think>### Pandas Series 方法大全及用法总结 #### 一、Series 基础结构 Pandas Series 是由**数据值(value)**和**标签索引(index)**组成的一维数据结构[^2]。其核心特性如下: ```python import pandas as pd s = pd.Series([10, 20, 30], index=['a', 'b', 'c']) ``` 输出结果: ``` a 10 b 20 c 30 dtype: int64 ``` --- #### 二、常用方法分类总结 ##### 1. 数据查看与描述 | 方法 | 说明 | 示例 | |------|------|------| | `head(n)` | 查看前n行 | `s.head(2)` → 显示前2行 | | `tail(n)` | 查看后n行 | `s.tail(1)` → 显示最后1行 | | `describe()` | 生成统计摘要 | `s.describe()` → 输出计数、均值、标准差等[^2] | ##### 2. 数据操作 ```python # 向量化运算 s_add = s + 5 # 所有元素加5 s_log = np.log(s) # 应用NumPy函数 # 标签索引操作 s['b'] = 99 # 修改索引'b'的值 s.loc[['a','c']] # 选择特定标签 ``` ##### 3. 数据清洗 ```python # 删除数据 s.drop('a', inplace=True) # 删除索引为'a'的行[^1] # 处理缺失值 s.dropna() # 删除空值 s.fillna(0) # 用0填充空值 ``` ##### 4. 索引与筛选 ```python s.iloc[1:3] # 按位置选择第2-3个元素 s[s > 15] # 布尔索引筛选大于15的值 ``` ##### 5. 统计计算 ```python s.sum() # 求和 → 60 s.mean() # 平均值 → 20 s.idxmax() # 最大值索引 → 'c' ``` ##### 6. 排序方法 ```python s.sort_values(ascending=False) # 按值降序 s.sort_index() # 按索引升序 ``` ##### 7. 类型转换 ```python s.astype(float) # 转换为浮点型 s.map(lambda x: x*2) # 应用函数映射 ``` ##### 8. 可视化 ```python s.plot(kind='bar', title='Series Visualization') ``` --- #### 三、进阶应用场景 1. **索引对齐特性** Series 运算时会自动对齐索引: ```python s1 = pd.Series([1,2], index=['a','b']) s2 = pd.Series([3,4], index=['b','c']) s1 + s2 # 结果:a→NaN, b→5, c→NaN ``` 2. **分组聚合** ```python s.groupby(s.index.str.len()).mean() # 按索引长度分组求均值 ``` --- #### 四、综合案例 ```python # 创建含缺失值的Series data = pd.Series([5, None, 8, 12], index=['A','B','C','D']) # 清洗与计算 clean_data = data.fillna(data.mean()).astype(int) result = clean_data[clean_data > 7].sort_values() ``` --- #### 五、注意事项 1. **索引唯一性**:重复索引可能导致意外结果 2. **内存优化**:使用`astype()`降低内存占用 3. **方法链**:推荐使用`ser.method1().method2()`的链式调用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Monly21

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值