小案例: Pandas的apply方法

插播一条广告

Python数据挖掘与文本分析&Stata应用能力提升与实证前沿云特训

Python部分上课时间为6月29日-7月2日,感兴趣的童鞋欢迎关注


pandas中有一个特别好用的apply方法,包括

  • 列内计算,只对某列进行某种计算

  • 列间计算,对多个列之间进行复杂的计算

下面我们看实验数据

import pandas as pd
import numpy as np

matrix = [
    ['张三', '1995-12-31', '山东', '本科'],
    ['李四', '1993-05-29', '河北', '大专'],
    ['王五', '1995-03-14', '山西', '硕士'],
    ['赵六', '1992-07-08', '内蒙古', '本科'],
]

df = pd.DataFrame(matrix, columns=['Name', 'Birthday', 'From', 'Edu'])
df

NameBirthdayFromEdu
0张三1995-12-31山东本科
1李四1993-05-29河北大专
2王五1995-03-14山西硕士
3赵六1992-07-08内蒙古本科

df.apply(func)或series.apply(func)

axis控制操作方向

  • 0 表示列方向

  • 1 表示行方向

列内计算

一般列内计算,实际上主要是对series做的操作,比如选中dataframe某列。

df['colname'].apply(func) 默认只对列方向对colname列做func操作,例如计算每个员工的出生年份、年龄。

def year(birthday):
    #截取birthday字符串的年份
    return int(birthday[:4])


#对birthday列使用year函数操作
df['Year'] = df['Birthday'].apply(year)

#年龄
df['Age'] = 2020-df['Year']

df

NameBirthdayFromEduYearAge
0张三1995-12-31山东本科199525
1李四1993-05-29河北大专199327
2王五1995-03-14山西硕士199525
3赵六1992-07-08内蒙古本科199228

列间计算

df.apply(func, axis=1)不同列之间可以有复杂的计算,比如想计算 设计自我介绍模板

def intro(r):
    #r代指dataframe中的任意行,是series类型数据,拥有类似字典的使用方法。
    return '大家好,我是{name},\
            来自{province}省,\
            今年{age}岁了!'.format(name=r['Name'], 
                                 province=r['From'],
                                 age=r['Age'])

df['Intro'] = df.apply(intro, axis=1)
df

NameBirthdayFromEduYearAgeIntro
0张三1995-12-31山东本科199525大家好,我是张三, 来自山东省, 今年25岁了!
1李四1993-05-29河北大专199327大家好,我是李四, 来自河北省, 今年27岁了!
2王五1995-03-14山西硕士199525大家好,我是王五, 来自山西省, 今年25岁了!
3赵六1992-07-08内蒙古本科199228大家好,我是赵六, 来自内蒙古省, 今年28岁了!
往期文章Python语法快速入门
Python网络爬虫与文本数据分析
读完本文你就了解什么是文本分析

综述:文本分析在市场营销研究中的应用
从记者的Twitter关注看他们稿件的党派倾向?

Pandas时间序列数据操作
70G上市公司定期报告数据集
文本数据清洗之正则表达式
shreport库: 批量下载上海证券交易所上市公司年报
Numpy和Pandas性能改善的方法和技巧
漂亮~pandas可以无缝衔接Bokeh
YelpDaset: 酒店管理类数据集10+G
半个小时学会Markdown标记语法

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值