用 Python 处理 CSV 和 Excel 文件

💖 欢迎来到我的博客! 非常高兴能在这里与您相遇。在这里,您不仅能获得有趣的技术分享,还能感受到轻松愉快的氛围。无论您是编程新手,还是资深开发者,都能在这里找到属于您的知识宝藏,学习和成长。

🔍 博客内容包括:

  • Java核心技术与微服务:涵盖Java基础、JVM、并发编程、Redis、Kafka、Spring等,帮助您全面掌握企业级开发技术。
  • 大数据技术:涵盖Hadoop(HDFS)、Hive、Spark、Flink、Kafka、Redis、ECharts、Zookeeper等相关技术。
  • 开发工具:分享常用开发工具(IDEA、Git、Mac、Alfred、Typora等)的使用技巧,提升开发效率。
  • 数据库与优化:总结MySQL及其他常用数据库技术,解决实际工作中的数据库问题。
  • Python与大数据:专注于Python编程语言的深度学习,数据分析工具(如Pandas、NumPy)和大数据处理技术,帮助您掌握数据分析、数据挖掘、机器学习等技术。
  • 数据结构与算法:总结数据结构与算法的核心知识,提升编程思维,帮助您应对大厂面试挑战。

🌟 我的目标:持续学习与总结,分享技术心得与解决方案,和您一起探索技术的无限可能!在这里,我希望能与您共同进步,互相激励,成为更好的自己。

📣 欢迎订阅本专栏,与我一起在这个知识的海洋中不断学习、分享和成长!💻🚀


📍版权声明:本博客所有内容均为原创,遵循CC 4.0 BY-SA协议,转载请注明出处。

目录

1. CSV 文件概述和处理方法

1.1 CSV 文件格式的基本介绍

1.2 使用 Python 内置 csv 模块处理 CSV 文件

读取 CSV 文件

 写入 CSV 文件

使用 DictReader 和 DictWriter

1.3 使用 pandas 处理 CSV 文件

读取 CSV 文件

写入 CSV 文件

数据过滤和操作

2. Excel 文件概述和处理方法

2.1 Excel 文件格式的基本介绍

2.2 使用 openpyxl 处理 Excel 文件

读取 Excel 文件

写入 Excel 文件

设置单元格样式

2.3 使用 xlrd 和 xlwt 处理 Excel 文件

读取 Excel 文件(xlrd)

写入 Excel 文件(xlwt)

2.4 使用 pandas 处理 Excel 文件

读取 Excel 文件

写入 Excel 文件

3. CSV 与 Excel 文件的比较与选择

3.1 CSV 与 Excel 的异同

3.2 选择合适的文件格式

3.3 优化大数据量文件的读取与写入

4. 性能优化和进阶技巧

4.1 使用 pandas 优化大文件的读取与处理

4.2 异常数据的清洗与处理

4.3 批量处理 CSV 和 Excel 文件

5. 常见问题与错误处理

5.1 处理文件编码问题

5.2 数据缺失值的处理

5.3 Excel 文件读写中的常见错误


1. CSV 文件概述和处理方法

1.1 CSV 文件格式的基本介绍

CSV(Comma-Separated Values,逗号分隔值)文件是一种简单的文本文件格式,用于存储表格数据,其中每一行代表一条记录,行中的每个字段通过逗号分隔。CSV 文件通常用于数据交换和存储。它的优点是简单、轻量、易于读取和写入,缺点是无法存储复杂的格式和公式。

例如,一个典型的 CSV 文件内容如下:

Name,Age,Gender
Alice,25,Female
Bob,30,Male
Charlie,35,Male

1.2 使用 Python 内置 csv 模块处理 CSV 文件

Python 提供了内置的 csv 模块,用于读取和写入 CSV 文件。它提供了简单的接口,可以直接与文件进行交互。

读取 CSV 文件
import csv

# 打开 CSV 文件
with open('example.csv', mode='r') as file:
    reader = csv.reader(file)
    for row in reader:
        print(row)
 写入 CSV 文件
import csv

# 数据准备
data = [['Name', 'Age', 'Gender'], ['Alice', 25, 'Female'], ['Bob', 30, 'Male']]

# 写入 CSV 文件
with open('output.csv', mode='w', newline='') as file:
    writer = csv.writer(file)
    writer.writerows(data)
使用 DictReaderDictWriter

对于键值对的操作,可以使用 DictReaderDictWriter,它们允许以字典的形式读取和写入数据。

import csv

# 读取 CSV 文件为字典
with open('example.csv', mode='r') as file:
    reader = csv.DictReader(file)
    for row in reader:
        print(row)

