爬虫练习之数据整理——基于Pandas

简介: 上一篇->爬虫练习之数据清洗——基于Pandas本次以51Job上在东莞地区爬取的以Java为关键词的招聘数据包括salary company time job_name address字段目的本次数据整理的小目标是将薪资数据拿出来单独处理为...

上一篇->爬虫练习之数据清洗——基于Pandas

本次以51Job上在东莞地区爬取的以Java为关键词的招聘数据
包括salary company time job_name address字段

目的

本次数据整理的小目标是将薪资数据拿出来单独处理为统一的格式, 以便后续的数据统计分析和可视化操作

思路

先来看看数据有多丑

薪资原始数据示例
薪资原始数据示例

可以看到除了常规的几千/月, 还有几万/月, 以及几万/年
不过, 没看到XX以上的数据. 但是, 你还是要考虑到啊

根据数据格式, 可以把薪资拆成两行, 以 - 作为分割点, 然后对数据分情况整理, 根据拆分后数据位置得到底薪和薪资上限

代码

  1. 获取底薪

这里需要分三种情况(实际是四种, 不过XX千/年这种数据并没有出现)
XX千/月, XX万/月, XX万/年
思路是

判断: XX千/月, XX万/月, XX万/年
找到'-'位置
万/月和万/年需要进行转化
得到底薪

如果遇到没有上限的数据, 另外写个判断即可
函数代码如下

# coding=utf-8
def cut_word(word):
    if(word.find('万') == -1):
        # XX千/月
        postion = word.find('-')
        bottomSalary = word[postion-1]
    else:
        if(word.find('年') == -1):
            # XX万/月
            postion = word.find('-')
            bottomSalary = word[postion-1] + '0.0'      
        else:
            # XX万/年
            postion = word.find('-')
            bottomSalary = word[postion-1]
            bottomSalary = str(int(bottomSalary) / 1.2)
    return bottomSalary
  1. 获取薪资上限

