用 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 pdchunk_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 pdfor 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 文件时,常见的错误包括文件格式不兼容、文件损坏等。需要确保文件路径正确,并使用适当的库来处理文件格式。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vulnhub靶场【IA系列】之Tornado

前言 靶机:IA-Tornado,IP地址为192.168.10.11 攻击:kali,IP地址为192.168.10.2 都采用虚拟机,网卡为桥接模式 本文所用靶场、kali镜像以及相关工具,我放置在网盘中,可以复制后面链接查看 htt…

[云讷科技] 用于软件验证的仿真环境

我们使用Pursuit自动驾驶仪为各种场景设计仿真环境,以便用户可以在模拟环境中直接验证他们的软件,无需现场测试。该环境基于Gazebo引擎。 1. 工作区目录 模拟环境的工作区位于提供的U盘中的~/pursuit_space/sitl_space_pursuit中。用户可以按照用户手册…

Android string.xml中特殊字符转义

项目中要在string.xml 中显示特殊符号 空格: (普通的英文半角空格但不换行) 窄空格:  (中文全角空格 (一个中文宽度)) (半个中文宽度,但两个空格比一个中文…

局域网共享文件夹实现两台Windows电脑之间传输文件

文章目录 1. 启用网络发现和文件共享2. 设置共享文件夹3. 记录主电脑的IP地址4. 在第二台电脑访问共享文件夹5. 故障排查6. 启用文件共享未生效方案1:检查服务状态方案2:检查防火墙设置方案3:检查网络类型方案4:使用“管理员命令提…

【Uniapp-Vue3】页面生命周期onLoad和onReady

一、onLoad函数 onLoad在页面载入时触发,多用于页面跳转时进行参数传递。 我们在跳转的时候传递参数name和age: 接受参数: import {onLoad} from "dcloudio/uni-app"; onLoad((e)>{...}) 二、onReady函数 页面生命周期函数中的onReady其…

Python uWSGI 安装配置

关于《Python uWSGI 安装配置》的文章,可以从以下几个方面进行阐述: uWSGI简介:uWSGI是一个Python Web服务器,它实现了WSGI协议、uwsgi、http等协议。在部署Django或Flask开发的Python Web项目时,uWSGI作为连接Nginx与…

iOS 解决两个tableView.嵌套滚动手势冲突

我们有这样一个场景,就是页面上有一个大的tableView, 每一个cell都是和屏幕一样高的,然后cell中还有一个可以 tableView,比如直播间的情形,这个时候如果我们拖动 cell里面的tableView滚动的话,如果滚动到内…

【9.2】Golang后端开发系列--Gin路由定义与实战使用

文章目录 一、Gin 框架路由的基本定义方式1. 简单路由创建2. 路由参数3. 查询参数 二、商业大项目中的路由定义和服务调用1. 路由模块化2. 路由组和中间件3. 中间件的使用4. 服务层调用5. 错误处理6. 版本控制7. 路由注册 一、Gin 框架路由的基本定义方式 1. 简单路由创建 使…

STM32 FreeRTOS移植

目录 FreeRTOS源码结构介绍 获取源码 1、 官网下载 2、 Github下载 源码结构介绍 源码整体结构 FreeRTOS文件夹结构 Source文件夹结构如下 portable文件夹结构 RVDS文件夹 MemMang文件夹 FreeRTOS在基于寄存器项目中移植步骤 目录添加源码文件 工程添加源码文件 …

【算法】回溯法

回溯法(Backtracking)是一种通过系统地搜索问题的解空间来找到所有可能结果或最佳解的算法设计范式。它广泛应用于解决各种组合优化问题,比如图的着色、数独求解、八皇后问题、旅行商问题等。 在程序中,回溯法通常表现为递归函数…

【ASP.NET学习】Web Forms创建Web应用

文章目录 什么是 Web Forms?ASP.NET Web Forms - HTML 页面用 ASP.NET 编写的 Hello RUNOOB.COM它是如何工作的?经典 ASP ASP.NET Web Forms - 服务器控件经典 ASP 的局限性ASP.NET - 服务器控件ASP.NET - HTML 服务器控件ASP.NET - Web 服务器控件ASP.N…

Linux 常见运营维护,从安装软件开始,到mysql,php,redis,tomcat等软件安装,配置,优化,持续更新中。。。

下载centos7 CentOS 7 完整版(DVD): https://mirrors.aliyun.com/centos/7/isos/x86_64/CentOS-7-x86_64-DVD-2009.isoCentOS 7 最小化版(Minimal): https://mirrors.aliyun.com/centos/7/isos/x86_64/C…

用户界面软件05

已知应用 几乎所有的流行的用户界面架构都使用这种模式。我在这里举三个例子: 1. Seeheim 用户界面架构的特点是有一个应用核心的领域层和一个用户界面层。后者 被分为两层,叫做表示层和对话控制层。因为这个架构和面向事务系统有渊源,没有…

从玩具到工业控制--51单片机的跨界传奇【2】

咱们在上一篇博客里面讲解了什么是单片机《单片机入门》,让大家对单片机有了初步的了解。我们今天继续讲解一些有关单片机的知识,顺便也讲解一下我们单片机用到的C语言知识。如果你对C语言还不太了解的话,可以看看博主的C语言专栏哟&#xff…

如何通过openssl生成.crt和.key

生成 .crt(证书文件)和 .key(私钥文件)的过程通常涉及使用加密工具或库来创建密钥对,并生成证书请求,最终由证书颁发机构(CA)或自签名生成证书。以下是生成 .crt 和 .key 文件的详细…

华为2024嵌入式研发面试题

01 你认为最好的排序算法是什么? 在实际的编程中,最好的排序算法要根据实际需求和数据规模来选择,因为每种排序算法都有其优势和劣势。以下是一些常见排序算法及其优缺点: 冒泡排序 冒泡排序是一种简单直观的排序算法&#xff0…

LVGL移植高通点阵字库GT30L24A3W

字库芯片: GT30L24A3W MCU:STM32F429 LVGL版本:V8.4 一、实现gt_read_data() 和 r_dat_bat() 请参考下面视频 如何在32位MCU上使用高通点阵字库_哔哩哔哩_bilibili 高通字库使用教程(1)硬件链接与注意事项部分_哔哩哔哩_bilibili 高通字库使用教程(2)SPI底层函数使用_哔哩…

C# OpenCV机器视觉:转速测量

在一个看似平常却又暗藏神秘能量的日子里,阿杰正在他那充满科技感的实验室里,对着一堆奇奇怪怪的仪器发呆。突然,手机铃声如一道凌厉的剑气划破寂静,原来是工厂的赵厂长打来的紧急电话:“阿杰啊,咱们工厂新…

Git | git revert命令详解

关注:CodingTechWork 引言 Git 是一个强大的版本控制工具,广泛应用于现代软件开发中。它为开发人员提供了多种功能来管理代码、协作开发和版本控制。在 Git 中,有时我们需要撤销或回退某些提交,而git revert 是一个非常有用的命令…

【Vue】Vue组件--上

目录 一、组件基础 二、组件的嵌套关系 1. 基础架构 2. 嵌套 三、组件注册方式 1. 局部注册: 2. 全局注册: 四、组件传递数据 1. 基础架构 2. 传递多值 3. 动态传递数据 五、组件传递多种数据类型 1. Number 2. Array 3. Object 六、组…