一 总代码示例
下列代码使用pandas方法整理txt数据并生成excel
具体分析见下文
import os
import pandas as pd
# 定义一个函数来处理每个文件夹中的文件
def process_folder(folder_name, folder_path):
# 创建一个空的 DataFrame 来存储结果
results_df = pd.DataFrame(columns=['File Name', 'Red Cones', 'Blue Cones', 'Unknown Cones'])
# 遍历文件夹中的所有文件
for filename in os.listdir(folder_path):
if filename.endswith('.txt'):
file_path = os.path.join(folder_path, filename)
# 读取文件内容,自定义表头
df = pd.read_csv(file_path, header=None, names=['Cone','num', 'Color', 'X', 'Y'],sep='\\t')
# 统计三种颜色的锥桶数量
color_counts = df['Color'].value_counts().reindex([0, 1, 2], fill_value=0)
# 创建一个新的 DataFrame 行来存储统计结果
new_row = pd.DataFrame({
'File Name': filename,
'Red Cones': color_counts[0],
'Blue Cones': color_counts[1],
'Unknown Cones': color_counts[2]
}, index=[0])
# 将新的行添加到结果 DataFrame 中
results_df = pd.concat([results_df, new_row], ignore_index=True)
# 返回结果 DataFrame
return results_df
# 定义主函数
def main():
# 定义 data 文件夹的路径
data_folder = 'data'
training_path = os.path.join(data_folder, 'training')
testing_path = os.path.join(data_folder, 'testing')
# 处理 training 和 testing 文件夹
for folder_name in os.listdir(training_path):
folder_path = os.path.join(training_path, folder_name)
if os.path.isdir(folder_path):
results_df = process_folder(folder_name, folder_path)
# 保存 Excel 文件
results_df.to_excel(f'{folder_name}_ConeColorsCount.xlsx', index=False)
for folder_name in os.listdir(testing_path):
folder_path = os.path.join(testing_path, folder_name)
if os.path.isdir(folder_path):
results_df = process_folder(folder_name, folder_path)
# 保存 Excel 文件
results_df.to_excel(f'{folder_name}_ConeColorsCount.xlsx', index=False)
# 执行主函数
if __name__ == '__main__':
main()
二 相关环节
2.1 引用库
import os
import pandas as pd
2.2 遍历txt文件
2.2.1 在主函数中定义txt数据文件夹的路径(最好是放在代码同一目录下)
# 定义 data 文件夹的路径
data_folder = 'data'
training_path = os.path.join(data_folder, 'training')//''中写数据文件的路径
testing_path = os.path.join(data_folder, 'testing')
2.2.2 遍历文件夹中文件方法
for filename in os.listdir(folder_path):
if filename.endswith('.txt'):
file_path = os.path.join(folder_path, filename)
# 读取文件内容,自定义表头
df = pd.read_csv(file_path, header=None, names=['Cone','num', 'Color', 'X', 'Y'],sep='\\t')
重点:!!注意这里csv表示txt文件的数据格式,并且用pd.read_csv的时候需要定义表头,如果文本文件中的CSV数据没有列名,Python的pandas
库在读取文件时会默认将第一行的数据作为列名。因此,通常情况下,你不需要明确指定列名。pandas
会自动识别第一行的数据作为列标签。
下面统计方法比较简单,并且根据数据不同、需求不同可以写不同的方法
2.3
最后就是分别处理数据所在的文件夹,并生成excel,放入结果
for folder_name in os.listdir(training_path):
folder_path = os.path.join(training_path, folder_name)
if os.path.isdir(folder_path):
results_df = process_folder(folder_name, folder_path)
# 保存 Excel 文件
results_df.to_excel(f'{folder_name}_ConeColorsCount.xlsx', index=False)
excel文件将生成在代码所在目录下。