ITPub博客

首页 > 数据库 > 数据库开发技术 > Pandas高级功能:提升您的数据处理技能。值得一看!(建议收藏~~)

Pandas高级功能:提升您的数据处理技能。值得一看!(建议收藏~~)

原创 数据库开发技术 作者:jackzhang 时间:2024-04-27 17:15:22 0 删除 编辑

引言

欢迎阅读关于Pandas高级数据操作的专栏!在本文中,我们将深入探讨一些在Python中用于操作和转换数据的强大且实用的函数。从数据汇总到合并再到重塑,这些功能将帮助您将数据分析技能提升到一个新的水平。无论您是久经沙场的老司机(🤭其实是经验丰富的程序员啦(✺ω✺)),还是初入数据海洋找不到方向的雏鸟(新手啦😳),本文都将为您提供一些新颖且有用的知识。那么,话不多说,让我们直接开始吧!

高级数据处理函数

1.explode()

英文翻译过来就是爆炸、激增的意思。所以顾名思义,explode()函数可以用于将列表或数组列转换为多行,也就是可以将一行变多行。

例如,如果DataFrame具有包含值列表的列,则在该列上调用explode()将为列表中的每个值创建一行新行。新行其他列的值与原始行相同,但爆炸的列则是列表中的单个值。

import pandas as pd

# 创建一个简单的样本数据
df = pd.DataFrame({'姓名': ['杰克', '史密斯'], 
                   '物品': [['手机', '电脑', 'iPad'], ['跑车', '摩托']]})

# 使用 explode 函数将“物品”列转换为多行
df_explode = df.explode('物品')
# df
df_explode

2.implode

explode()函数的逆函数不是称为"implode",而是可以使用groupby和agg函数来实现类似的功能。以下是一个示例,演示如何使用它们将多行"implode"为一个具有值列表的单元格。

# 对“姓名”列进行分组,然后对“物品”列使用魔法函数将其聚合为列表
df_implode = df_explode.groupby('姓名', as_index=False).agg(lambda x: x.tolist())
# df_explode
df_implode

3.melt()

melt 函数通过解透视(列转行)的方式对 DataFrame 进行重塑。在需要将宽格式(列多行少)的数据转换为长格式(行多列少)时,这种方法非常有用。

import pandas as pd

# 创建样本数据
data = {'name': ['Jack', 'John'], 'Item1': ['apple', 'banana'], 
        'Item2': ['pear', 'orange'], 'Item3': ['car', 'bike']}
df = pd.DataFrame(data)

# 使用 melt 函数对数据框进行重塑
df_melt = df.melt(id_vars='name', value_vars=['Item1', 'Item2', 'Item3'], 
                  var_name='Item Type', value_name='Item Name')
# df
df_melt

4.pivot_table()

pivot_table函数用于根据DataFrame创建数据透视表。它适用于处理具有一个或多个分类变量的大量值的数据,以及创建显示这些分类数据分布的摘要表。

例如,我们有如下所示的输入数据框:

我们想要查找每位顾客购买的每种商品的数量,以便每种商品都成为一列。这个时候就可以使用数据透视表来实现这种转换。

import pandas as pd

# 创建样本数据
data = {'Name': ['John', 'Jack', 'John', 'Jack'], 
        'Item': ['apple', 'banana', 'car', 'bike'], 
        'Quantity': [1, 3, 4, 5]}
df = pd.DataFrame(data)

# 使用 pivot_table 函数创建透视表
df_pivot_table = df.pivot_table(index='Name', columns='Item', 
                                values='Quantity', aggfunc='sum')
# df
df_pivot_table

5.stack()

stack函数通过将列标签的最内层移动为行标签的最内层,从而更改DataFrame的形状。

# 使用 stack 函数修改透视表的形状
df_stack = df_pivot_table.stack()
# df_pivot_table
df_stack

6.unstack()

unstack函数通过将最内层索引移动到列来更改DataFrame的形状。

# 使用 unstack 函数修改堆叠表的形状
df_unstack = df_stack.unstack()
# df
df_unstack

7.crosstab()

crosstab 函数用于计算两个或多个因子的简单交叉表(频率表),它是 pivot_table 的特例。

df = pd.DataFrame({'gender': ['Male', 'Female', 'Female', 'Male'],
                   'project': ['Yes', 'No', 'Yes', 'No']})
df_crosstab = pd.crosstab(index=df['gender'], columns=df['project'])
# df
df_crosstab

8.cut() and qcut()

pandas中的 cut() 和 qcut() 函数用于将连续数据分成离散区间或箱。cut() 函数用于将连续数据分割成大小相等的箱子,而 qcut() 用于将连续数据分割成观测值数量相等的箱子。

以下是如何使用 cut() 和 qcut() 函数对连续数据列进行分箱的示例:

import pandas as pd
import numpy as np

# 创建样本数据
df = pd.DataFrame({'Quantity': np.arange(10) + 1})

# 使用 cut 函数将“Quantity”列分为3个箱子
bins = [0, 3, 6, 10]
df['Quantity_cut'] = pd.cut(df['Quantity'], bins=bins)

# 使用 qcut 函数将“Quantity”列分为3个观测值数量相等的箱子
df['Quantity_qcut'] = pd.qcut(df['Quantity'], q=3)
df

9.eval()

用于高效的 DataFrame 列运算,支持更快的计算速度,并可以简化链式操作。

import pandas as pd
import numpy as np

df = pd.DataFrame(data=np.random.randint(1, 51, size=(5000000, 4)), columns=list('abcd'))
df.eval('e = (a + b) / (c + d)', inplace=True)
df

10.apply()

对 DataFrame 中的数据应用一个函数,可以作用于行或列。

11.map()

对DataFrame的每个元素应用一个函数,主要用于元素级函数应用。

12.rolling()

提供滚动窗口计算,常用于时间序列数据分析,如滚动平均、滚动标准差等。

import pandas as pd
import numpy as np

# 创建样本数据
df = pd.DataFrame({'Quantity': np.arange(10) + 1})
df['rolling_avg'] = df['Quantity'].rolling(window=3).mean()
df

结论

在这篇文章中,我们介绍了 12 个pandas高级数据操作函数,可以帮助您快速进行数据分析。我们可以使用这些函数对数据集进行有效地格式化和总结。

“

如果你觉得这篇文章对你有用,请“点赞➕关注”支持我!关注我,带你解锁更多Python实用技能、数据分析知识以及更多AI工具和新玩法!

Thank you for reading!

- END -

推荐阅读👇👇👇

模拟现实:利用Python的Faker库生成逼真的测试数据,一个超实用的Python库!

一键搞定:使用Python批量合并Excel文件的终极指南

Python如何从SQL Server中存取数据?

一个很实用的Python自动化脚本:剪贴板管理器!

再见pandas,你好polars!


原文作者:数据派探险家;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2017-12-19

  • 博文量
    119
  • 访问量
    55957