當前位置: 妍妍網 > 碼農

CleverCSV,一個神奇的 python 庫

2024-04-20碼農

來源丨網路

介紹

CleverCSV 是一個基於 Python 的庫,旨在提供比標準庫 csv 更智慧和靈活的方法來處理 CSV 檔。該庫使用機器學習演算法來探測 CSV 檔的正確撥號結構,從而解決不同 CSV 檔格式導致的讀取問題。它尤其適用於處理具有復雜結構或非標準分隔符的CSV檔。

安裝方式

安裝 CleverCSV 是一個簡單的過程,可以透過 Python 的包管理器 pip 來完成。開啟你的終端或命令提示字元,然後輸入以下命令:

pip install clevercsv

確保你的 pip 版本是最新的,以避免任何與安裝有關的問題。

使用方式

在安裝了 CleverCSV 之後,你可以如下方式使用它來讀取 CSV 檔:

  1. 匯入必要的模組:

import clevercsv

  1. 使用 clevercsv.read_csv() 方法讀取檔,該方法將自動檢測分隔符和引號字元:

dataframe = clevercsv.read_csv("your_file.csv")

  1. 如果你想要獲得更多控制,也可以使用 clevercsv.detect_dialect() 方法來先檢測 CSV 的撥號,然後將這個撥號用在標準的 csv.reader 中:

dialect = clevercsv.detect_dialect("your_file.csv")
with open("your_file.csv", newline=''as csvfile:
reader = csv.reader(csvfile, dialect=dialect)
for row in reader:
print(row)

程式碼範例

由於 CleverCSV 主要是用來自動檢測和讀取 CSV 檔的,一個簡單的例項通常不會超過 150 行程式碼。不過,為了滿足要求,我們可以建立一個包含多個步驟的例子,這個例子將會:

  1. 生成一個復雜的 CSV 檔。

  2. 使用 CleverCSV 探測 CSV 撥號。

  3. 讀取 CSV 檔。

  4. 進行一些數據操作。

  5. 將修改後的數據寫回一個新的 CSV 檔。

這個過程會被分割成多個函式,每個函式將會處理一個步驟。

import clevercsv
import pandas as pd
import numpy as np
import os
# 步驟 1: 生成一個復雜的 CSV 檔
defgenerate_complex_csv(filename, rows=100):
data = {
"Column1": np.random.rand(rows),
"Column2;Column3": np.random.choice(['a''b''c''d'], size=(rows, 2), replace=True).tolist(),
"Column4": np.random.randint(0100, size=rows)
}
df = pd.DataFrame(data)
# 將 "Column2;Column3" 分割成兩列,並合並回數據框 
df[["Column2""Column3"]] = pd.DataFrame(df["Column2;Column3"].tolist(), index=df.index)
df.drop("Column2;Column3", axis=1, inplace=True)
# 將數據寫到 CSV 檔中,使用 ";" 作為分隔符
df.to_csv(filename, sep=';', index=False)
# 步驟 2 和 3: 探測撥號並讀取 CSV
defread_csv_with_clevercsv(filename):
dialect = clevercsv.detect_dialect(filename)
return clevercsv.read_csv(filename, dialect=dialect)
# 步驟 4: 進行一些數據操作
defmanipulate_data(df):
# 假設操作是對 Column4 進行平方
df["Column4"] = df["Column4"] ** 2
return df
# 步驟 5: 將數據寫回 CSV
defwrite_data_to_csv(df, filename):
df.to_csv(filename, index=False)
# 主執行函式
defmain():
# 設定檔名
input_filename = 'complex_data.csv'
output_filename = 'processed_data.csv'
# 生成 CSV
generate_complex_csv(input_filename)
# 讀取 CSV 檔
df = read_csv_with_clevercsv(input_filename)
print("Original Data:")
print(df.head())
# 數據操作
manipulated_df = manipulate_data(df)
print("\nManipulated Data:")
print(manipulated_df.head())
# 寫回新的 CSV 檔
write_data_to_csv(manipulated_df, output_filename)
# 清理生成的檔
os.remove(input_filename)
os.remove(output_filename)
if __name__ == "__main__":
main()











總結

CleverCSV 是一個非常有用的庫,它可以智慧地處理多種格式的 CSV 檔,特別是在結構不規則或分隔符不一致的情況下。雖然 CleverCSV 不需要復雜的程式碼來實作其基本功能,透過結合自訂的數據操作和處理流程,你仍然可以建立包含豐富邏輯的大型指令碼。在處理未知或不規則的 CSV 數據時,CleverCSV 是一個值得嘗試的工具。