五個簡單有效的Python清理數(shù)據(jù)腳本分享
將 PDF 轉換為 CSV
在機器學習中,我們應該少一些“數(shù)據(jù)清理”,多一些“數(shù)據(jù)準備”。當我們需要從白皮書、電子書或其他PDF文檔中抓取數(shù)據(jù)時,這個腳本為我節(jié)省了很多時間。
import tabula #獲取文件 pdf_filename = input ("Enter the full path and filename: ") # 提取PDF的內容 frame = tabula.read_pdf(pdf_filename, encoding = 'utf-8', pages='all') #根據(jù)內容創(chuàng)建CSV文件 frame.to_csv('pdf_conversion.csv')
這是一種相對簡單的快速提取數(shù)據(jù)的方法,可以在將數(shù)據(jù)導入機器學習數(shù)據(jù)庫、Tableau或Count等工具。
合并 CSV 文件
許多系統(tǒng)會提供導出到CSV選項,但是沒有辦法在導出數(shù)據(jù)之前首先合并數(shù)據(jù)。這可能導致5個以上的文件導出到一個文件夾,這些文件包含相同的數(shù)據(jù)類型。該Python腳本通過獲取這些文件)并將它們合并到一個文件中來解決這個問題。
from time import strftime import pandas as pd import glob # 定義包含CSV文件的文件夾的路徑 path = input('Please enter the full folder path: ') #確保后面有一個斜杠 if path[:-1] != "/": path = path + "/" #以列表形式獲取CSV文件 csv_files = glob.glob(path + '*.csv') #打開每個CSV文件并合并為一個文件 merged_file = pd.concat( [ pd.read_csv(c) for c in csv_files ] ) #創(chuàng)建新文件 merged_file.to_csv(path + 'merged_{}.csv'.format(strftime("%m-%d-%yT%H:%M:%S")), index=False) print('Merge complete.')
最終輸出將為您提供一個 CSV 文件,其中包含您從源系統(tǒng)導出的 CSV 列表中的所有數(shù)據(jù)。
從 CSV 文件中刪除重復的行
如果您需要從CSV文件中刪除重復的數(shù)據(jù)行,這可以幫助您快速執(zhí)行清理操作。當機器學習數(shù)據(jù)集中擁有重復數(shù)據(jù)時,這會直接影響可視化工具或機器學習項目中的結果。
import pandas as pd # 獲取文件名 filename = input('filename: ') #定義要檢查是否重復的CSV列名 duplicate_header = input('header name: ') #獲取文件的內容 file_contents = pd.read_csv(filename) # 刪除重復的行 deduplicated_data = file_contents.drop_duplicates(subset=[duplicate_header], keep="last", inplace=True) #創(chuàng)建新文件 deduplicated_data.to_csv('deduplicated_data.csv')
拆分 CSV 列
當從其他系統(tǒng)導出文件時,它有時會包含一列數(shù)據(jù),而我們需要將其作為兩列。
import pandas as pd #獲取文件名并定義列 filename = input('filename: ') col_to_split = input('column name: ') col_name_one = input('first new column: ') col_name_two = input('second new column: ') #將CSV數(shù)據(jù)添加到dataframe中 df = pd.read_csv(filename) # 拆分列 df[[col_name_one,col_name_two]] = df[col_to_split].str.split(",", expand=True) #創(chuàng)建新csv文件 df.to_csv('split_data.csv')
合并不同的數(shù)據(jù)集
假設您有一個帳戶列表和與其關聯(lián)的訂單,并希望查看訂單歷史以及關聯(lián)的帳戶詳細信息。一個很好的方法就是通過合并數(shù)據(jù)到一個CSV文件。
import pandas as pd #獲取文件名并定義用戶輸入 left_filename = input('LEFT filename: ') right_filename = input('RIGHT filename: ') join_type = input('join type (outer, inner, left, right): ') join_column_name = input('column name(i.e. Account_ID): ') #讀取文件到dataframes df_left = pd.read_csv(left_filename) df_right = pd.read_csv(right_filename) #加入dataframes joined_data = pd.merge(left = df_left, right = df_right, how = join_type, on = join_column_name) #創(chuàng)建新的csv文件 joined_data.to_csv('joined_data.csv')
最后
這些腳本可以有效幫助我們進行自動化清理數(shù)據(jù),然后可以將清理后的數(shù)據(jù)加載到機器學習模型中進行處理。Pandas是操作數(shù)據(jù)的首選庫,因為它提供了許多的選項。
以上就是五個簡單有效的Python清理數(shù)據(jù)腳本分享的詳細內容,更多關于Python清理數(shù)據(jù)的資料請關注腳本之家其它相關文章!
相關文章
Python解析命令行讀取參數(shù)--argparse模塊使用方法
這篇文章主要介紹了Python解析命令行讀取參數(shù)--argparse模塊使用方法,需要的朋友可以參考下2018-01-01Ubuntu16.04/樹莓派Python3+opencv配置教程(分享)
下面小編就為大家分享一篇Ubuntu16.04/樹莓派Python3+opencv配置教程。具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-04-04python中l(wèi)ambda函數(shù) list comprehension 和 zip函數(shù)使用指南
這篇文章主要介紹了python中l(wèi)ambda函數(shù) list comprehension 和 zip函數(shù)使用方法,非常的實用,有需要的朋友可以參考下2014-09-09Python實現(xiàn)文本文件拆分寫入到多個文本文件的方法
這篇文章主要介紹了Python實現(xiàn)文本文件拆分寫入到多個文本文件的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-04-04python gensim使用word2vec詞向量處理中文語料的方法
這篇文章主要介紹了python gensim使用word2vec詞向量處理中文語料的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-07-07