天天看點

用于清理資料的 5 個簡單有效 Python 腳本

作者:不靠譜的貓
用于清理資料的 5 個簡單有效 Python 腳本

通常情況下,在機器學習中的資料清理往往是一件令人頭疼的事情,本文整理了一份清單,列出了5個常用的Python腳本,用于自動化資料清理。

将 PDF 轉換為 CSV

在機器學習中,我們應該少一些“資料清理”,多一些“資料準備”。當我們需要從白皮書、電子書或其他PDF文檔中抓取資料時,這個腳本為我節省了很多時間。

import tabula
#擷取檔案
pdf_filename = input ("Enter the full path and filename: ")
# 提取PDF的内容
frame = tabula.read_pdf(pdf_filename,  encoding = 'utf-8', pages='all')
#根據内容建立CSV檔案
frame.to_csv('pdf_conversion.csv')           

這是一種相對簡單的快速提取資料的方法,可以在将資料導入機器學習資料庫、Tableau或Count等工具。

合并 CSV 檔案

許多系統會提供導出到CSV選項,但是沒有辦法在導出資料之前首先合并資料。這可能導緻5個以上的檔案導出到一個檔案夾,這些檔案包含相同的資料類型。該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 ] )
#建立新檔案
merged_file.to_csv(path + 'merged_{}.csv'.format(strftime("%m-%d-%yT%H:%M:%S")), index=False)
print('Merge complete.')           

最終輸出将為您提供一個 CSV 檔案,其中包含您從源系統導出的 CSV 清單中的所有資料。

從 CSV 檔案中删除重複的行

如果您需要從CSV檔案中删除重複的資料行,這可以幫助您快速執行清理操作。當機器學習資料集中擁有重複資料時,這會直接影響可視化工具或機器學習項目中的結果。

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)
#建立新檔案
deduplicated_data.to_csv('deduplicated_data.csv')           

拆分 CSV 列

當從其他系統導出檔案時,它有時會包含一列資料,而我們需要将其作為兩列。

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資料添加到dataframe中
df = pd.read_csv(filename)
# 拆分列
df[[col_name_one,col_name_two]] = df[col_to_split].str.split(",", expand=True)
#建立新csv檔案
df.to_csv('split_data.csv')           

合并不同的資料集

假設您有一個帳戶清單和與其關聯的訂單,并希望檢視訂單曆史以及關聯的帳戶詳細資訊。一個很好的方法就是通過合并資料到一個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)
#建立新的csv檔案
joined_data.to_csv('joined_data.csv')           

最後

這些腳本可以有效幫助我們進行自動化清理資料,然後可以将清理後的資料加載到機器學習模型中進行處理。Pandas是操作資料的首選庫,因為它提供了許多的選項。