# 写入 CSV 文件为字典
data = [{'Name': 'Alice', 'Age': 25, 'Gender': 'Female'}, {'Name': 'Bob', 'Age': 30, 'Gender': 'Male'}]
with open('output.csv', mode='w', newline='') as file:
    fieldnames = ['Name', 'Age', 'Gender']
    writer = csv.DictWriter(file, fieldnames=fieldnames)
    writer.writeheader()
    writer.writerows(data)

1.3 使用 pandas 处理 CSV 文件

pandas 是一个强大的数据分析库,提供了更高级和方便的 CSV 文件处理功能。它使用 read_csvto_csv 方法,可以直接将 CSV 文件读取为 DataFrame 数据结构,并支持复杂的数据操作。

读取 CSV 文件
import pandas as pd

# 读取 CSV 文件为 DataFrame
df = pd.read_csv('example.csv')
print(df)
写入 CSV 文件
import pandas as pd

# 数据准备
data = {'Name': ['Alice', 'Bob'], 'Age': [25, 30], 'Gender': ['Female', 'Male']}
df = pd.DataFrame(data)

# 写入 CSV 文件
df.to_csv('output.csv', index=False)
数据过滤和操作
# 过滤年龄大于 30 的行
filtered_df = df[df['Age'] > 30]
print(filtered_df)

# 添加新列
df['Country'] = ['USA', 'UK']
print(df)

2. Excel 文件概述和处理方法

2.1 Excel 文件格式的基本介绍

Excel 文件是一种用于电子表格的文件格式,支持表格数据、公式、图表和其他格式化内容。Excel 文件有两种常见的格式:

  • .xls:Excel 97-2003 的文件格式,基于二进制格式。
  • .xlsx:Excel 2007 及以后的版本使用的 XML 基础格式,支持更多功能。

2.2 使用 openpyxl 处理 Excel 文件

openpyxl 是 Python 用于读取和写入 Excel .xlsx 文件的第三方库。

读取 Excel 文件
from openpyxl import load_workbook

# 加载 Excel 文件
wb = load_workbook('example.xlsx')
sheet = wb.active

# 读取单元格数据
for row in sheet.iter_rows(values_only=True):
    print(row)
写入 Excel 文件
from openpyxl import Workbook

# 创建一个新的 Excel 文件
wb = Workbook()
sheet = wb.active

# 写入数据
sheet['A1'] = 'Name'
sheet['A2'] = 'Alice'
sheet['B1'] = 'Age'
sheet['B2'] = 25

# 保存 Excel 文件
wb.save('output.xlsx')
设置单元格样式
from openpyxl.styles import Font, Color, Alignment

# 设置字体和对齐
sheet['A1'].font = Font(bold=True, color="FF0000")
sheet['A1'].alignment = Alignment(horizontal="center")

wb.save('styled_output.xlsx')

2.3 使用 xlrdxlwt 处理 Excel 文件

xlrd 用于读取 .xls 文件,而 xlwt 用于写入 .xls 文件。