获取薪资上限的思路与获取底薪的思路一致, 稍改代码即可
这里有一个中文坑, 在utf-8的编码环境下, 一个中文占3个字节, 所以像'万/年'这些, 要减去7才能得到正确结果, 而不是减去3
这里把两个方法合并于一个函数, 通过变量来获得上下限
考虑到还有0.X这种数字, 使用类似```bottomSalary = word[:(postion)] + '0.0'``这样的代码会出现以下情况

错误示范

函数代码如下

def cut_word(word, method):
    if method == 'bottom':
        if(word.find('万') == -1):
            # XX千/月
            postion = word.find('-')
            bottomSalary = str(float(word[:(postion)]))
        else:
            if(word.find('年') == -1):
                # XX万/月
                postion = word.find('-')
                bottomSalary = str(float(word[:(postion)]) * 10)         
            else:
                # XX万/年
                postion = word.find('-')
                bottomSalary = word[:(postion)]
                bottomSalary = str(int(bottomSalary) / 1.2)
        return bottomSalary
    if method == 'top':
        length = len(word)
        if(word.find('万') == -1):
            # XX千/月
            postion = word.find('-')
            topSalary = str(float(word[(postion+1):(length-7)]))
        else:
            if(word.find('年') == -1):
                # XX万/月
                postion = word.find('-')
                topSalary = str(float(word[(postion+1):(length-7)]) * 10)         
            else:
                # XX万/年
                postion = word.find('-')
                topSalary = word[(postion+1):(length-7)]
                topSalary = str(int(topSalary) / 1.2)
        return topSalary

函数写完验证下结果
这里用到pandas模块的apply方法, 对某一行数据应用自定义函数

# 添加底薪列
df_clean['bottomSalary'] = df_clean.salary.apply(cut_word, method='bottom')
df_clean['topSalary'] = df_clean.salary.apply(cut_word, method='top')
# 选择salary, bottomSalary, topSalary列
df_clean[['salary', 'bottomSalary', 'topSalary']] 

选择与薪水有关的列显示, 可以看到结果符合预期(后两列的单位是K)


  1. 计算平均薪资
df_clean['bottomSalary'] = df_clean['bottomSalary'].astype('float')
df_clean['topSalary'] = df_clean['topSalary'].astype('float')
df_clean['avgSalary'] = df_clean.apply(lambda x : (x.bottomSalary + x.topSalary) / 2, axis = 1)

参考文献
知乎——用pandas进行数据分析实战
https://zhuanlan.zhihu.com/p/27784143
目录
相关文章
|
11天前
|
存储 人工智能 自然语言处理
Pandas数据应用:自然语言处理
本文介绍Pandas在自然语言处理(NLP)中的应用,涵盖数据准备、文本预处理、分词、去除停用词等常见任务,并通过代码示例详细解释。同时,针对常见的报错如`MemoryError`、`ValueError`和`KeyError`提供了解决方案。适合初学者逐步掌握Pandas与NLP结合的技巧。
53 20
|
12天前
|
存储 数据挖掘 计算机视觉
Pandas数据应用:图像处理
Pandas 是一个强大的 Python 数据分析库,主要用于处理结构化数据。尽管它不是专门为图像处理设计的,但可以利用其功能辅助图像处理任务。本文介绍如何使用 Pandas 进行图像处理,包括图像读取、显示、基本操作及常见问题解决方法。通过代码案例解释如何将图像转换为 DataFrame 格式,并探讨数据类型不匹配、内存溢出和颜色通道混淆等问题的解决方案。总结中指出,虽然 Pandas 可作为辅助工具,但在实际项目中建议结合专门的图像处理库如 OpenCV 等使用。
48 18
|
6天前
|
机器学习/深度学习 存储 算法
Pandas数据应用:客户流失预测
本文介绍如何使用Pandas进行客户流失预测,涵盖数据加载、预处理、特征工程和模型训练。通过解决常见问题(如文件路径错误、编码问题、列名不一致等),确保数据分析顺利进行。特征工程中创建新特征并转换数据类型,为模型训练做准备。最后,划分训练集与测试集,选择合适的机器学习算法构建模型,并讨论数据不平衡等问题的解决方案。掌握这些技巧有助于有效应对实际工作中的复杂情况。
123 95
|
9天前
|
机器学习/深度学习 数据采集 JSON
Pandas数据应用:机器学习预处理
本文介绍如何使用Pandas进行机器学习数据预处理,涵盖数据加载、缺失值处理、类型转换、标准化与归一化及分类变量编码等内容。常见问题包括文件路径错误、编码不正确、数据类型不符、缺失值处理不当等。通过代码案例详细解释每一步骤,并提供解决方案,确保数据质量,提升模型性能。
130 88
|
20天前
|
分布式计算 数据可视化 数据挖掘
Pandas数据应用:社交媒体分析
本文介绍如何使用Pandas进行社交媒体数据分析,涵盖数据获取、预处理、探索性分析和建模的完整流程。通过API获取数据并转换为DataFrame格式,处理缺失值和数据类型转换问题。利用Matplotlib等库进行可视化,展示不同类型帖子的数量分布。针对大规模数据集提供内存优化方案,并结合TextBlob进行情感分析。最后总结常见问题及解决方案,帮助读者掌握Pandas在社交媒体数据分析中的应用。
151 96
|
3天前
|
数据采集 存储 供应链
Pandas数据应用:库存管理
本文介绍Pandas在库存管理中的应用,涵盖数据读取、清洗、查询及常见报错的解决方法。通过具体代码示例,讲解如何处理多样数据来源、格式不一致、缺失值和重复数据等问题,并解决KeyError、ValueError等常见错误,帮助提高库存管理效率和准确性。
90 72
|
22天前
|
存储 数据采集 数据可视化
Pandas数据应用:电子商务数据分析
本文介绍如何使用 Pandas 进行电子商务数据分析,涵盖数据加载、清洗、预处理、分析与可视化。通过 `read_csv` 等函数加载数据,利用 `info()` 和 `describe()` 探索数据结构和统计信息。针对常见问题如缺失值、重复记录、异常值等,提供解决方案,如 `dropna()`、`drop_duplicates()` 和正则表达式处理。结合 Matplotlib 等库实现数据可视化,探讨内存不足和性能瓶颈的应对方法,并总结常见报错及解决策略,帮助提升电商企业的数据分析能力。
129 73
|
14天前
|
数据采集 机器学习/深度学习 搜索推荐
Pandas数据应用:推荐系统
在数字化时代,推荐系统是互联网公司的重要组成部分,Pandas作为Python的强大数据分析库,在数据预处理和特征工程中发挥关键作用。常见问题包括缺失值、重复值处理及数据类型转换,解决方案分别为使用`fillna()`、`drop_duplicates()`和`astype()`等函数。常见报错如KeyError、ValueError和MemoryError可通过检查列名、确保数据格式正确及分块读取数据等方式解决。合理运用Pandas工具,可为构建高效推荐系统奠定坚实基础。
49 18
Pandas数据应用:推荐系统
|
7天前
|
数据采集 存储 算法
Pandas数据应用:市场篮子分析
市场篮子分析是一种用于发现商品间关联关系的数据挖掘技术,广泛应用于零售业。Pandas作为强大的数据分析库,在此领域具有显著优势。本文介绍了市场篮子分析的基础概念,如事务、项集、支持度、置信度和提升度,并探讨了数据预处理、算法选择、参数设置及结果解释中的常见问题与解决方案,帮助用户更好地进行市场篮子分析,为企业决策提供支持。
52 29
|
2天前
|
数据采集 供应链 数据可视化
Pandas数据应用:供应链优化
在当今全球化的商业环境中,供应链管理日益复杂。Pandas作为Python的强大数据分析库,能有效处理库存、物流和生产计划中的大量数据。本文介绍如何用Pandas优化供应链,涵盖数据导入、清洗、类型转换、分析与可视化,并探讨常见问题及解决方案,帮助读者在供应链项目中更加得心应手。
33 21

热门文章

最新文章