python 数据分析-读写数据csv、xlsx文件

1、读写csv文件可以使用基础python实现,或者使用csv模块、pandas模块实现。

基础python读写csv文件

读写单个CSV

以下为通过基础python读取CSV文件的代码,请注意,若字段中的值包含有","且该值没有被引号括起来,则无法通过以下的简单代码获取准确的数据。

inputFile="要读取的文件名"
outputFile=“写入数据的csv文件名”
with open(inputFile,"r")  as fileReader:with open(outputFile,"w") as fileWriter:for row in fileReader:fileWriter.write(row)

读取多个csv文件并写入至一个csv文件

读写文件的代码与读写单个csv文件大致相同,但需要利用glob模块以及os模块获取需要读取的文件名。代码如下:

import os
import glob
inputPath="读取csv文件的路径"
outputFile="写入数据的csv文件名"
firstFile=True
for file in glob.glob(os.path.join(inputPath,"*.csv")):with open(file,'r') as fileReader:with open(outputFile,"a") as fileWriter:if firstFile:for row in fileReader:fileWriter.write(row)firstFile=FalsefileWriter.write("\n")else:header=fileReader.readline()for row in fileReader:fileWriter.write(row)

通过pandas模块读写csv文件

读写单个CSV

pandas的dataframe类型有相应的方法能读取csv文件,代码如下:

import pandas as pd
inputFile="要读取的文件名"
outputFile=“写入数据的csv文件名”
df=pd.read_csv(inputFile)
df.to_csv(outputFile)

请注意,若字段中的值包含有","且该值没有被引号括起来,则无法通过以下的简单代码获取准确的数据。

读取多个csv文件并写入至一个csv文件

import os
import glob
import pandas as pd
i
nputPath="读取csv文件的路径"
outputFile="写入数据的csv文件名"
dataFrameList=[]
for file in glob.glob(os.path.join(inputPath,"*.csv")): df=pd.read_csv(file)dataFrameList.append(df)
allDataFrame=pd.concat(dataFrameList,axis=0,ignore_index=True)
allDataFrame.to_csv(outputFile)

通过csv模块读写csv文件

读写单个CSV文件

代码如下:

import csv
inputFile="要读取的文件名"
outputFile=“写入数据的csv文件名”
with open(inputFile,"r",newline='') as fileReader:with open(outputFile,"w",newline='') as fileWriter:csvReader=csv.reader(fileReader,delimiter=',')csvWriter=csv.writer(fileWriter,delimiter=',')for row in csvReader:print(row)csvWriter.writerow(row)

读取多个csv文件并写入至一个csv文件

思路与上述用基础python读取多个csv文件大体相同,代码如下:

import csv
import glob
import osinputPath=r"读取csv文件的路径"
outputFile=r"输出文件的路径"
firstFile=True
for file in glob.glob(os.path.join(inputFile,"*.csv")):with open(file,"r") as fileReader:with open(outputFile,"a") as fileWriter:csvReader=csv.reader(fileReader)csvWriter=csv.writer(fileWriter)if firstFile:for row in csvReader:csvWriter(row)firstFile=Falseelse:header=next(csvReader,None)for row in csvReader:csvWriter(row)

2.使用xlrd和xlwt这两个模块来读取单个excel文件,
思路和读取csv文件大致相同,分别设置输入和输出的excel文件对象,然后遍历输入对象的工作表的内容并输出至输出对象的特定工作表。
代码如下:

"""
基础python获取exel数据
"""
import xlrd
import xlwtinputExcel="输入的excel文件"
outputExcel="输出的excel文件"
outputWorkbook=xlwt.Workbook()
outputWorksheet=outputWorkbook.add_sheet("test")
with xlrd.open_workbook(inputExcel) as inputWorkbook:inputWorksheet=inputWorkbook.sheet_by_name("january_2013")for row in range(inputWorksheet.nrows):for col in range(inputWorksheet.ncols):outputWorksheet.write(row,col,inputWorksheet.cell_value(row,col))
outputWorkbook.save(outputExcel)

经测试后,发现输出的excek文件无法打开。

 

3、通过xlrd和xlwt模块将读取的多个excel文件中多个工作表输出至多个excel文件中。

通过xlrd和xlwt读多个excel文件并写入一个新excel文件

获取文件名可通过glob以及os模块进行,获取一个excel文件中的多个工作表则通过xlrd.open_workbook()函数所打开的excel文件对象的sheets()进行读取,以下实例为读取多个excel文件当中的多个工作表,并将每个excel文件的全部内容输出至一个excel文件的不同工作表中,代码如下:

import pandas as pd
import glob
import os
import xlrd
import xlwtinputPath=r"读取excel文件的路径"
outputExcel=r"输出的excel文件的具体路径"
outputWorkbook=xlwt.Workbook()
#将读入数据写入变量中
for inputWorkbook in glob.glob(os.path.join(inputPath,"*.xlsx")):with xlrd.open_workbook(inputWorkbook) as workbook:workbookName=os.path.basename(inputWorkbook)firstSheetFlag=1  setRow=0for sheet in workbook.sheets():#为输出工作表添加表头if firstSheetFlag:outputWorksheet=outputWorkbook.add_sheet(workbookName)for cInd in range(sheet.ncols):outputWorksheet.write(0,cInd,sheet.cell_value(0,cInd))firstSheetFlag=0for rInd in range(1,sheet.nrows):for cInd in range(sheet.ncols):outputWorksheet.write(rInd+setRow,cInd,sheet.cell_value(rInd,cInd))setRow=setRow+sheet.nrows-1
outputWorkbook.save(outputExcel)

