使用Python高效处理CSV和Excel文件的多种方法

news/2024/11/3 3:41:56 标签: python, excel, 数据分析

数据分析、自动化和日常开发中,CSV和Excel文件是非常常见的数据存储格式。Python提供了强大的工具来读取、编辑和保存这两种文件,满足从基本读取到复杂分析的需求。本文将深入介绍CSV和Excel文件的多种处理方法,帮助你更好地管理和分析数据。


1. CSV文件的处理方法

1.1 使用csv库读取和写入CSV文件

Python内置的csv库是一个轻量级的工具,适合处理基本的CSV文件操作。

  • 读取CSV文件:csv.reader
    csv.reader将CSV文件中的每一行读取为一个列表,每个元素对应表中的一个字段。

    python">import csv
    
    with open('example.csv', 'r', encoding='utf-8') as file:
        reader = csv.reader(file)
        for row in reader:
            print(row)  # 每行数据以列表形式输出
    
  • 以字典格式读取:csv.DictReader
    DictReader将每行数据映射为字典,适合按列名访问数据。

    python">with open('example.csv', 'r', encoding='utf-8') as file:
        reader = csv.DictReader(file)
        for row in reader:
            print(row)  # 每行数据以字典形式输出
    
  • 写入CSV文件:csv.writer
    csv.writer可以将列表写入CSV文件。

    python">with open('output.csv', 'w', newline='', encoding='utf-8') as file:
        writer = csv.writer(file)
        writer.writerow(['name', 'age', 'city'])  # 写入表头
        writer.writerow(['Alice', 30, 'New York'])  # 写入数据
    
  • 以字典格式写入:csv.DictWriter
    DictWriter允许以字典格式写入数据,常用于有明确表头的情况。

    python">with open('output.csv', 'w', newline='', encoding='utf-8') as file:
        fieldnames = ['name', 'age', 'city']
        writer = csv.DictWriter(file, fieldnames=fieldnames)
        writer.writeheader()
        writer.writerow({'name': 'Alice', 'age': 30, 'city': 'New York'})
    
1.2 使用pandas处理CSV文件

pandas 提供了强大的数据操作能力,特别适合复杂数据分析和处理。

  • 读取CSV文件:pd.read_csv
    通过pandas.read_csv将CSV文件读取为DataFrame,支持选取指定列、筛选行等功能。

    python">import pandas as pd
    
    df = pd.read_csv('example.csv', usecols=['name', 'age'])  # 只读取指定列
    print(df.head())
    
  • 数据清洗和操作
    pandas 提供了多种数据操作方法,可以对DataFrame进行数据清洗、分组、聚合和排序。

    python"># 删除缺失数据的行
    df = df.dropna()
    
    # 过滤数据
    filtered_df = df[df['age'] > 25]
    
    # 排序数据
    sorted_df = df.sort_values(by='age', ascending=False)
    
  • 保存CSV文件:to_csv
    将数据写回CSV文件时,DataFrame.to_csv 方法支持调整分隔符和选择列等选项。

    python">df.to_csv('filtered_data.csv', index=False)
    
1.3 使用dask处理大文件

当数据量非常大时,dask库能够帮助你并行处理数据,类似于pandas但适用于大文件。

python">import dask.dataframe as dd

# 读取大CSV文件
df = dd.read_csv('large_file.csv')

# 操作和筛选
filtered_df = df[df['age'] > 25]

# 保存结果
filtered_df.to_csv('filtered_large_data_*.csv', index=False)

2. Excel文件的处理方法

Excel文件包含多个工作表、格式、公式等复杂信息,适合于报告生成或多表格数据存储。

2.1 使用pandas读取和处理Excel文件

pandas提供的read_excelto_excel方法可以便捷地读写Excel文件。

  • 读取指定工作表:pd.read_excel
    可以通过sheet_name指定工作表名称,也可以读取所有工作表。

    python">df = pd.read_excel('example.xlsx', sheet_name='Sheet1')
    
    # 读取所有工作表
    sheets = pd.read_excel('example.xlsx', sheet_name=None)
    for sheet_name, sheet_df in sheets.items():
        print(f"Sheet: {sheet_name}")
        print(sheet_df.head())
    
  • 保存数据到Excel文件:to_excel
    to_excel可以写入单个或多个工作表,并支持格式控制。

    python">with pd.ExcelWriter('output.xlsx') as writer:
        df.to_excel(writer, sheet_name='Sheet1', index=False)
    
2.2 使用openpyxl处理单元格格式

