处理非常大的文本文件和聚类分析
Manipulating very large text file and clustering analysis
我正在尝试使用无法使用普通文本编辑器打开的(非常)大的 45gb .txt 文件。
虽然每个参数中也有空格,但每一行中的数据都以空格分隔。例如,1 行看起来有点像这样:
University of Cambridge CB2 1TQ 0001234567 2011-01-25 12345 11.12345
12.12345 13.12345 14.1234 16.2716)
我想要的基本上是清理它,过滤一些数据,总结一些 cells/parameters,将一些额外的数据附加到每一行,并执行聚类分析(可能使用 python或 C#,因为我正在开始学习它)。
好吧,将它放在数据库中听起来是个不错的开始,而不是尝试从文本文件中处理所有数据。如果您知道您现在可以过滤数据,那么这也可能会让生活变得更轻松。
with open("file.txt", "r") as file:
for line in file:
# Filter
# If filter passes, add to batch
# At a batch size n, insert to db and restart batch
现在您的数据在数据库中,您可以以更高效的方式对其执行任意 SQL 查询,获取总和等聚合统计信息,并附加值。您可以从中提取样本用于 ML 操作或使用 fit generator
方法进行查询。我在 Python scikit-learn 中使用过集群实现,我很喜欢使用它们,但我不记得有任何内存不足的实现。 (我无法使用 C# 库,因为我没有使用过它们。)
Python 在 stdlib 中有像 https://docs.python.org/3/library/sqlite3.html
这样的数据库 API
Python 具有 https://www.sqlalchemy.org/
的 ORM
Python 也有 public 云数据库 SDK,例如
https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/rds.html
和
https://cloud.google.com/python/getting-started/using-cloud-sql
我正在尝试使用无法使用普通文本编辑器打开的(非常)大的 45gb .txt 文件。
虽然每个参数中也有空格,但每一行中的数据都以空格分隔。例如,1 行看起来有点像这样:
University of Cambridge CB2 1TQ 0001234567 2011-01-25 12345 11.12345 12.12345 13.12345 14.1234 16.2716)
我想要的基本上是清理它,过滤一些数据,总结一些 cells/parameters,将一些额外的数据附加到每一行,并执行聚类分析(可能使用 python或 C#,因为我正在开始学习它)。
好吧,将它放在数据库中听起来是个不错的开始,而不是尝试从文本文件中处理所有数据。如果您知道您现在可以过滤数据,那么这也可能会让生活变得更轻松。
with open("file.txt", "r") as file:
for line in file:
# Filter
# If filter passes, add to batch
# At a batch size n, insert to db and restart batch
现在您的数据在数据库中,您可以以更高效的方式对其执行任意 SQL 查询,获取总和等聚合统计信息,并附加值。您可以从中提取样本用于 ML 操作或使用 fit generator
方法进行查询。我在 Python scikit-learn 中使用过集群实现,我很喜欢使用它们,但我不记得有任何内存不足的实现。 (我无法使用 C# 库,因为我没有使用过它们。)
Python 在 stdlib 中有像 https://docs.python.org/3/library/sqlite3.html
这样的数据库 APIPython 具有 https://www.sqlalchemy.org/
的 ORMPython 也有 public 云数据库 SDK,例如
https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/rds.html
和
https://cloud.google.com/python/getting-started/using-cloud-sql