请注意,上述代码并未有对excel中的日期数据的格式进行处理,故输出至excel的日期字段的数据与实际看到的日期格式不同。

 

4、利用pandas读写多个excel文件,当中涉及到读写excel文件的多个工作表。


大致原理如下:
glob.glob()以及os.path.join()函数负责获取输入要读取的excel文件的具体路径。
pandas的read_excel函数负责读取函数,通过当中的sheet_name参数控制读取excel工作表。当读取一个工作表时,返回一个DataFrame;若读取多个或全部excel工作表,则返回一个字典,键、值分别为工作表文件名和存放工作表数据的数据框。
pandas.DataFrame.to_csv()函数负责输出数据至excel文件。当中的excel_writer参数控制输出路径及excel文件名,sheet_name控制输出的excel工作表。请注意,若指定的excel文件不存在,则新建一个;若存在,则将数据以新工作表的形式写入已存在的excel文件当中。


接下来实例及相应的代码说明通过pandas读写exel文件。
案例:读取多个excel文件当中的所有工作表,将数据输出至一个新excel文件,当中的每个工作表为之前读取的单个excel文件的所有数据,工作表名为读取的excel文件名,不包括后缀。
代码:

"""
通过pandas读写多个excel文件
"""import glob
import os
import pandas as pdinputPath="需要读入的excel文件路径"
outputWorkbook="excel输出文件"
inputWorkbook=glob.glob(os.path.join(inputPath,"*.xlsx"))
writer=pd.ExcelWriter(outputWorkbook)for workbook in inputWorkbook:allData=[]combineData=pd.DataFrame#读取excel文件allSheetData=pd.read_excel(workbook,sheet_name=None)for name,data in allSheetData.items():allData.append(data)combineData=pd.concat(allData,axis=0,ignore_index=True)#输出excel文件combineData.to_excel(writer,sheet_name=os.path.basename(workbook)[:-5],index=False)
writer.save()


 

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

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

相关文章

c#将list集合转换为datatable的简单办法

