??本文介紹基于Python語言,針對一個文件夾下大量的Excel表格文件,基于其中每一個文件,隨機從其中選取一部分數據,并將全部文件中隨機獲取的數據合并為一個新的Excel表格文件的方法。
??首先,我們來明確一下本文的具體需求。現有一個文件夾,其中有大量的Excel表格文件(在本文中我們就以.csv
格式的文件為例);如下圖所示。
??其中,每一個Excel表格文件都有著如下圖所示的數據格式;其中的第1
行表示每一列的名稱,第1
列則表示時間。
??我們希望實現的,就是從每一個Excel表格文件中,隨機選取10
行數據(第1
行數據肯定不能被選進去,因為其為列名;第1
列數據也不希望被選進去,因為這個是表示時間的數據,我們后期不需要),并將這一文件夾中全部的Excel表格文件中每一個隨機選出的10
行數據合并到一起,作為一個新的Excel表格文件。
??明白了需求,我們即可開始代碼的撰寫;本文用到的具體代碼如下所示。
# -*- coding: utf-8 -*-
"""
Created on Fri May 19 01:47:06 2023@author: fkxxgis
"""import os
import pandas as pdoriginal_path = "E:/01_Reflectivity/99_Model_Training/00_Data/02_Extract_Data/19_2022Data"
result_path = "E:/01_Reflectivity/99_Model_Training/00_Data/02_Extract_Data/20_Train_Model"result_df = pd.DataFrame()for file in os.listdir(original_path):if file.endswith(".csv"):df = pd.read_csv(os.path.join(original_path, file))sample_df = df.sample(n = 10, axis = 0)sample_df = sample_df.iloc[ : , 1 : ]result_df = pd.concat([result_df, sample_df])result_df.to_csv(os.path.join(result_path, "Train_Model_1.csv"), index = False)
??代碼中首先定義了原始數據文件夾(也就是有大量Excel表格文件的文件夾)路徑和結果數據文件夾路徑。然后,創建了一個空的DataFrame
,用于存儲抽樣后的數據。
??接下來是一個for
循環,遍歷了原始數據文件夾中的所有.csv
文件,如果文件名以.csv
結尾,則讀取該文件。然后,使用Pandas中的sample()
函數隨機抽取了該文件中的10
行數據,并使用iloc[]
函數刪除了10
行數據中的第1
列(為了防止第1
列表示時間的列被選中,因此需要刪除)。最后,使用Pandas中的concat()
函數將抽樣后的數據添加到結果DataFrame
中。
??最后,使用Pandas中的to_csv()
函數將結果DataFrame
保存到結果數據文件夾中,文件名為Train_Model_1.csv
,并設置index = False
表示不保存索引。
??運行上述代碼,我們即可獲得數據合并后的文件,且第1
列數據也已經被剔除了。
??至此,大功告成。
文章轉載自:瘋狂學習GIS
原文鏈接:https://www.cnblogs.com/fkxxgis/p/18600993
體驗地址:引邁 - JNPF快速開發平臺_低代碼開發平臺_零代碼開發平臺_流程設計器_表單引擎_工作流引擎_軟件架構