百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程字典 > 正文

Python CSV 和 JSON 格式高级处理(上)

toyiye 2024-06-21 11:54 11 浏览 0 评论

CSV(Comma-Separated Values)和 JSON(JavaScript Object Notation)是两种常见的数据格式,它们在数据交换和存储中都有着广泛的应用。CSV 是一种基于纯文本的表格格式,通常用于表示简单的表格数据;JSON 则是一种轻量级的数据交换格式,用于表示复杂的结构化数据。

在实际应用中,我们经常需要对 CSV 和 JSON 数据进行高级处理,以获得更有用的信息或更好的数据分析结果。例如,我们可能需要从一个大型的数据集中提取特定的数据,过滤掉不需要的信息,或者将数据转换为其他格式。这些操作需要使用一些高级的技术和工具来完成。

如何在 Python 中读取和写入 CSV 和 JSON 文件

在 Python 中,我们可以使用内置的 csv 和 json 模块来读取和写入 CSV 和 JSON 文件。csv 模块提供了一组函数来处理 CSV 格式的数据,如 csv.reader()、csv.writer() 等;json 模块则提供了一组函数来解析和生成 JSON 格式的数据,如 json.loads()、json.dumps() 等。

下面是一个示例代码,演示如何使用 csv 和 json 模块读取和写入 CSV 和 JSON 文件:

import csv
import json

# 读取 CSV 文件
with open('data.csv', 'r') as f:
    reader = csv.DictReader(f)
    for row in reader:
        print(row)

# 写入 CSV 文件
with open('data.csv', 'w', newline='') as f:
    fieldnames = ['name', 'age']
    writer = csv.DictWriter(f, fieldnames=fieldnames)
    writer.writeheader()
    writer.writerow({'name': 'Alice', 'age': 23})
    writer.writerow({'name': 'Bob', 'age': 30})

# 读取 JSON 文件
with open('data.json', 'r') as f:
    data = json.load(f)
    print(data)

# 写入 JSON 文件
data = [{'name': 'Alice', 'age': 23}, {'name': 'Bob', 'age': 30}]
with open('data.json', 'w') as f:
    json.dump(data, f)

在这个例子中,我们首先使用 csv.DictReader() 函数读取一个名为 data.csv 的 CSV 文件,并将其转换为 Python 字典类型。然后,我们又使用 csv.DictWriter() 函数创建一个新的 CSV 文件,并向其中写入一些数据。接着,我们使用 json.load() 函数读取一个名为 data.json 的 JSON 文件,并将其转换为 Python 对象。最后,我们又使用 json.dump() 函数将 Python 对象写入到一个名为 data.json 的 JSON 文件中。

常见的数据处理操作(如排序、过滤、分析等)

除了读取和写入 CSV 和 JSON 文件之外,我们还需要进行一些常见的数据处理操作,如排序、过滤、分析等。在 Python 中,我们可以使用内置的列表和字典类型,以及一些特殊的数据处理工具来完成这些操作。

排序

在 Python 中,我们可以使用 sorted() 函数对列表进行排序,或者使用列表类型的 sort() 方法对列表进行就地排序。例如:

data = [{'name': 'Alice', 'age': 23}, {'name': 'Bob', 'age': 30}]
# 按年龄升序排序
sorted_data = sorted(data, key=lambda x: x['age'])
# 就地按年龄降序排序
data.sort(key=lambda x: x['age'], reverse=True)

在这个例子中,我们首先定义了一个包含两个字典元素的列表 data。然后,我们又分别使用 sorted() 函数和 sort() 方法对列表 data 进行排序操作。在这里,我们使用了一个 lambda 函数来指定排序的关键字,也就是每个字典元素中的 'age' 值。


过滤

在 Python 中,我们可以使用列表推导式、filter() 函数等方式对列表进行过滤操作。例如:

data = [{'name': 'Alice', 'age': 23}, {'name': 'Bob', 'age': 30}]
# 列表推导式实现过滤
filtered_data = [d for d in data if d['age'] < 30]
# filter() 函数实现过滤
filtered_data = list(filter(lambda x: x['age'] < 30, data))

