python处理激光雷达(二)

任务:在(一)的基础上,实现循环提取长时间序列,输出在一个excel/csv中。

学习历程:

test1

import os

#path表示路径

path = "E://test//vertical//202204"

filelist = os.listdir(path)

for item in filelist:

print(item)

打印path路径下的所有文件名

test2

##glob.glob():该方法返回所有匹配的文件路径列表(list),不包括子文件夹里的文件

import glob

paths = glob.glob(r'C:\Users\83687\Destop\test]*.xlsx')

#获取test文件夹下的所有excel文件路径

data1 = pd.DataFrame(columns=['日期','类型','收入'])#先构建一个空的数据框

for path in paths:#遍历paths目录

    data = pd.read_excel(path)

    data1 = pd.concat([data1,data])

print(data1)

data1.to_excel(r'C:\Users\83687\Destop\test\test.xlsx')

concatpd. concat是按照某行或某列来合并,而是按照数据中具体的”某一字段”来连接数据。

test3 对一个文件夹中的所有Excel文件的数据合并至一个Excel(新建)的过程

import os
import pandas as pd

os.chdir(r'=============')
写入文件夹位置,=处填入文件夹位置

Result = pd.DataFrame()
建立空DataFrame,存储数据

List_df = []
建立空List,用于存储每个Excel中的数据
Check_list = []
检验列表,用于检验数据是否完整
for Excel_name in os.listdir():
    df = pd.read_excel(Excel_name)
若Excel表中存在多个Sheet表,需指定需要合并的Sheet表名
df = pd.read_excel(Excel_name,sheet_name = +++)

    Check_list.append(df.shape[0])
    df = df[["#######","#######"]]
选择所需要的列,如果是一列,则只需传入一个列名;如果同时选择多列,则传入多个列名即可,多个列名用列表形式封存
如果多个excel文件中的列名一致,则不需此项
#处填入列名

    List_df.append(df)

print(sum(check_list))
Merge_data = Result.append(List_df)
print(Merge_data.shape[0])

#保存为新的Excel文件,且所有数据在一个Sheet中
Merge_data.to_excel(r'***************')

test4:

引自Python3 pandas库(26) 一次读取多个excel文件并合并 – 知乎 https://zhuanlan.zhihu.com/p/31541902

首先是导入pandas库和os库:

第二步是定义文件夹的路径:

第三步是根据文件里表格的列名新建一个空的DataFrame

第四步是利用os库的walk功能遍历文件夹里的所有文件,并读取文件名字。

os.path.join能够将文件夹的路径和文件名字合并成每个文件的完整路径,

然后将每个文件读取,再与空的DataFrame合并

import pandas as pd
import os
inputdir=r'C:\Users\数据\Desktop\新建文件夹'
df_empty=pd.DataFrame(columns=['名称','列1','列2'])
for parents, dirnames, filenames in os.walk(inputdir):
    for filename in filenames:
        df=pd.read_excel(os.path.join(parents,filename))
        df_empty=df_empty.append(df,ignore_index=True)

Python os.walk() 方法 | 菜鸟教程 https://www.runoob.com/python/os-walk.html

import os
for root, dirs, files in os.walk(“.”, topdown=False):
for name in files:
print(os.path.join(root, name))
for name in dirs:
print(os.path.join(root, name))

  • root 所指的是当前正在遍历的这个文件夹的本身的地址
  • dirs 是一个 list ,内容是该文件夹中所有的目录的名字(不包括子目录)
  • files 同样是 list , 内容是该文件夹中所有的文件(不包括子目录)

实现任务代码如下:

import pandas as pd
import os

inputdir=r'E:\test\vertical\test'
df_empty=pd.DataFrame()
for parents, dirnames, filenames in os.walk(inputdir):
    for filename in filenames:
        df=pd.read_csv(os.path.join(parents,filename),skiprows=6,header=None,sep=';',names=['a','b','c','d','e'])
        df_empty=df_empty.append(df,ignore_index=True)
        df1=df_empty.a

df1.to_csv(r'E:/test/vertical/2out.csv',header=False,index=False)

Original: https://blog.csdn.net/jnbvcyn/article/details/125094549
Author: dairui1240
Title: python处理激光雷达(二)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/679281/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球