【Pandas】数据处理方法

1.数据拆分

pandas.Series.str.extract()

Series.str.extract(pat, flags=0, expand=True)[source]

extract(提取)

参数

pat: 带分组的正则表达式。

flag: re模块中的标志,例如re.IGNORECASE,修改正则表达式匹配的大小写、空格等

expand: 默认为True,如果为 True,则返回每个捕获组一列的 DataFrame。如果为 False,则如果有一个捕获组则返回 Series/Index,如果有多个捕获组则返回 DataFrame

例子
jobs_df['site'].head()
0      北京 海淀区 西山
1     北京 朝阳区 酒仙桥
2     北京 朝阳区 十里堡
3    北京 石景山区 八宝山
4     北京 朝阳区 三元桥
Name: site, dtype: object

使用extract提取地址关键词,这里的?P<>是为组命名,这样就能自动给定columns

jobs_df['site'].str.extract(r"(?P<city>\S{,})\s{0,3}(?P<part>\S{,})\s{0,3}(?P<street>\S{,})").head()
	city	part	street
0	北京	海淀区	西山
1	北京	朝阳区	酒仙桥
2	北京	朝阳区	十里堡
3	北京	石景山区	八宝山
4	北京	朝阳区	三元桥

2.数据分箱

pandas.cut

pandas.cut(x, bins, right=True, 
        labels=None, retbins=False, precision=3, 
        include_lowest=False, duplicates='raise', 
        ordered=True)
参数

x: 要分箱的一维数组或者序列。

bins: 整数或者序列,定义分段的边界。整数表示等分的段数,序列表示每个分段的具体边界。

right: 为True时,包括右边界,但不包括下个区间的左边界;为False时 , 包括左边界,但不包括右边界。默认为True。如果right = True, 则 bins = [1, 2, 3, 4] 箱子为 (1,2], (2,3], (3,4];反之箱子为[1,2), [2, 3), [3, 4)。

当right=True,2应该被分到第一个箱子;当right=false,2应该被分到第二个箱子。

labels: 箱子的标签

例子
bj_df.head()
	        姓名	出生年月	            单位名称	           积分分值 年龄
公示编号					
202300001	张浩	1977-02-01	北京首钢股份有限公司	        140.05	45
202300002	冯云	1982-02-01	中国人民解放军空军二十三厂	134.29	40
202300003	王天东	1975-01-01	中建二局第三建筑工程有限公司	133.63	48
202300004	陈军	1976-07-01	中建二局第三建筑工程有限公司	133.29	46
202300005	樊海瑞	1981-06-01	中国民生银行股份有限公司	    132.46	41
bj_df['年龄段'] = 
pd.cut(x=bj_df.年龄,
      bins=[35,40,45,50,60],right=False,
      labels=['35-40','40-45','45-50','50-60'])


	公示编号  	姓名	出生年月	          单位名称	           积分分值 age  box
0	202300001	张浩	1977-02-01	北京首钢股份有限公司	        140.05	45	40-45
1	202300002	冯云	1982-02-01	中国人民解放军空军二十三厂	134.29	40	35-40
2	202300003	王天东	1975-01-01	中建二局第三建筑工程有限公司	133.63	48	45-50
3	202300004	陈军	1976-07-01	中建二局第三建筑工程有限公司	133.29	46	45-50
4	202300005	樊海瑞	1981-06-01	中国民生银行股份有限公司	    132.46	41	40-45

# 与bins=4的结果一样
bj_df['box'] = pd.cut(bj_df['age'], 
       bins=4, right = False, 
       labels=['35-40','40-45','45-50','50-60'])
bj_df.head()

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值