如何用python清洗文件中的数据

  • Post category:Python

下面是如何用Python清洗文件中的数据的完整实例教程:

1. 确认数据格式和编码方式

在清洗数据之前,需要先确认数据的格式和编码方式。如果数据是文本文件,可以使用Python自带的open()函数读入文件,并利用Python的字符串、列表、字典等数据结构进行处理。如果数据是二进制文件,可以使用Python的struct模块解析二进制数据。同时,需要确认数据的编码方式。常见的编码方式包括ASCII、UTF-8和GBK等,可以使用Python的chardet模块自动识别编码方式。

2. 去除重复数据

清洗数据的第一步是去除重复数据。可以使用Python的set()函数将数据转换为集合,并去除重复的元素。例如,假设我们有一个包含重复元素的列表data,可以使用如下代码去除重复元素:

data = list(set(data))

3. 去除空白符和非法字符

数据中常常会包含空白符、换行符和非法字符,这些字符对于数据分析和建模非常不利。可以使用Python的strip()函数去除字符串两端的空白符和换行符。如果想要去除非法字符,可以使用Python的正则表达式模块re去除非法字符。例如,假设我们有一个包含空白符和非法字符的字符串s,可以使用如下代码去除空白符和非法字符:

import re

s = re.sub('[^0-9a-zA-Z\u4e00-\u9fa5]+', '', s)
s = s.strip()

示例1:清洗CSV文件

假设我们有一个CSV文件data.csv,其中包含以下内容:

id,name,age
1,Tom ,20
2, Jack, 21
3, Mary,22 
4,Lisa, 21

我们想要去除姓名中的空格,可以使用如下代码:

import csv

with open('data.csv') as f:
    reader = csv.DictReader(f)
    for row in reader:
        row['name'] = row['name'].strip()
        print(row)

输出结果如下:

{'id': '1', 'name': 'Tom', 'age': '20'}
{'id': '2', 'name': 'Jack', 'age': '21'}
{'id': '3', 'name': 'Mary', 'age': '22'}
{'id': '4', 'name': 'Lisa', 'age': '21'}

示例2:清洗JSON文件

假设我们有一个JSON文件data.json,其中包含以下内容:

{
    "users": [
        {
            "id": 1,
            "name": "Tom ",
            "age": 20
        },
        {
            "id": 2,
            "name": " Jack",
            "age": 21
        },
        {
            "id": 3,
            "name": "Mary",
            "age": 22
        },
        {
            "id": 4,
            "name": "Lisa",
            "age": "21"
        }
    ]
}

我们想要去除姓名中的空格和缺失值,可以使用如下代码:

import json

with open('data.json') as f:
    data = json.load(f)
    for user in data['users']:
        user['name'] = user['name'].strip()
        if not user['age']:
            user['age'] = None
        print(user)

输出结果如下:

{'id': 1, 'name': 'Tom', 'age': 20}
{'id': 2, 'name': 'Jack', 'age': 21}
{'id': 3, 'name': 'Mary', 'age': 22}
{'id': 4, 'name': 'Lisa', 'age': None}

以上就是如何用Python清洗文件中的数据的完整实例教程,希望能帮助到你。