文科生自学Python-批量合并同路径所有CSV文件数据

--人生不是赛场,梦想不容退场,学习编程成就更好的自己--

Python语言简洁生动,特别适合文科生学习入门IT世界,用几十行代码就能够做一个完整的爬虫脚本,开发效率杠杠的!短时间内即可解决工作和学习中碰到的棘手问题。(本人外语专业毕业,机缘巧合爱上编程,自学道路曲曲折折,痛并快乐!)在这里总结一下自学Python遇到的难点和重点,分享码过的代码和要点总结,希望能够给初学者一点启示和鼓励,同时愿意结交更多大神交流有助提升自己的水平。

今天分享一个非常简单和常见的实例,汇总同一文件夹中所有CSV数据(默认每个CSV数据源格式和位置一致),就如下截图所示:

相同路径下的所有文件显示如下:

文科生自学Python-批量合并同路径所有CSV文件数据

打开CSV文件后的数据内容如下:

文科生自学Python-批量合并同路径所有CSV文件数据

另外,汇总每个文件数据需要新增一个字段,就是该文件名字作为其内容,这样就知道对应数据是来自哪个CSV文件了,增加了点难度会让大家更有兴趣挑战一下。

下面来讲讲如何解决这个问题吧!!!

切换路径并获取当前文件夹内所有CSV文件名列表:

文科生自学Python-批量合并同路径所有CSV文件数据

根据CSV文件生成自定义函数,方便后续批量读取和获得对应数据,同时将文件名赋值给新增的字段:

文科生自学Python-批量合并同路径所有CSV文件数据

利用自定义函数循环遍历CSV文件名列表读取所有数据帧并另存到一列表中,利用pd.concate把所有数据帧批量合并:

文科生自学Python-批量合并同路径所有CSV文件数据

把汇总好的数据帧保存为EXCEL格式文件即可:

文科生自学Python-批量合并同路径所有CSV文件数据

汇总后得到的结果如下:

文科生自学Python-批量合并同路径所有CSV文件数据

代码汇总如下:

import pandas as pd
import datetime
import time
import os
#更改工作路径
def Set_Work_Path(x):
    try:
        os.chdir(x)
        route = os.getcwd()
        print(route)
        return route
    except Exception:
        print("No Result")
work_path = r"D:PYTHON-FILECSV"
Set_Work_Path(work_path)
#定义自定义函数获取后缀为三位的文件名列表
def Get_3Letter_File_List(x):
    path = os.getcwd()
    files = os.listdir(path) #print(files) #check all files name in the path
    current_list = []
    for i in range(0 ,len(files) ,1):
        try:
            if files[i][-3:] == x:
                current_list.append(files[i])
        except Exception:
            pass
    return current_list
#利用函数获取CSV格式所有文件列表
csv_list = Get_3Letter_File_List("csv")
print(csv_list)

#定义自定义函数-读取CSV数据并添加文件名作为新字段
def Open_CSV_DATA(x):
    try:
        data = pd.read_csv(x,header=5,index_col=None,encoding="gbk") #open the first sheet normally
        data["File-Name"] = x
        return data
    except Exception:
        print("No Result")

#生成一个数据帧列表并把所有CSV文件数据遍历存入
CSV_Data_List = []
for i in range(0,len(csv_list),1):
    CSV_Data_List.append(Open_CSV_DATA(csv_list[i]))
    print("Show it!!")
    print(csv_list[i])
df = pd.concat(CSV_Data_List)
df.dropna(axis=0,how="all",inplace=True)
print(df)

#定义Excel文件名
nowTime = datetime.datetime.now()
Update_Time = nowTime.strftime('%Y-%m-%d-%H-%M')
title = "批量合并CSV数据汇总-"+Update_Time+".xlsx"
print(title)
#存储数据为Excel格式文件
writer = pd.ExcelWriter(title)
df.to_excel(writer,encoding="utf_8_sig",sheet_name="data",index=False)
writer.save()
#显示运行时间
print("程序运行消耗时间: %s Seconds" %time.perf_counter())
print("Well Done!")

这个实例虽然不是特别复杂但涉及了几个重要的知识点,主要包括:如何获取当前文件中指定类型文件名列表;如何利用pandas来构造读取数据自定义函数并生成新的字段;如何把所有数据帧存入列表并利用concat方法批量合并,有类似需求的小伙伴们也赶紧动手试一下吧!!!

END

我为人人,人人为我!!欢迎大家关注,点赞和转发!!!

~~人生不是赛场,梦想不容退场~~不断努力学习蜕变出一个更好的自己,不断分享学习路上的收获和感悟帮助他人成就自己!!!

展开阅读全文

页面更新:2024-06-01

标签:批量   路径   文件   数据   遍历   字段   文件名   赛场   格式文件   函数   实例   定义   成就   代码   列表   科技

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top