public static class ExtensionMethods { /// <summary> /// 将List转换成DataTable /// </summary> /// <typeparam name"T"></typeparam> /// <param name"data"></param&g…

Kaggle 房价预测竞赛优胜方案:用 Python 进行全面数据探索

&#xff3b;导读&#xff3d;Kaggle 的房价预测竞赛从 2016 年 8 月开始&#xff0c;到 2017 年 2 月结束。这段时间内&#xff0c;超过 2000 多人参与比赛&#xff0c;选手采用高级回归技术&#xff0c;基于我们给出的 79 个特征&#xff0c;对房屋的售价进行了准确的预测。今…

使用GRU单元的RNN模型生成唐诗

文章目录1. 读取数据2. 字符索引3. 创建文本序列4. 创建文本编码序列5. 使用GRU单元建立RNN模型6. 文本生成参考 基于深度学习的自然语言处理 本文使用 GRU 单元建立 RNN 网络&#xff0c;使用唐诗三百首进行训练&#xff0c;使用模型生成唐诗。 GRU RNN 网络能够克服简单RNN…

循环与分支

1. 循环 for循环for arg in [list] 这是一个基本的循环结构. 它与C语言中的for循环结构有很大的不同.for arg in [list]docommand(s)...done for arg in "$var1" "$var2" "$var3" ... "$varN" 在[list]中的参数加上双引号是为了阻止单…

Python数据结构常见的八大排序算法(详细整理)

前言 八大排序&#xff0c;三大查找是《数据结构》当中非常基础的知识点&#xff0c;在这里为了复习顺带总结了一下常见的八种排序算法。 常见的八大排序算法&#xff0c;他们之间关系如下&#xff1a; 排序算法.png 他们的性能比较&#xff1a; 下面&#xff0c;利用Python分别…

牛客 牛牛选物(01背包)

文章目录1. 题目2. 解题1. 题目 链接&#xff1a;https://ac.nowcoder.com/acm/contest/9887/A 来源&#xff1a;牛客网 牛牛有现在有n个物品&#xff0c;每个物品有一个体积v[i]和重量g[i],他想选择其中总体积恰好为V的若干个物品&#xff0c;想使这若干个物品的总重量最大&…

asp.net学习之再论sqlDataSource

asp.net学习之再论sqlDataSource 原文:asp.net学习之再论sqlDataSource本节从上一节没有阐述的几个方面&#xff0c;再讨论一下SqlDataSource的用法及注意的事项。 上一节的链接地址如下&#xff1a;http://www.cnblogs.com/shipfi/archive/2009/10/15/1584093.html 1. S…

微信小程序最常用的布局——Flex布局

最近在学习微信小程序&#xff0c;在设计首页布局的时候&#xff0c;新认识了一种布局方式display:flex 1 .container { 2 display: flex; 3 flex-direction: column; 4 align-items: center; 5 background-color: #b3d4db; 6 } 编译之后的效果很明显&#xff0c;界面…

LeetCode 649. Dota2 参议院(循环队列)

文章目录1. 题目2. 解题1. 题目 Dota2 的世界里有两个阵营&#xff1a;Radiant(天辉)和 Dire(夜魇) Dota2 参议院由来自两派的参议员组成。现在参议院希望对一个 Dota2 游戏里的改变作出决定。他们以一个基于轮为过程的投票进行。在每一轮中&#xff0c;每一位参议员都可以行…

'[linux下tomcat 配置

tomcat目录结构bin ——Tomcat执行脚本目录 conf ——Tomcat配置文件 lib ——Tomcat运行需要的库文件&#xff08;JARS&#xff09; logs ——Tomcat执行时的LOG文件 temp ——Tomcat临时文件存放目录 webapps ——Tomcat的主要Web发布目录&#xff08;存放我们自己的JSP,SER…

微信小程序基础(一)

一.注册小程序账号&#xff0c;下载IDE 1.官网注册https://mp.weixin.qq.com/&#xff0c;并下载IDE。 2.官方文档一向都是最好的学习资料。 注意&#xff1a; &#xff08;1&#xff09;注册账号之后会有一个appid&#xff0c;新建项目的时候需要填上&#xff0c;不然很多…

[Kaggle] Spam/Ham Email Classification 垃圾邮件分类(RNN/GRU/LSTM)

文章目录1. 读入数据2. 文本处理3. 建模4. 训练5. 测试练习地址&#xff1a;https://www.kaggle.com/c/ds100fa19 相关博文 [Kaggle] Spam/Ham Email Classification 垃圾邮件分类&#xff08;spacy&#xff09; [Kaggle] Spam/Ham Email Classification 垃圾邮件分类&#xff…

禁止网页复制

<SCRIPT LANGUAGEjavascript>function click() {alert(禁止你的左键复制&#xff01;) }function click1() {if (event.button2) {alert(禁止右键点击~&#xff01;) }}function CtrlKeyDown(){if (event.ctrlKey) {alert(不当的拷贝将损害您的系统&#xff01;) }}docum…

微信小程序中实现瀑布流布局和无限加载

瀑布流布局是一种比较流行的页面布局方式&#xff0c;最典型的就是Pinterest.com&#xff0c;每个卡片的高度不都一样&#xff0c;形成一种参差不齐的美感。 在HTML5中&#xff0c;我们可以找到很多基于jQuery之类实现的瀑布流布局插件&#xff0c;轻松做出这样的布局形式。在…

LeetCode 1684. 统计一致字符串的数目(哈希)

文章目录1. 题目2. 解题1. 题目 给你一个由不同字符组成的字符串 allowed 和一个字符串数组 words 。 如果一个字符串的每一个字符都在 allowed 中&#xff0c;就称这个字符串是 一致 字符串。 请你返回 words 数组中 一致 字符串的数目。 示例 1&#xff1a; 输入&#xff…

Android下常见的内存泄露 经典

转自&#xff1a;http://www.linuxidc.com/Linux/2011-10/44785.htm 因为Android使用Java作为开发语言&#xff0c;很多人在使用会不注意内存的问题。 于是有时遇到程序运行时不断消耗内存&#xff0c;最终导致OutOfMemery&#xff0c;程序异常退出&#xff0c;这就是内存泄露导…

微信小程序:页面跳转时传递数据到另一个页面

一、功能描述 页面跳转时&#xff0c;同时把当前页面的数据传递给跳转的目标页面&#xff0c;并在跳转后的目标页面进行展示 二、功能实现 1. 代码实现 test1页面 // pages/test1/test1.js Page({/*** 页面的初始数据*/data: {name:Tom,age:12},buttonListener:function(){…

LeetCode 1685. 有序数组中差绝对值之和(前缀和)

文章目录1. 题目2. 解题1. 题目 给你一个 非递减 有序整数数组 nums 。 请你建立并返回一个整数数组 result&#xff0c;它跟 nums 长度相同&#xff0c;且result[i] 等于 nums[i] 与数组中所有其他元素差的绝对值之和。 换句话说&#xff0c; result[i] 等于 sum(|nums[i]-…

对一个 复杂的json结果进行取值的例子

1 JSON结果集 1 [2 {3 "J_LP_OPERATE_MAIN": {4 "ID": "1900036295",5 "FILL_MAN": "周兴福",6 "FILL_DEPT": "运维一班",7 "STATE…

微信小程序正则判断姓名和手机号

一、页面效果 二、json文件 //获取应用实例 const app getApp() Page({/*** 页面的初始数据*/data: {array: [速美, 现代, 淮安],mode: scaleToFill,src: ../../images/1.png,userInfo: {},hasUserInfo: false,canIUse: wx.canIUse(button.open-type.getUserInfo),userName: …