pandas练习-apply函数

步骤1 读取数据,并将数据命名为student

>>> import pandas as pd,numpy as np
>>> student = pd.read_csv('D:/Data/PythonPractise/pandasdata/student-mat.csv')
>>> student.head()
  school sex  age address famsize Pstatus  ...  Walc  health absences  G1  G2  G3
0     GP   F   18       U     GT3       A  ...     1       3        6   5   6   6
1     GP   F   17       U     GT3       T  ...     1       3        4   5   5   6
2     GP   F   15       U     LE3       T  ...     3       3       10   7   8  10
3     GP   F   15       U     GT3       T  ...     1       5        2  15  14  15
4     GP   F   16       U     GT3       T  ...     2       5        4   6  10  10

[5 rows x 33 columns]

步骤2 从'school'到'guardian'将数据切片

>>> stud_alcoh = student.loc[:,'school':'guardian']
>>> stud_alcoh.head()
  school sex  age address famsize  ... Fedu     Mjob      Fjob  reason guardian
0     GP   F   18       U     GT3  ...    4  at_home   teacher  course   mother
1     GP   F   17       U     GT3  ...    1  at_home     other  course   father
2     GP   F   15       U     LE3  ...    1  at_home     other   other   mother
3     GP   F   15       U     GT3  ...    2   health  services    home   mother
4     GP   F   16       U     GT3  ...    3    other     other    home   father

步骤3 创建一个捕获字符串的lambda函数

>>> captalizer = lambda x: x.upper()

步骤4 使'Fjob'列都大写

>>> stud_alcoh['Fjob'].apply(captalizer)
0       TEACHER
1         OTHER
2         OTHER
3      SERVICES
4         OTHER
~~~

步骤5 打印数据集的最后几行元素

>>> stud_alcoh.tail()
    school sex  age address famsize  ... Fedu      Mjob      Fjob  reason guardian
390     MS   M   20       U     LE3  ...    2  services  services  course    other
391     MS   M   17       U     LE3  ...    1  services  services  course   mother
392     MS   M   21       R     GT3  ...    1     other     other  course    other
393     MS   M   18       R     LE3  ...    2  services     other  course   mother
394     MS   M   19       U     LE3  ...    1     other   at_home  course   father

[5 rows x 12 columns]

步骤6 注意到原始数据框仍然是小写字母,接下来改进一下

stud_alcoh['Fjob'] = stud_alcoh['Fjob'].apply(captalizer)
>>> stud_alcoh.tail()
    school sex  age address famsize  ... Fedu      Mjob      Fjob  reason guardian
390     MS   M   20       U     LE3  ...    2  services  SERVICES  course    other
391     MS   M   17       U     LE3  ...    1  services  SERVICES  course   mother
392     MS   M   21       R     GT3  ...    1     other     OTHER  course    other
393     MS   M   18       R     LE3  ...    2  services     OTHER  course   mother
394     MS   M   19       U     LE3  ...    1     other   AT_HOME  course   father

步骤7 创建一个名为majority的函数,它返回一个布尔值到一个名为legal_drinker的新列(多数年龄大于17岁)

>>> def majority(x):
    if x > 17:
        return True
    else:
        return False

    
>>> stud_alcoh['legal_drinker'] = stud_alcoh['age'].apply(majority)
>>> stud_alcoh.head()
  school sex  age address  ...      Fjob      reason  guardian  legal_drinker
0     GP   F   18       U  ...   TEACHER      course    mother           True
1     GP   F   17       U  ...     OTHER      course    father          False
2     GP   F   15       U  ...     OTHER       other    mother          False
3     GP   F   15       U  ...  SERVICES        home    mother          False
4     GP   F   16       U  ...     OTHER        home    father          False

[5 rows x 13 columns]

步骤8 将数据集的每个数字乘以10

>>> def times10(x):
    if type(x) is int:
        return 10 * x
    return x

>>> stud_alcoh.applymap(times10).head(10)
  school sex  age address  ...      Fjob      reason  guardian  legal_drinker
0     GP   F  180       U  ...   TEACHER      course    mother           True
1     GP   F  170       U  ...     OTHER      course    father          False
2     GP   F  150       U  ...     OTHER       other    mother          False
3     GP   F  150       U  ...  SERVICES        home    mother          False
4     GP   F  160       U  ...     OTHER        home    father          False
5     GP   M  160       U  ...     OTHER  reputation    mother          False
6     GP   M  160       U  ...     OTHER        home    mother          False
7     GP   F  170       U  ...   TEACHER        home    mother          False
8     GP   M  150       U  ...     OTHER        home    mother          False
9     GP   M  150       U  ...     OTHER        home    mother          False

[10 rows x 13 columns]

拓展:

apply/applymap/map的区别
1、当我们要对数据框(DataFrame)的数据进行按行或按列操作时用apply()
2、当我们要对数据框(DataFrame)的每一个数据进行操作时用applymap(),返回结果是DataFrame格式
3、当我们要对Series的每一个数据进行操作时用map()
在上面的步骤4中,是的Fjob列的每个字母都大写,同样可以这样操作

>>> stud_alcoh.Fjob.map(captalizer)

练习:将DataFrame中的某一列的数据类型str转化成int

>>> data1 = pd.DataFrame({'a':['1','2','3'],'b':['4','5','6']})
>>> data1
   a  b
0  1  4
1  2  5
2  3  6
>>> data1.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 3 entries, 0 to 2
Data columns (total 2 columns):
a    3 non-null object
b    3 non-null object
dtypes: object(2)
memory usage: 128.0+ bytes

>>> data1 = data1.applymap(int)
>>> data1.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 3 entries, 0 to 2
Data columns (total 2 columns):
a    3 non-null int64
b    3 non-null int64
dtypes: int64(2)
memory usage: 128.0 bytes
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,242评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,769评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,484评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,133评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,007评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,080评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,496评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,190评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,464评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,549评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,330评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,205评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,567评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,889评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,160评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,475评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,650评论 2 335

推荐阅读更多精彩内容