5 个 Pandas 超级好用的隐藏技巧

对于数据科学来说,Python 中最重要的库是什么?有些人可能认为是 scikit-learn,它提供了许多内置函数用于机器学习任务。部分人可能会选择 NumPy 进行数值运算。

但我还是支持 Pandas。为什么?如果你不使用它的功能,你的操作可能会寸步难行。Pandas 非常庞大,需要学习的东西很多。

在本文中,云朵君将分享五个鲜为人知的 Pandas 技巧。这些技巧初时对我来说非常新颖,需要经过大量研究才能掌握。强烈推荐关注@公众号:数据 STUDIO ,更多精选好文定期更新!

1. pipe() 方法链

.pipe() 方法链可以使代码更简洁、更高效。使用.pipe(),可以在一行中应用多个操作。

下面,我们将筛选市场价值高于 1,000,000 欧元的球员数据,并按排序market_value_in_eur,找出世界上最昂贵的球员。

# 这个 transfermarkt 数据集来自 Kaggle(https://www.kaggle.com/datasets/davidcariboo/player-scores)
def  filter_high_value_players ( df ): 
    return df[df[ 'market_value_in_eur' ] > 1000000 ] 

def  sort_by_market_value ( df ): 
    return df.sort_values( 'market_value_in_eur' , accending= False ) 

# 使用 .pipe() 进行方法链
filtered_sorted_df = df.pipe(filter_high_value_players).pipe(sort_by_market_value)

2. query()简化过滤

query()方法使得过滤数据帧更加容易。无需使用长条件,query()使代码更具可读性。

在这里,我们尝试寻找身价 5000 万欧元且身高超过 185 岁的足球运动员。

high_value_players_2022 = df2.query("market_value_in_eur > 50000000 和 height_in_cm == 185"
high_value_players_2022.head(5)

3. eval()加速计算

eval()函数可以为算术运算提速,特别是对于列式计算非常有用。

# 使用 eval() 计算百万市值
df[ 'market_value_in_millions' ] = df.eval ( 'market_value_in_eur / 1_000_000' ) 
# 删除 na df.dropna ( 
subset=[ 'market_value_in_millions' ], inplace= True ) 
# 从最高到最低升序
df.sort_values( "market_value_in_millions" , accending = False )[[ "name" , "market_value_in_millions" ]]

4. astype()优化数据类型

将列转换为Categorical数据类型可以节省内存并加快操作,并且如果在为机器学习算法处理数据时,这是该方法将是你最佳选择。

# 将 'player_club_domestic_competition_id' 转换为分类
df [ 'player_club_domestic_competition_id' ] = df [ 'player_club_domestic_competition_id' ].astype( 'category' )

5. assign()临时添加列

对于于临时更改数据列,可以使用assign()方法添加新列而不修改原始数据。

在这里可以看到球员的价值是否高于平均水平。

# 使用assign()添加一列,表示市场价值是否高于平均水平
df_with_new_col = df.assign(above_average = df[ 'market_value_in_millions' ] > df[ 'market_value_in_millions' ].mean()) 
df_with_new_col.head()

🏴‍☠️宝藏级🏴‍☠️ 原创公众号『数据STUDIO』内容超级硬核。公众号以Python为核心语言,垂直于数据科学领域,包括可戳👉 PythonMySQL数据分析数据可视化机器学习与数据挖掘爬虫 等,从入门到进阶!

长按👇关注- 数据STUDIO -设为星标,干货速递

相关推荐

  • 7k star!斯坦福开源学术研究神器!storm
  • 人民大学通报:教师王贵元猥亵女生情况属实,开除党籍、撤销教授职称开除!人大大王贵元教授性骚扰且强制猥亵我,并要求与我发生性关系”
  • 京东健康·全球医疗AI创新大赛火热进行中,立即参与,共创医疗新纪元!
  • 开源仅 1 天就斩获近万星!超越 RAG、让大模型拥有超强记忆力的 Mem0 火了!
  • 史上最全 Git 图文教程,没有之一
  • 粗看最近爆火的mem0个性化轻量级框架:兼谈多模态数据的tokenizer
  • 下半年面试难度太大了...
  • 是时候丢掉 BeanUtils 了!
  • ECCV 2024|盲视频去闪烁通用方法BlazeBVD来了,美图&国科大联合提出
  • 无限生成视频,还能规划决策,扩散强制整合下一token预测与全序列扩散
  • 真相了!大模型解数学题和人类真不一样:死记硬背、知识欠缺明显,GPT-4o表现最佳
  • 神经网络也有空间意识!学会在Minecraft创建地图,登上Nature子刊
  • 首个超越GPT4o级开源模型!Llama 3.1泄密:4050亿参数,下载链接、模型卡都有了
  • 让小程序在 APP 运行的高性价比选择 ——FinClip
  • 前端程序员,还在本地开发还能用https?
  • Set 迎来史诗级加强,新增 7 个实用方法!
  • Apache Doris x 腾讯云,共同探索极速实时分析的极致体验|Apache Doris Meetup@深圳站火热报名中
  • 云开发网关技术架构演进
  • 劝各位做好失业准备,如今职场生存法则彻底变了!
  • 列表是怎么扩容的?