前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >5 个 Pandas 超级好用的隐藏技巧

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

作者头像
数据STUDIO
发布2024-07-24 10:00:26
900
发布2024-07-24 10:00:26
举报
文章被收录于专栏:数据STUDIO
对于数据科学来说,Python 中最重要的库是什么?有些人可能认为是 scikit-learn,它提供了许多内置函数用于机器学习任务。部分人可能会选择 NumPy 进行数值运算。

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

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

1. pipe() 方法链

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

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

代码语言:javascript
复制
# 这个 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 岁的足球运动员。

代码语言:javascript
复制
high_value_players_2022 = df2.query("market_value_in_eur > 50000000 和 height_in_cm == 185") 
high_value_players_2022.head(5)

3. eval()加速计算

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

代码语言:javascript
复制
# 使用 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数据类型可以节省内存并加快操作,并且如果在为机器学习算法处理数据时,这是该方法将是你最佳选择。

代码语言:javascript
复制
# 将 'player_club_domestic_competition_id' 转换为分类
df [ 'player_club_domestic_competition_id' ] = df [ 'player_club_domestic_competition_id' ].astype( 'category' )

5. assign()临时添加列

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

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

代码语言:javascript
复制
# 使用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()
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-07-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据STUDIO 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. pipe() 方法链
  • 2. query()简化过滤
  • 3. eval()加速计算
  • 4. astype()优化数据类型
  • 5. assign()临时添加列
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档