python数据分析&自动化办公实战(二):批量输入输出excel文件
2020-02-02 18:02
579 查看
此篇起皆为实战总结,以代码+注释+相关总结为主,基础语法请自行学习,注意各种数据类型间的不同就好。
任务目标:给定一年中每个月每一笔订单的详细信息(csv),需要输出每个月的客户名称、业务类型、收入、成本并计算毛利(excel)
目标拆解:获取文件夹下所有csv文件的文件路径,依照文件路径读取csv文件,摘取特定字段并做简单计算,输出excel
用到的库:os,sys,numpy,pandas,csv,xlwt
代码展示:
import os,sys import numpy as np import pandas as pd import openpyxl import csv import xlwt #遍历文件夹,输出文件夹下所有的文件路径及名称 def walk(path): if not os.path.exists(path): return -1 for root,dirs,names in os.walk(path): for filename in names: if os.path.splitext(filename)[1] == '.csv': doc = os.path.join(root,filename) print(doc) csvlist.append(doc) #确定当前所在的文件夹路径 csvlist = [] cur_path = os.getcwd() walk(cur_path) #读取csv,选择特定字段,输出为xlsx for doc in csvlist: df = pd.read_csv(doc,encoding = "gbk") df[["月份","客户名称","业务类型","收入不含税","成本"]] df["毛利"] = df.apply(lambda df:df["收入不含税"]-df["成本"],axis=1) excel_name = os.path.splitext(doc)[0] + "-整理后.xlsx" columns = {"月份","客户名称""业务类型",,"收入不含税","成本","毛利"} df.to_excel(excel_writer = excel_name,sheet_name = "商家损益数据",index = False,columns=columns)
接下来开始拆解一下代码:
首先是导入所需要的库,需要什么导入什么即可;
第二部分是通过walk()函数遍历文件夹并搜寻相关文件,将文件名输入到列表里;
在此其中有些知识补充如下:
for root,dirs,names in os.walk(path): #root返回根目录,dirs返回路径,names返回文件名,有dirs在可以保证遍历每个子文件夹 for filename in names: if os.path.splitext(filename)[1] == '.csv': #此项将文件名拆成了前后两个部分,由于python的索引从0开始,截断文件名后,索引为0的部分是名称,1的部分是扩展名; #扩展名由最后一个“.”后决定,在此之前的都是文件名,“123.456.csv.xlsx”的扩展名是“.xlsx” doc = os.path.join(root,filename) #doc是含文件路径和文件名在的绝对路径,filename只是文件名 print(doc) csvlist.append(doc)
第三部分是调用函数读取文件路径;
csvlist = [] #建立一个列表对象,用于存储文件名 cur_path = os.getcwd() #os.getcwd()是获取当前文件所在的文件路径
第四部分是通过for循环实现依次读取批量操作:
for doc in csvlist: df = pd.read_csv(doc,encoding = "gbk") #函数详情见pandas官方说明文档,主要编码格式有utf-8、gbk、gb2312等,可以在此指定读取的列的数据类型; #读取excel文件时函数为pd.read_excel(excel_name,sheet_name,encoding,usecols=use_cols) df[["月份","客户名称","业务类型","收入不含税","成本"]] #摘取特定列,可以通过df[["客户"]=="a"][["收入"]]等形式同时做行列筛选 df["毛利"] = df.apply(lambda df:df["收入不含税"]-df["成本"],axis=1) #添加新列,使用apply函数进行即时运算赋值,axis=1表示列间计算,axis=0为行计算 excel_name = os.path.splitext(doc)[0] + "-整理后.xlsx" #规定输出的文件路径和名称,偷懒所以以原文件所在的路径、修改文件名输出 columns = {"月份","业务类型","客户名称","收入不含税","成本","毛利"} #指定输出的列及其顺序 df.to_excel(excel_writer = excel_name,sheet_name = "sheet1",index = False,columns=columns)
以上,其余总结等后续补充。
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- Python:从excel文件批量导入数据到SQLite数据库
- Python操纵 Excel 文件实现复杂数据分析
- python数据分析-处理CSV/EXCEL表格文件
- python数据分析之(4)读写数据文件CSV,EXCEL等
- 【软件自动化测试-QTP实战技能 16】==QTP_调用外部EXCEL数据替换DataTable中的数据
- python数据分析与挖掘实战-4
- 从Excel文件读取数据批量导入到Mysql数据库
- 使用JDBC读取本地的Excel文件并批量更新数据
- 将excel表中的数据写到txt文本文件的Python脚本
- 数据分析(入门篇)-第四章-让报告自动化(VBA)-Part1(Excel报告自动化)
- 利用Python进行数据分析--数据加载、存储与文件格式
- Python3 模拟MapReduce处理分析大数据文件——《Python宝典》
- 【Python】Python的数据分析(三)——数据文件及数据结构
- python数据挖掘与分析实战 第5章 一处错误
- python数据挖掘与分析实战—1、2、3
- Python数据分析与挖掘实战(开发流程及常用库安装)
- 用python抓取表格数据并导出到excel文件中
- Python数据获取-文件、word、Excel、数据库
- Python中生成(写入数据到)Excel文件
- [办公自动化] 再读《让EXCEL飞》(从excel导入access数据时,union联合查询,数据源中没有包含可见的表格)