读取 Excel 文件(xlrd
import xlrd

# 打开 Excel 文件
workbook = xlrd.open_workbook('example.xls')
sheet = workbook.sheet_by_index(0)

# 读取数据
for row in range(sheet.nrows):
    print(sheet.row_values(row))
写入 Excel 文件(xlwt
import xlwt

# 创建 Excel 文件
workbook = xlwt.Workbook()
sheet = workbook.add_sheet('Sheet1')

# 写入数据
sheet.write(0, 0, 'Name')
sheet.write(0, 1, 'Age')
sheet.write(1, 0, 'Alice')
sheet.write(1, 1, 25)

# 保存 Excel 文件
workbook.save('output.xls')

2.4 使用 pandas 处理 Excel 文件

pandas 同样提供了强大的 Excel 文件处理功能,通过 read_excelto_excel 方法,可以方便地读取和写入 Excel 文件。

读取 Excel 文件
import pandas as pd

# 读取 Excel 文件为 DataFrame
df = pd.read_excel('example.xlsx')
print(df)
写入 Excel 文件
import pandas as pd

# 数据准备
data = {'Name': ['Alice', 'Bob'], 'Age': [25, 30], 'Gender': ['Female', 'Male']}
df = pd.DataFrame(data)

# 写入 Excel 文件
df.to_excel('output.xlsx', index=False)

3. CSV 与 Excel 文件的比较与选择

3.1 CSV 与 Excel 的异同

  • CSV 文件:简单的文本文件,易于存储和传输,但无法保存复杂的格式、公式和图表。适用于存储纯数据。
  • Excel 文件:支持丰富的格式、公式、图表等功能。适用于需要复杂格式和计算的场景。

3.2 选择合适的文件格式

  • 数据量较小且不需要复杂格式:选择 CSV 格式。
  • 需要支持公式、图表或复杂格式:选择 Excel 格式。

3.3 优化大数据量文件的读取与写入

  • 使用 pandaschunksize 参数分批读取大文件。
  • 使用 openpyxl 时,避免一次性加载整个工作簿,分批加载和保存数据。

4. 性能优化和进阶技巧

4.1 使用 pandas 优化大文件的读取与处理

对于大数据量的文件,pandas 提供了 chunksize 参数,允许按块读取 CSV 或 Excel 文件,从而避免一次性将所有数据加载到内存中。

import pandas as pd

chunk_size = 10000
chunks = pd.read_csv('large_file.csv', chunksize=chunk_size)
for chunk in chunks:
    # 处理每一块数据
    print(chunk.head())

4.2 异常数据的清洗与处理

处理 CSV 或 Excel 文件时,常常会遇到缺失值、重复数据等问题。使用 pandas 可以方便地进行数据清洗:

# 去除缺失值
df.dropna(inplace=True)

# 填充缺失值
df.fillna(0, inplace=True)

# 去除重复数据
df.drop_duplicates(inplace=True)

4.3 批量处理 CSV 和 Excel 文件

对于多个文件的处理,可以使用 os 模块遍历文件夹,批量读取和写入文件。

import os
import pandas as pd

for file in os.listdir('csv_files'):
    if file.endswith('.csv'):
        df = pd.read_csv(f'csv_files/{file}')
        # 处理文件
        df.to_csv(f'processed_{file}', index=False)

5. 常见问题与错误处理

5.1 处理文件编码问题

在处理 CSV 文件时,可能会遇到编码问题。可以使用 encoding 参数指定文件的编码格式。

df = pd.read_csv('file.csv', encoding='utf-8')

5.2 数据缺失值的处理

缺失值处理是数据分析中的常见问题,可以通过 pandas 提供的 dropnafillna 方法进行处理。

5.3 Excel 文件读写中的常见错误

在使用 openpyxlpandas 处理 Excel 文件时,常见的错误包括文件格式不兼容、文件损坏等。需要确保文件路径正确,并使用适当的库来处理文件格式。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/953869.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

JS后盾人--再一次的走进JS?

程序跑起来与避免延迟 如果你讲JS,你就不可能只讲JS 后盾人说开发就要用VScode(确实,Windows和Linux都可以跑) 然后就是第一天开发的时候装的那些插件 前端访问流程基本分析 托管到服务器上的东西,谁访问下载到谁的…

Android 调用系统服务接口获取屏幕投影(需要android.uid.system)

媒体投影 借助 Android 5(API 级别 21)中引入的 android.media.projection API,您可以将设备屏幕中的内容截取为可播放、录制或投屏到其他设备(如电视)的媒体流。 Android 14(API 级别 34)引入…

PT8M2102 触控型 8Bit MCU

1. 产品概述 PT8M2102 是一款基于 RISC 内核的 8 位 MTP 单片机,内部集成了电容式触摸感应模块、 TIMER 、 PWM、 LVR 、 LVD 、 WDT 等外设,其主要用作触摸按键开关,广泛适用于触控调光、电子玩具、消 费电子、家用电器等领域&am…

LangGraph 教程:初学者综合指南(2)

工具集成 将工具集成到 LangGraph 聊天机器人中可以显着增强其功能,使其能够按照您喜欢的方式访问和处理信息。 让我们修改上一节中创建的基本聊天机器人,以包含一个可以在网络上搜索信息的工具。我们将使用langchain_中community.tools TavilySearchR…

项目练习:若依管理系统字典功能-Vue前端部分

文章目录 一、情景说明二、若依Vue相关代码及配置1、utils代码2、components组件3、api接口代码4、main.js配置 三、使用方法1、html部分2、js部分 一、情景说明 我们在做web系统的时候,肯定会遇到一些常量选择场景。 比如,性别:男女。 状态…

oracle闪回表

文章目录 闪回表案例1:(未清理回收站时的闪回表--成功)案例2(清理回收站时的闪回表--失败)案例3:彻底删除表(不经过回收站--失败)案例4:闪回表之后重新命名新表总结1、删…

TensorFlow Quantum快速编程(基本篇)

一、TensorFlow Quantum 概述 1.1 简介 TensorFlow Quantum(TFQ)是由 Google 开发的一款具有开创性意义的开源库,它宛如一座桥梁,巧妙地将量子计算与 TensorFlow 强大的机器学习功能紧密融合。在当今科技飞速发展的时代,传统机器学习虽已取得诸多瞩目成就,然而面对日益…

K8s数据存储之详解(Detailed Explanation of K8s Data Storage)

K8s数据存储相关概念详解(临时存储,节点存储,网络存储,PV/PVC) 本篇文章分享一下存储卷和数据持久化的相关概念: 存储卷概述 临时存储卷(Ephemeral Volumes) 节点存储卷&#xff…

java求职学习day12

1 泛型机制(熟悉) 1.1 基本概念 (1)通常情况下集合中可以存放不同类型的元素,是因为将所有对象都看作Object类型放入,因此从集合中取出元素时,也是Object类型,为了表达该元素真实的…

相加交互效应函数发布—适用于逻辑回归、cox回归、glmm模型、gee模型

在统计分析中交互作用是指某因素的作用随其他因素水平变化而变化,两因素共同作用不等于两因素单独作用之和(相加交互作用)或之积(相乘交互作用)。相互作用的评估是尺度相关的:乘法或加法。乘法尺度上的相互作用意味着两次暴露的综合效应大于(…

Spring Boot 2 学习全攻略

Spring Boot 2 学习资料 Spring Boot 2 学习资料 Spring Boot 2 学习资料 在当今快速发展的 Java 后端开发领域,Spring Boot 2 已然成为一股不可忽视的强大力量。它简化了 Spring 应用的初始搭建以及开发过程,让开发者能够更加专注于业务逻辑的实现&am…

【面试题】技术场景 4、负责项目时遇到的棘手问题及解决方法

工作经验一年以上程序员必问问题 面试题概述 问题为在负责项目时遇到的棘手问题及解决方法,主要考察开发经验与技术水平,回答不佳会影响面试印象。提供四个回答方向,准备其中一个方向即可。 1、设计模式应用方向 以登录为例,未…

30分钟内搭建一个全能轻量级springboot 3.4 + 脚手架 <1> 5分钟快速创建一个springboot web项目

快速导航 <1> 5分钟快速创建一个springboot web项目 <2> 5分钟集成好最新版本的开源swagger ui&#xff0c;并使用ui操作调用接口 <3> 5分钟集成好druid并使用druid自带监控工具监控sql请求 <4> 5分钟集成好mybatisplus并使用mybatisplus generator自…

【Rust自学】11.10. 集成测试

喜欢的话别忘了点赞、收藏加关注哦&#xff0c;对接下来的教程有兴趣的可以关注专栏。谢谢喵&#xff01;(&#xff65;ω&#xff65;) 11.10.1. 什么是集成测试 在Rust里&#xff0c;集成测试完全位于被测试库的外部。集成测试调用库的方式和其他代码一样&#xff0c;这也…

JAVA实现2048小游戏(附源码)

文章目录 一、设计来源2048小游戏讲解1.1 主界面1.2 4*4难度界面1.3 5*5难度界面1.4 6*6难度界面1.5 挑战失败提示界面 二、效果和源码2.1 动态效果2.2 源代码 源码下载更多优质源码分享 作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.net/weixin_43151418/a…

【自动化测试】—— Appium安装配置保姆教程(图文详解)

目录 一. 环境准备 二. JDK安装 1. 下载JDK 2. 安装JDK 3. 配置环境 4. 验证安装 三. Android SDK安装 1. 下载Android SDK 2. 安装Android SDK 3. 安装工具 4. 配置环境 5. 验证安装 四. NodeJS安装 1. 下载NodeJS 2. 安装NodeJS 3. 验证安装 4. 安装淘宝镜像…

vs2022+QT6.7.3打包程序流程

1、新建目录test 2、将项目配置为Release X64&#xff0c;生成XXX.exe 3、将XXX.exe放到test目录 4、管理员方式打开Qt 6.7.3 (MSVC 2022 64-bit)&#xff0c;进入test目录&#xff0c;执行&#xff1a;windeployqt6.exe XXX.exe 5、管理员方式打开x64 Native Tools Command…

RabbitMQ---消息确认和持久化

&#xff08;一&#xff09;消息确认 1.概念 生产者发送消息后&#xff0c;到达消费端会有以下情况&#xff1a; 1.消息处理成功 2.消息处理异常 如果RabbitMQ把消息发送给消费者后就把消息删除&#xff0c;那么就可能会导致&#xff0c;消息处理异常想要再获取这条消息的时…

【C++】反向迭代器

反向迭代器 一.源码及框架分析二.反向迭代器实现代码1.ReverseIterator.h2.Vector.h3.List.h4.Test.cpp 一.源码及框架分析 SGI-STL30版本源代码&#xff0c;反向迭代器实现的核心源码在stl_iterator.h中&#xff0c;反向迭代器是一个适配器&#xff0c;各个容器中再适配出自己…

浅谈云计算02 | 云计算模式的演进

云计算计算模式的演进 一、云计算计算模式的起源追溯1.2 个人计算机与桌面计算 二、云计算计算模式的发展阶段2.1 效用计算的出现2.2 客户机/服务器模式2.3 集群计算2.4 服务计算2.5 分布式计算2.6 网格计算 三、云计算计算模式的成熟与多元化3.1 主流云计算服务模式的确立3.1.…