python爬虫之pandas库——数据清洗

安装pandas库

pip install pandas

pandas库操作文件

已知在本地桌面有一名为Python开发岗位的csv文件(如果是excel文件可以做简单修改即可,道理是通用的)

打开文件:

打开文件并查看文件内容

python 复制代码
from pandas import DataFrame
import pandas as pd
data_csv = pd.read_csv("D:\desk\Python开发岗位.csv",encoding = "ANSI")
data

运行结果如下:

encoding的作用是为了在文本处理或文件操作中使用的字符编码设置。

保存csv文件

python 复制代码
data.to_csv("D:\desk\Python开发岗位1.csv",encoding = "ANSI")
#data是你所要保存的变量名,encoding为了防止乱码
#此方法会保存序列,如果不想保存序列则才有下列保存方式
data.to_csv("D:\desk\Python开发岗位1.csv",encoding = "ANSI",index=False)

缺失值处理:

1)dropna()删除数据中值为空的所在行
python 复制代码
from pandas import DataFrame
import pandas as pd
data_csv = pd.read_csv("D:\desk\Python开发岗位.csv",encoding = "ANSI")
data = data_csv.dropna()
data

运行结果如下:

2)fillna()用其他值代替空值(我一般采用?代替)
python 复制代码
from pandas import DataFrame
import pandas as pd
data_csv = pd.read_csv("D:\desk\Python开发岗位.csv",encoding = "ANSI")
data = data_csv.fillna('?')
data

运行结果如下:

3)用前一个数据代替fillna(method='pad')
python 复制代码
from pandas import DataFrame
import pandas as pd
data_csv = pd.read_csv("D:\desk\Python开发岗位.csv",encoding = "ANSI")
data = data_csv.fillna(method='pad')
data

运行结果如下:(会出现的情况是当缺失值是第一位时,前方无数据可以用来填充)

4)用后一个数据代替fillna(method=bfill)
python 复制代码
from pandas import DataFrame
import pandas as pd
data_csv = pd.read_csv("D:\desk\Python开发岗位.csv",encoding = "ANSI")
data = data_csv.fillna(method="bfill")
data

运行结果如下:(会出现的情况是当缺失值是最后一位时,后方无数据可以用来填充)

5)用平均值来代替空值fillna(mean())

(我自己觉得这种方法适用于例如成绩表,因为mean取平均值要是int类型的数据,所以下面就不进行演示)

python 复制代码
from pandas import DataFrame
import pandas as pd
data_csv = pd.read_csv("D:\desk\Python开发岗位.csv",encoding = "ANSI")
data_csv.fillna(data_csv.mean())

重复值处理

做法是通过duplicated()查看是否有重复值,如果有则通过电容屏_duplicates()方法进行删除

数据处理

这里要做的是将薪资拆分成最低薪资和最高薪资,并用最低薪资进行排序

首先采用正则表达式将x-x千/月中的千/月利用替换成空值进行删除

python 复制代码
import re

salary_str = "5千/月-10千/月"
parts = re.sub(r'千/月', '', salary_str).split('-')
parts

再用split函数进行切割

  • split 是字符串对象的一个方法,用于将字符串分割成一个列表。
  • '-' 是分割符,意味着 split 方法会在每个 - 字符处将字符串分割成多个部分。

而排序则使用sort_values(by='你想以哪一列为依据')注意:sort默认排序是从小到大升序

python 复制代码
from pandas import DataFrame
import pandas as pd
import re
data_csv = pd.read_csv("D:\desk\Python开发岗位2.csv",encoding = "ANSI")
salary_column = '薪资'  # 根据您的CSV文件实际情况修改列名

# 使用正则表达式替换'千/月'为空字符串
# 假设薪资的格式是'数字-数字千/月'
def parse_salary(salary_str):
    # 移除'千/月'并分割字符串
    parts = re.sub(r'千/月', '', salary_str).split('-')
    if len(parts) == 2:
        # 将字符串转换为整数并乘以1000(因为'千'等于1000)
        min_salary = float (parts[0]) * 1000
        max_salary = float (parts[1]) * 1000
        return min_salary, max_salary
    else:
        # 如果格式不正确,返回NaN
        return None, None
data_csv[['最低薪资', '最高薪资']] = pd.DataFrame(data_csv[salary_column].apply(parse_salary).tolist(), index=data_csv.index)
data = data_csv
data1=data.sort_values(by='最低薪资')

日期处理

当一个文件中日期格式不统一可能存在2023/1/8、20231021、10072022等情况

python 复制代码
date_column = '发布日期'

# 定义一个函数来解析不同格式的日期字符串
def parse_date(date_str):
    # 尝试不同的日期格式
    #将所有出现的可能都罗列出来
    formats = ['%Y%m%d','%d%m%Y','%Y/%m/%d','%m/%d/%Y']  
    for fmt in formats:
        try:
            return pd.to_datetime(date_str, format=fmt)
        except ValueError:
            # 如果当前格式解析失败,则继续尝试下一个格式
            continue
    # 如果所有格式都解析失败,则返回原始字符串或None
    return None  # 或者返回 date_str

# 应用parse_date函数到发布日期列
data_csv[date_column] = data_csv[date_column].apply(parse_date)

以上只列举了四种情况,可根据自己的实际情况进行增加或删减

对于Python本人也只是初学,欢迎各位学者一起讨论一起学习,如果文章中有错误之处还请指正!

相关推荐
2301_813599552 小时前
Go语言怎么做秒杀系统_Go语言秒杀系统实战教程【实用】
jvm·数据库·python
--fancy6 小时前
股票预测情感分析研究案例分析
python
shughui6 小时前
PyCharm 完整教程(旧版本卸载+旧/新版本下载安装+基础使用,2026最新版附安装包)
ide·python·pycharm
小糖学代码7 小时前
LLM系列:1.python入门:15.JSON 数据处理与操作
开发语言·python·json·aigc
yejqvow127 小时前
CSS如何控制placeholder文字的颜色_使用--placeholder伪元素
jvm·数据库·python
m0_743623927 小时前
HTML怎么创建多语言切换器_HTML语言选择下拉结构【指南】
jvm·数据库·python
pele7 小时前
Angular 表单中基于下拉选择动态启用字段必填校验的完整实现
jvm·数据库·python
HHHHH1010HHHHH7 小时前
Redis怎样判断节点是否主观下线_哨兵基于down-after-milliseconds参数的心跳超时判定
jvm·数据库·python
小白学大数据7 小时前
现代Python爬虫开发范式:基于Asyncio的高可用架构实战
开发语言·爬虫·python·架构
qq_654366988 小时前
CSS如何处理@import样式表的嵌套加载_评估递归对加载的影响
jvm·数据库·python