pandas数据分析-浅谈数据标记

做过了大量的数据分析之后,我发现在做数据分析中数据标记需要经常用到。很多情况下,根据数据分析的目标,直接使用原生数据无法分组汇聚,那就需要对数据进行重新标记。下面就对我遇到的有几种情况说一下我的操作方法:第一种情况,要对数据列中的某些值进行合并分类;第二情况是对包含某些关键词的数据进行二次分类标记。

下面就来谈一谈具体操作:
第一种情况,要对数据列中的某些值进行合并分类:

例如:数据列中的数据值为:一年级1班,一年级2班,一年级3班,二年级1班,二年级2班,三年级1班,三年级2班,三年3班。假如这个时候需要计算每个年级的平均分、最高分、最低分。那么我们就需要对这列数据的值进行处理。像这种比较有规律的数据:

  1. 方法一,可以直接截取数据中的前面三个字符,这样就得到前面的年级,建立新列写入,在进行分组汇聚。
    import pandas as pd
    # 使用字符串切片操作截取前三个字符,并将结果写入新列
    df = df.assign(新列=df['列名'].str[:3])
  2. 方法二,如果数据值没有规律可言,而且长短不一,值的类也比较多,再使用截取的方式就不行了,这时最好的方法,通过分组现将原列中值进行唯一归类导出来,在根据这张表新增一列将需要合并的数据填写相同分类,在将原表与新表进行关联。就以上面的班级为例。这里的班级名称就出现了长短不一的情况,先建立一张新表,这样张可以是归类导出,也可以直接做一个电子表:
    班级名称(旧列)年级(新列)
    一年级1班一年级
    一年级2班一年级
    一年级3班一年级
    二年1班二年级
    二年级2班二年级
    三年年级1班三年级
    三年级2班三年级
    三年级3班三年级

    我们再以班级名称(旧列)对数据进行关联

    import pandas as pd
    
    # old_data 是原表,new_data是我们手动建立的excel表格(当然事前要导入到pandas)。
    
    data = pd.merge(old_data, new_data, on="班级名称", how='left')

    完成之后我们就可以分组汇聚了。

第二情况是对包含某些关键词的数据进行分类标记:

 这种情况也有两种方法,如果要做的数据值类很少,代码很简单,先建立新列并赋予一个值(我一般赋予:其他),然后在根据包含关键字,赋值

# 建立一个新列,暂时全部列为“其他” 
result_df['new_col'] = '其他'

# 筛选满足其中一个关键字的数据,然后赋予新值
result_df.loc[result_df['old_col'].str.contains('关键字1|关键字2|关键字3'), 'new_col'] = '新值1'

result_df.loc[result_df['old_col'].str.contains('关键字4|关键字5|关键字6'), 'new_col'] = '新值2'

做好之后就可以分组汇聚了

第二种方法和上面的一样,建立一个表格来处理:

表格样式如下,导入表后,假设表名为 key_data

关键字分类值
关键字1分类1
关键字2分类1
关键字3分类2
关键字4分类2
关键字5分类2
关键字6分类3
关键字7分类3
关键字8分类3

处理方式采用两个for循环进行标记

old_data['分类'] = '未分类'    # 在要处理的表中建立新列“分类”,并赋值为“未分类”
i = 0
for kw in key_data['关键字']:    # 遍历新做的关键字表格的“关键字列”
    j = 0
    for dis in old_data['含关键字的列']:    # 遍历将处理原表的列
        if kw in dis:    # 如果包含了该关键字,就将“分类值”写入对应的列
            old_data['分类'].iloc[j] = key_data['分类'].iloc[i]
        j += 1
    i += 1

同样,晚上以上步骤就可以分组汇聚了

数据标记如果好了,对于数据的分析可以达到事半功倍的效果,当然这是我个人在做数据分析时总结出来的方法,你可能有更好的方法,也希望有人提出更好的解决方案共享之。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菜鸟杜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值