openpyxl是一个适合处理Excel格式化的库,适合需要在Excel中加入样式或公式的情况。

  • 读取和写入数据

    python">from openpyxl import load_workbook
    
    # 打开Excel文件
    workbook = load_workbook('example.xlsx')
    sheet = workbook['Sheet1']
    
    # 读取单元格内容
    print(sheet['A1'].value)
    
    # 修改单元格内容
    sheet['B2'] = "Updated Value"
    workbook.save('modified_example.xlsx')
    
  • 添加样式和公式
    openpyxl可以应用单元格样式,加入公式和自动调整列宽等。

    python">from openpyxl.styles import Font, Color
    
    sheet['A1'].font = Font(bold=True, color="00FF00")
    sheet['B2'].value = '=SUM(B3:B10)'  # 添加公式
    
2.3 使用xlrdxlwt处理旧版Excel文件

对于.xls格式的旧版Excel文件,xlrdxlwt是有效的工具。

  • 读取旧版Excel文件
    xlrd用于读取.xls文件。

    python">import xlrd
    
    workbook = xlrd.open_workbook('example.xls')
    sheet = workbook.sheet_by_index(0)
    
    # 读取数据
    cell_value = sheet.cell(0, 0).value
    print(cell_value)
    
  • 写入旧版Excel文件
    xlwt可以创建新的.xls文件。

    python">import xlwt
    
    workbook = xlwt.Workbook()
    sheet = workbook.add_sheet('Sheet1')
    
    sheet.write(0, 0, 'Name')
    sheet.write(1, 0, 'Alice')
    workbook.save('example_old_format.xls')
    

3. CSV和Excel文件的选择

文件类型优势劣势适用场景
CSV文件体积小,处理速度快不支持格式、公式等复杂数据大数据量的存储和传输
Excel支持多表格、格式和公式文件大,处理速度慢需要格式化展示、生成报告的情况

总结

Python提供了多种处理CSV和Excel文件的方法,选择合适的工具可以让数据处理更加高效。对于简单的数据操作,csv库即可满足需求;对于数据分析和处理,pandas非常强大。而在Excel文件中应用格式和公式时,openpyxlxlrd/xlwt更适合。。


http://www.niftyadmin.cn/n/5735949.html

相关文章

告别传统办公软件,这款编辑器让你事半功倍!

文章目录 1 界面的多样性2 性能优化3 文档编辑器的新功能4 外部文本支持5 体验感想 ONLYOFFICE最近发布了文档8.2版本,带来了众多新特性和性能改进。作为一名用户和开发者,我对这些更新进行了深入的体验,感受到了不少亮点。 新版本特别强调了…

学习正则表达式,如何校验手机号与电子邮箱

文章目录 一、正则表达式基础知识1.特殊字符(Metacharacters)2.字符类(Character Classes)3.预定义字符集(Predefined character classes)4.分组(Groups)5.量词(Quantifi…

【JavaScript】axios 二次封装拦截器(接口、实例、全局)

学习 coderwhy 老师结合 ts 二次封装 axios 目录结构 config config\index.ts // export const BASE_URL "http://codercba.com:9002"; export const TIME_OUT 10000;// 1. 根据环境变量区分接口地址 // let BASE_URL: string; // if (process.env.NODE_ENV &qu…

[HNCTF 2022 Week1]calc_jail_beginner_level3(JAIL)

开启靶场,打开链接,下载附件: 嗯,直接显示“Oh hacker!”,有点懵,先看看下载的附件(server.py): 得到信息如下: 用户输入的表达式长度被限制在7个字符以内。…

Golang--DOS命令、变量、基本数据类型、标识符

1、DOS命令 切换盘符(大小写没有区别): c: //切换到c盘 d: //切换到d盘 e: //切换到e盘 显示文件内信息: 指令:dir 切换路径: 指令:cd 绝对路径 / 相对路径 . 表示当前…

【Linux指令】---获取进程的PID

获取进程的PID getpid()函数

DB-GPT系列(二):DB-GPT部署(镜像一键部署、源码部署)

一、简介 DB-GPT 是一个开源项目,其将大语言模型 LLM 与数据库紧密结合。该项目主要致力于探索如何让预训练的大规模语言模型(例如 GPT)能够直接与数据库进行交互,从而生成更为准确且信息丰富的回答。 DB-GPT部署后能否直接使用…

GEE 教程——将图像剪切成多边形,并保留内部部分。 图像将保留所有原始波段

目录 简介 函数 unmask(value, sameFootprint) Arguments: Returns: Image selfMask() Arguments: Returns: Image 代码 结果 简介 将图像剪切成多边形,并保留内部部分。 图像将保留所有原始波段 函数 unmask(value, sameFootprint) Replaces mask and value of…