pandas向量化字符串处理以及数据透视表笔记

pandas向量化字符串处理以及数据透视表笔记

import numpy as np
import pandas as pd
import re
df=pd.DataFrame(np.random.randint(2,15,(5,4)),columns=['data1','data2','data3','data4'])
df
data1data2data3data4
0101154
11013117
2108710
3127146
4121269
df.groupby(['data1','data2'])[['data3']].mean()
#用[[]]生成DataFrame。
data3
data1data2
1087
115
1311
12714
126
df.groupby(['data1','data2'])[['data3','data4']].mean()
#多个索引是用的[[]].
data3data4
data1data2
108710
1154
13117
127146
1269
df.groupby(['data1','data2']).mean().unstack(level=1).fillna('x')
data3data4
data27811121378111213
data1
10x75x11x104x7
1214xx6x6xx9x
df = pd.DataFrame({"A": ["foo", "foo", "foo", "foo", "foo",
                          "bar", "bar", "bar", "bar"],
                    "B": ["one", "one", "one", "two", "two",
                         "one", "one", "two", "two"],
                    "C": ["small", "large", "large", "small",
                         "small", "large", "small", "small",
                         "large"],
                    "D": [1, 2, 2, 3, 3, 4, 5, 6, 7],
                   
                    "E": [2, 4, 5, 5, 6, 6, 8, 9, 9]})
df
ABCDE
0fooonesmall12
1fooonelarge24
2fooonelarge25
3footwosmall35
4footwosmall36
5baronelarge46
6baronesmall58
7bartwosmall69
8bartwolarge79
df.pivot_table(index='A',columns=['B','C'])
DE
Bonetwoonetwo
Clargesmalllargesmalllargesmalllargesmall
A
bar4.05.07.06.06.08.09.09.0
foo2.01.0NaN3.04.52.0NaN5.5
df.pivot_table(index='A',columns=['B','C'],aggfunc={'D':np.mean,'E':np.sum},margins=True,margins_name='YY')
#aggfunc和aggregate的使用方法基本一致。
#margins 边缘的数据.
#另有dropna=False,及value,等参数
DE
BonetwoYYonetwoYY
Clargesmalllargesmalllargesmalllargesmall
A
bar4.0000005.07.06.05.5000006.08.09.09.032
foo2.0000001.0NaN3.02.2000009.02.0NaN11.022
YY2.6666673.07.04.03.66666715.010.09.020.054

向量化字符串方法

针对Series和Index对象,DataFrame并没有

data=pd.Series(['peter','paul','mary','gUIDO'])
data.str.capitalize()
#对于缺失值,会忽略。
0    Peter
1     Paul
2     Mary
3    Guido
dtype: object
L=str.maketrans('pa','be')
#这里要使用maketrans,参数为字符。
data.str.translate(L)
0    beter
1     beul
2     mery
3    gUIDO
dtype: object
 monte = pd.Series(['Graham Chapman', 'John Cleese', 'Terry Gilliam', 
 'Eric Idle', 'Terry Jones', 'Michael Palin'])
monte
0    Graham Chapman
1       John Cleese
2     Terry Gilliam
3         Eric Idle
4       Terry Jones
5     Michael Palin
dtype: object
monte.str.extract('([a-zA-Z]+)')
#group(0)被忽略
#如果不加(),将会报错。
0
0Graham
1John
2Terry
3Eric
4Terry
5Michael
text='Graham Chapman'
m=re.match('[a-zA-Z]+',text)
m.group(0)
'Graham'
monte.str.extract(r'(^[^AEIOU].*[^aeiou]$)')
#开头和结尾都是辅音字母的表达式。
0
0Graham Chapman
1NaN
2Terry Gilliam
3NaN
4Terry Jones
5Michael Palin
monte.str[0:3]
monte.str.slice(0,3)
0    Gra
1    Joh
2    Ter
3    Eri
4    Ter
5    Mic
dtype: object
monte.str.wrap(3)
0    Gra\nham\nCha\npma\nn
1        Joh\nn C\nlee\nse
2    Ter\nry \nGil\nlia\nm
3            Eri\nc I\ndle
4        Ter\nry \nJon\nes
5    Mic\nhae\nl P\nali\nn
dtype: object
monte.str.repeat(3)
0    Graham ChapmanGraham ChapmanGraham Chapman
1             John CleeseJohn CleeseJohn Cleese
2       Terry GilliamTerry GilliamTerry Gilliam
3                   Eric IdleEric IdleEric Idle
4             Terry JonesTerry JonesTerry Jones
5       Michael PalinMichael PalinMichael Palin
dtype: object

方法分为以下三类:

  • python标准的字符串处理方法。

在这里插入图片描述

  • pandas向量化字符串处理与re库API:在这里插入图片描述
  • pandas其他字符串处理方法:在这里插入图片描述
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值