大数跨境
0
0

Python批量合并TXT文件

Python批量合并TXT文件 大话数据分析
2021-09-13
1
导读:批量合并文本文件,提高工作效率不止一点点~

本节给大家讲如何批量的合并TXT文件,先讲讲TXT文件的概念,TXT文件是微软在操作系统上附带的一种文本格式,是最常见的一种文件格式 ,主要存文本信息,TXT文件格式具有体积小、存储简单方便;格式比较简单,不会中毒,且是电脑和很多移动设备的通用格式的特点,所以在日常中使用TXT文件格式的数据比较多。

在本节的案例中,一共存在四个文件夹内容,包含四种不同类型的电影,其中,(D)电影类型:动作电影、(Q)电影类型:奇幻电影、(W) 电影类型:战争电影、(X)电影类型:喜剧电影

数据表格的字段包括电影名称、上映时间、发行公司、电影导演、电影主演、累计票房(万),数据表格如下所示。

数据获取

公众号后台回复
文本文件
获取本文的数据文件
本节的案例需要使用os、pandas、datetime三个库,要将多个TXT文件汇总,我们的分析思路如下。
先将文件夹的每一个TXT文件目录遍历出来。
import ospath=r'C:\Users\尚天强\Desktop\中国电影'pathlist=os.listdir(path)
print(pathlist)
['(D)电影类型.txt', '(Q)电影类型.txt', '(W)电影类型.txt', '(X)电影类型.txt']
打印今天的日期给合并的文件命名。
import datetimetoday=str(datetime.date.today())day=today.replace("-","")
print(day)
20210912
新建一个空的数据框,列名命名为'电影名称','上映时间','发行公司','电影导演','电影主演','累计票房(万)'。
import pandas as pdmerge_data=pd.DataFrame(columns=['电影名称','上映时间','发行公司','电影导演','电影主演','累计票房(万)'])
print(merge_data)
循环遍历每一个TXT文件夹的表头和数据行。
for file_name in pathlist:    rawdata=open(r'C:\Users\尚天强\Desktop\中国电影'+'\\'+file_name,'r',encoding='utf-8')    line=rawdata.readline()     lines=rawdata.readlines()     print(line)     print(lines)
将遍历的数据统一导入到一个数据框中,数据框的列名叫"中国电影数据"。
data_lines=pd.DataFrame(lines)data_lines.columns=["中国电影数据"]
print(data_lines)
将数据进行分列。
res=data_lines["中国电影数据"].str.split(',',expand=True)
res.head()
分列的数据结果重命名。
res=res.iloc[:,[0,1,2,3,4,5]]res.columns=['电影名称','上映时间','发行公司','电影导演','电影主演','累计票房(万)']
res.head()
根据数据文件表头的字母对电影类型进行打标,比如这里的(X)它对应的电影类型是"喜剧电影"。
type=file_name[0:3]print(type)Dict = {"(D)":"动作电影","(Q)":"奇幻电影","(W)":"战争电影","(X)":"喜剧电影"}res['电影类型'] =typeres['电影类型']=Dict[type]
print(res['电影类型'])
将数据合并的结果全部填充到之前建的merge_data这个空的数据框中,同时添加一列处理日期列,并做去重处理。
result=merge_data.append(res,sort=False) #sort=False合并数据时,避免顺序出错result["处理日期"]=daymerge_data=result.drop_duplicates()
merge_data.head()
至此四个TXT文件的合并结束,导出的结果如下所示。
merge_data.to_excel(r'C:\Users\尚天强\Desktop'+"\\"+"数据合并.xlsx",index=False)
此处的文本文件的合并,代码封装结果如下,使用时可以直接套用。
  
import osimport pandas as pdimport datetime
path=r'C:\Users\尚天强\Desktop\中国电影'pathlist=os.listdir(path)
today=str(datetime.date.today())day=today.replace("-","")
merge_data=pd.DataFrame(columns=['电影名称','上映时间','发行公司','电影导演','电影主演','累计票房(万)'])
for file_name in pathlist:    rawdata=open(path+'\\'+file_name,'r',encoding='UTF-8')    line=rawdata.readline()    lines=rawdata.readlines()    data_lines=pd.DataFrame(lines) data_lines.columns=["中国电影数据"]
#数据分列    res=data_lines["中国电影数据"].str.split(',',expand=True)    res=res.iloc[:,[0,1,2,3,4,5]]    res.columns=['电影名称','上映时间','发行公司','电影导演','电影主演','累计票房(万)']
#电影类型打标    type=file_name[0:3]    res['电影类型'] =type    Dict = {"(D)":"动作电影","(Q)":"奇幻电影","(W)":"战争电影","(X)":"喜剧电影"}    res['电影类型']=Dict[type] result=merge_data.append(res,sort=False) #sort=False合并数据时,避免顺序出错
#数据日期标注,数据去重 result["数据日期"]=day    merge_data=result.drop_duplicates()    merge_data.to_excel(path+"\\"+"数据合并.xlsx",index=False)#数据导出
点赞 | 点在看 | 添加星标 | 内容一键推送
【声明】内容源于网络
0
0
大话数据分析
数据分析的收集者、整理者、分享者、实践者
内容 408
粉丝 0
大话数据分析 数据分析的收集者、整理者、分享者、实践者
总阅读27
粉丝0
内容408