在这个例子中,我们同样定义了一个包含两个字典元素的列表 data。然后,我们使用列表推导式和 filter() 函数分别对列表 data 进行过滤操作,只保留年龄小于 30 的字典元素。

分析

在Python中,我们可以使用 pandas 等数据分析库对 CSV 和 JSON 数据进行更加复杂的分析操作。例如:

import pandas as pd

# 读取 CSV 文件并进行分析
data = pd.read_csv('data.csv')
# 输出前 5 行数据
print(data.head())
# 对年龄字段进行统计分析
print(data['age'].describe())

# 读取 JSON 文件并进行分析
with open('data.json', 'r') as f:
    data = json.load(f)
# 转换为 pandas DataFrame 格式
df = pd.DataFrame(data)
# 输出前 5 行数据
print(df.head())
# 对年龄字段进行统计分析
print(df['age'].describe())

在这个例子中,我们首先使用 pandas 库中的 read_csv() 函数和 JSON 模块中的 load() 函数分别读取一个名为 data.csv 和 data.json 的文件,并将其转换为 pandas DataFrame 格式。然后,我们又分别对 DataFrame 中的数据进行了一些简单的分析操作,如输出前 5 行数据、对年龄字段进行统计分析等。

示例代码

下面是一个完整的示例代码,演示了如何对 CSV 和 JSON 文件进行高级操作:


import csv
import json
import pandas as pd

# 读取 CSV 文件
with open('data.csv', 'r') as f:
    reader = csv.DictReader(f)
    for row in reader:
        print(row)

# 写入 CSV 文件
with open('data.csv', 'w', newline='') as f:
    fieldnames = ['name', 'age']
    writer = csv.DictWriter(f, fieldnames=fieldnames)
    writer.writeheader()
    writer.writerow({'name': 'Alice', 'age': 23})
    writer.writerow({'name': 'Bob', 'age': 30})

# 读取 JSON 文件
with open('data.json', 'r') as f:
    data = json.load(f)
    print(data)

# 写入 JSON 文件
data = [{'name': 'Alice', 'age': 23}, {'name': 'Bob', 'age': 30}]
with open('data.json', 'w') as f:
    json.dump(data, f)

# 排序
data = [{'name': 'Alice', 'age': 23}, {'name': 'Bob', 'age': 30}]
# 按年龄升序排序
sorted_data = sorted(data, key=lambda x: x['age'])
# 就地按年龄降序排序
data.sort(key=lambda x: x['age'], reverse=True)

# 过滤
data = [{'name': 'Alice', 'age': 23}, {'name': 'Bob', 'age': 30}]
# 列表推导式实现过滤
filtered_data = [d for d in data if d['age'] < 30]
# filter() 函数实现过滤
filtered_data = list(filter(lambda x: x['age'] < 30, data))

# 分析
# 读取 CSV 文件并进行分析
data = pd.read_csv('data.csv')
# 输出前 5 行数据
print(data.head())
# 对年龄字段进行统计分析
print(data['age'].describe())

# 读取 JSON 文件并进行分析
with open('data.json', 'r') as f:
    data = json.load(f)
# 转换为 pandas DataFrame 格式
df = pd.DataFrame(data)
# 输出前 5 行数据
print(df.head())
# 对年龄字段进行统计分析
print(df['age'].describe())

在这个示例代码中,我们首先使用 csv 和 json 模块读取和写入了一个名为 data.csv 和 data.json 的文件。接着,我们又使用 Python 内置的函数和工具对 CSV 和 JSON 数据进行了一些常见的处理操作,如排序、过滤和分析等。最后,我们还使用了 pandas 库对 CSV 和 JSON 数据进行了更加复杂的分析操作。

数据清洗和转换


数据清洗和转换的必要性和应用场景

在实际数据分析中,数据的质量和准确性对最终的结果影响至关重要。因此,在进行数据分析之前,我们需要对原始数据进行一些预处理工作,以确保数据的完整性、一致性和准确性。

