当前位置: 首页>后端>正文

Python合并多个csv & csv转Excel

本来想利用Java来处理,但是发现,Java处理起来貌似不是那么精简,在一次课上,听到老师讲用Python来处理文件会非常方便,于是尝试着用Python来处理,

环境准备

  1. 公司的mac电脑自带了Python,于是下载了pycharm编辑器,配置好后,运行上述代码,肯定报错,因为没有pandas(一个Python数据分析库),于是下载,不过可惜的是,无法下载,应该是公司的一些策略不允许,这条路走不通。
  2. 搜来搜去,偶然发现一个叫anaconda的工具,它自带了pandas,于是下载下来安装,它还自带了Python编辑器spider,也蛮好用的。

程序运行

代码如下:

import os
import pandas as pd

inpath = r'./csvfiles/'
outpath = r'./csvfiles/outfile/'

file_list = []
for file in os.listdir(inpath):
    if 'csv' in file:
        print(file)
        df = pd.read_csv(inpath + file, sep = '\t', encoding = 'utf-16-le', on_bad_lines='skip')
        file_list.append(df)

result = pd.concat(file_list)

if not os.path.isdir(outpath):
    os.mkdir(outpath)
    
result.to_csv(outpath + '56.csv', index = False)
result.to_excel(outpath + '56.xlsx', index = False)

代码不复杂,即使没有学过Python,基本也能看懂,获取某个目录下面所有csv的文件,注意read_csv函数,参数包括文件名,分割符,编码,其中分割符要根据csv具体设置,另外编码也很重要,设置不对也不行。
在mac中,可以通过终端命令:file 文件名来获取文件编码,最后就是用concat函数将文件合并起来并保存输出

优点

  1. 合并的文件,只有一个行头,很多合并文件的方式,只是单纯的追加,比如1文件和2文件合并,2文件中的行头也合并到1中,这样文件中就有两个行头
  2. 代码量少,比较精简,相较于其他程序,10几行就能解决问题

csv转Excel

神奇的是,昨天用上面程序可以跑,今天再跑就不行了,报错:UTF-16 stream does not start with BOM,网上搜了一下,应该是要指定UTF -16是小端还是大端,即“utf-16-le” or “utf-16-be”,改成“utf-16-le”就行了,另外转Excel就一行,真是太方便了,现在知道为啥数据分析首推的都是Python了:

result.to_excel(path + '56.xlsx', index = False)

https://www.xamrdz.com/backend/3l31994246.html

相关文章: