介绍CleverCSV 是一个基于 Python 的库,旨在提供比标准库 csv 更智能和灵活的方法来处理 CSV 文件。该库使用机器学习算法来探测 CSV 文件的正确拨号结构,从而解决不同 CSV 文件格式导致的读取问题。它尤其适用于处理具有复杂结构或非标准分隔符的CSV文件。
安装方式安装 CleverCSV 是一个简单的过程,可以通过 Python 的包管理器 pip 来完成。打开你的终端或命令提示符,然后输入以下命令:
pip install clevercsv确保你的 pip 版本是最新的,以避免任何与安装有关的问题。
使用方式在安装了 CleverCSV 之后,你可以如下方式使用它来读取 CSV 文件:
import clevercsv使用 clevercsv.read_csv() 方法读取文件,该方法将自动检测分隔符和引号字符: dataframe = clevercsv.read_csv("your_file.csv" )如果你想要获得更多控制,也可以使用 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 行代码。不过,为了满足要求,我们可以创建一个包含多个步骤的例子,这个例子将会:
这个过程会被分割成多个函数,每个函数将会处理一个步骤。
import clevercsvimport pandas as pdimport numpy as npimport os# 步骤 1: 生成一个复杂的 CSV 文件 def generate_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(0 , 100 , 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 def read_csv_with_clevercsv (filename) : dialect = clevercsv.detect_dialect(filename) return clevercsv.read_csv(filename, dialect=dialect)# 步骤 4: 进行一些数据操作 def manipulate_data (df) : # 假设操作是对 Column4 进行平方 df["Column4" ] = df["Column4" ] ** 2 return df# 步骤 5: 将数据写回 CSV def write_data_to_csv (df, filename) : df.to_csv(filename, index=False )# 主执行函数 def main () : # 设置文件名 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 是一个值得尝试的工具。
🏴☠️宝藏级🏴☠️ 原创公众号『数据STUDIO 』内容超级硬核。公众号以Python为核心语言,垂直于数据科学领域,包括 可戳 👉 Python | MySQL | 数据分析 | 数据可视化 |
机器学习与数据挖掘 | 爬虫 等,从入门到进阶! 长按👇关注- 数据STUDIO -设为星标,干货速递