数据清洗和转换是数据预处理过程中最为重要的环节之一。它包括处理缺失值、异常值、重复值等问题,将数据从一种格式转换为另一种格式,或者将数据进行标准化、归一化等操作。

数据清洗和转换的应用场景非常广泛,比如:

  • 处理来自不同来源、格式不统一的数据
  • 清除无效、冗余或者错误的数据
  • 处理缺失值、异常值、重复值等问题
  • 将数据转换为适合特定分析算法的格式
  • 通过标准化、归一化等操作提高数据的可比性和可解释性

如何使用 Python 对 CSV 和 JSON 数据进行清洗和转换

在 Python 中,我们可以使用 pandas 库对 CSV 和 JSON 数据进行清洗和转换。pandas 是一个强大的数据处理和数据分析库,提供了一组丰富的函数和工具,可以方便地进行数据清洗、数据转换、数据分析和数据可视化等操作。

下面是一个示例代码,演示了如何使用 pandas 对 CSV 和 JSON 数据进行清洗和转换:

import pandas as pd

# 读取 CSV 文件并进行清洗和转换
data = pd.read_csv('data.csv')
# 处理缺失值
data.dropna(inplace=True)
# 处理异常值
data = data[(data['age'] >= 0) & (data['age'] <= 120)]
# 处理重复值
data.drop_duplicates(subset=['name'], inplace=True)
# 将数据转换为特定格式
data['age_category'] = pd.cut(data['age'], bins=[0, 18, 30, 50, 100], labels=['child', 'young', 'middle', 'old'])

# 读取 JSON 文件并进行清洗和转换
with open('data.json', 'r') as f:
    data = json.load(f)
# 转换为 pandas DataFrame 格式
df = pd.DataFrame(data)
# 处理缺失值
df.dropna(inplace=True)
# 处理异常值
df = df[(df['age'] >= 0) & (df['age'] <= 120)]
# 处理重复值
df.drop_duplicates(subset=['name'], inplace=True)
# 将数据转换为特定格式
df['age_category'] = pd.cut(df['age'], bins=[0, 18, 30, 50, 100], labels=['child', 'young', 'middle', 'old'])

在这个示例代码中,我们首先使用 pandas 库中的 read_csv() 函数和 JSON 模块中的 load() 函数读取一个名为 data.csv 和 data.json 的文件,并将其转换为 pandas DataFrame 格式。然后,我们又使用了一些 pandas 中的函数和工具对数据进行了清洗和转换操作,如处理缺失值、异常值、重复值等问题,将数据转换为特定格式等。

实例代码


下面是一个完整的示例代码,演示了如何在 Python 中对 CSV 和 JSON 数据进行数据清洗和转换:


import csv
import json
import pandas as pd

# 读取 CSV 文件并进行清洗和转换
with open('data.csv', 'r') as f:
    reader = csv.DictReader(f)
    data = [row for row in reader]
df = pd.DataFrame(data)
# 处理缺失值
df.dropna(inplace=True)
# 处理异常值
df = df[(df['age'] >= 0) & (df['age'] <= 120)]
# 处理重复值
df.drop_duplicates(subset=['name'], inplace=True)
# 将数据转换为特定格式
df['age_category'] = pd.cut(df['age'], bins=[0, 18, 30, 50, 100], labels=['child', 'young', 'middle', 'old'])

# 写入 CSV 文件
df.to_csv('cleaned_data.csv', index=False)

# 读取 JSON 文件并进行清洗和转换
with open('data.json', 'r') as f:
    data = json.load(f)
df = pd.DataFrame(data)
# 处理缺失值
df.dropna(inplace=True)
# 处理异常值
df = df[(df['age'] >= 0) & (df['age'] <= 120)]
# 处理重复值
df.drop_duplicates(subset=['name'], inplace=True)
# 将数据转换为特定格式
df['age_category'] = pd.cut(df['age'], bins=[0, 18, 30, 50, 100], labels=['child', 'young', 'middle', 'old'])

# 写入 JSON 文件
with open('cleaned_data.json', 'w') as f:
    json.dump(df.to_dict(orient='records'), f)

在这个示例代码中,我们首先使用 csv 和 json 模块读取了一个名为 data.csv 和 data.json 的文件,并将其转换为 pandas DataFrame 格式。然后,我们又使用了一些 pandas 中的函数和工具对数据进行了清洗和转换操作,如处理缺失值、异常值、重复值等问题,将数据转换为特定格式等。最后,我们又使用 csv 和 json 模块将清洗后的数据写入到了两个不同的文件中,分别是 cleaned_data.csv 和 cleaned_data.json。

相关推荐

为何越来越多的编程语言使用JSON(为什么编程)

JSON是JavascriptObjectNotation的缩写,意思是Javascript对象表示法,是一种易于人类阅读和对编程友好的文本数据传递方法,是JavaScript语言规范定义的一个子...

何时在数据库中使用 JSON(数据库用json格式存储)

在本文中,您将了解何时应考虑将JSON数据类型添加到表中以及何时应避免使用它们。每天?分享?最新?软件?开发?,Devops,敏捷?,测试?以及?项目?管理?最新?,最热门?的?文章?,每天?花?...

MySQL 从零开始:05 数据类型(mysql数据类型有哪些,并举例)

前面的讲解中已经接触到了表的创建,表的创建是对字段的声明,比如:上述语句声明了字段的名称、类型、所占空间、默认值和是否可以为空等信息。其中的int、varchar、char和decimal都...

JSON对象花样进阶(json格式对象)

一、引言在现代Web开发中,JSON(JavaScriptObjectNotation)已经成为数据交换的标准格式。无论是从前端向后端发送数据,还是从后端接收数据,JSON都是不可或缺的一部分。...

深入理解 JSON 和 Form-data(json和formdata提交区别)

在讨论现代网络开发与API设计的语境下,理解客户端和服务器间如何有效且可靠地交换数据变得尤为关键。这里,特别值得关注的是两种主流数据格式:...

JSON 语法(json 语法 priority)

JSON语法是JavaScript语法的子集。JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔花括号保存对象方括号保存数组JS...

JSON语法详解(json的语法规则)

JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔大括号保存对象中括号保存数组注意:json的key是字符串,且必须是双引号,不能是单引号...

MySQL JSON数据类型操作(mysql的json)

概述mysql自5.7.8版本开始,就支持了json结构的数据存储和查询,这表明了mysql也在不断的学习和增加nosql数据库的有点。但mysql毕竟是关系型数据库,在处理json这种非结构化的数据...

JSON的数据模式(json数据格式示例)

像XML模式一样,JSON数据格式也有Schema,这是一个基于JSON格式的规范。JSON模式也以JSON格式编写。它用于验证JSON数据。JSON模式示例以下代码显示了基本的JSON模式。{"...

前端学习——JSON格式详解(后端json格式)

JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScriptProgrammingLa...

什么是 JSON:详解 JSON 及其优势(什么叫json)

现在程序员还有谁不知道JSON吗?无论对于前端还是后端,JSON都是一种常见的数据格式。那么JSON到底是什么呢?JSON的定义...

PostgreSQL JSON 类型:处理结构化数据

PostgreSQL提供JSON类型,以存储结构化数据。JSON是一种开放的数据格式,可用于存储各种类型的值。什么是JSON类型?JSON类型表示JSON(JavaScriptO...

JavaScript:JSON、三种包装类(javascript 包)

JOSN:我们希望可以将一个对象在不同的语言中进行传递,以达到通信的目的,最佳方式就是将一个对象转换为字符串的形式JSON(JavaScriptObjectNotation)-JS的对象表示法...

Python数据分析 只要1分钟 教你玩转JSON 全程干货

Json简介:Json,全名JavaScriptObjectNotation,JSON(JavaScriptObjectNotation(记号、标记))是一种轻量级的数据交换格式。它基于J...

比较一下JSON与XML两种数据格式?(json和xml哪个好)

JSON(JavaScriptObjectNotation)和XML(eXtensibleMarkupLanguage)是在日常开发中比较常用的两种数据格式,它们主要的作用就是用来进行数据的传...

取消回复欢迎 发表评论:

请填写验证码