下面是详细的讲解:
步骤一:读取txt文件并转换为二维列表
首先,我们需要使用Python中的内置函数打开并读取文本文件。在本示例中,建议使用with open()
语句打开文件,以确保在读取完文件后关闭它。读取文件后,我们可以使用splitlines()
方法分割文件中的所有行,并使用split()
方法分割每一行的各项数据,最终形成一个二维列表。
在本示例中,假设我们的txt文件中包含了学生的姓名、年龄和成绩,每行数据之间使用逗号进行分割,示例代码如下:
with open('student_scores.txt', 'r') as f:
lines = f.read().splitlines()
data = [line.split(',') for line in lines]
上述代码将会读取名为student_scores.txt
的文件,并将其中的所有行分割为一个二维列表data
,每一项数据包含了学生的姓名、年龄和成绩。
步骤二:将数据写入csv文件
一旦我们已经成功将txt文件中的数据转化为Python中的数据结构,我们就可以将它们写入到一个csv文件中。为此,我们将使用Python中的内置csv
模块,该模块提供了一种方便的方式来读取、写入和操作csv文件。
在本示例中,我们将使用csv.writer()
方法将我们的数据写入csv文件中。示例代码如下:
import csv
with open('student_scores.csv', 'w', newline='') as f:
writer = csv.writer(f)
writer.writerows(data)
上述代码首先导入了csv
模块,然后使用with open()
语句打开一个名为student_scores.csv
的csv文件,并使用csv.writer()
方法创建一个writer
对象。
接下来,我们使用writer.writerows()
方法将我们的数据写入到csv文件中。writer.writerows()
方法接受一个二维列表作为参数,每一维表示一行数据,每一项表示一个单元格数据。
在示例代码中,我们将二维列表data
作为参数传递给writer.writerows()
方法,这将会将我们之前读取和处理的所有数据写入csv文件中。
示例说明一:统计电信客户数据
假设我们有一个超大的txt文件,其中包含了电信客户的信息,我们需要统计每个客户的通话时长、短信数量和数据流量。这是一个典型的数据处理场景,我们可以使用Python来轻松地完成。
在本示例中,我们需要将txt文件转换为CSV格式,然后使用Python内置的数据结构来进行统计。首先,我们需要读取txt文件并转换为二维列表,示例代码如下:
with open('telecom_data.txt', 'r') as f:
# 使用splitlines()方法分割文件中的所有行,并使用split()方法分割每一行的各项数据
lines = f.read().splitlines()
data = [line.split(',') for line in lines]
完成数据的读取和处理之后,我们可以使用Python内置的数据结构进行统计。示例代码如下:
from collections import defaultdict
# 使用defaultdict来初始化一个字典,统计每个客户的通话时长、短信数量和数据流量
customer_stats = defaultdict(lambda: [0, 0, 0])
for row in data:
customer_id, call_duration, sms_count, data_usage = row
# 将通话时长、短信数量和数据流量累计到相应的客户记录中
customer_stats[customer_id][0] += int(call_duration)
customer_stats[customer_id][1] += int(sms_count)
customer_stats[customer_id][2] += int(data_usage)
上述代码中,我们使用defaultdict
来初始化一个字典,在字典中记录每个客户的通话时长、短信数量和数据流量。然后,我们遍历二维列表data
中的每一个元素,将相应的统计数据累计到对应的客户记录中。
最后,我们可以将统计结果输出到一个CSV文件中,示例代码如下:
with open('telecom_stats.csv', 'w', newline='') as f:
writer = csv.writer(f)
writer.writerow(['Customer ID', 'Call Duration', 'SMS Count', 'Data Usage'])
for customer_id, stats in customer_stats.items():
writer.writerow([customer_id] + stats)
上述代码中,我们使用csv.writer()
方法创建一个writer
对象,并将每个客户的统计数据输出到一个名为telecom_stats.csv
的CSV文件中。
示例说明二:转存模型训练数据
假设我们有一个超大的txt文件,其中包含了模型训练所需的特征数据和标签数据,我们需要将其转换为CSV格式,并用于模型训练。这是机器学习领域常见的数据处理场景,我们也可以使用Python来完成它。
在本示例中,我们需要将txt文件转换为CSV格式,并使用Python内置的数据结构来将其拆分为特征数据和标签数据。首先,我们需要读取txt文件并转换为二维列表,示例代码如下:
with open('model_data.txt', 'r') as f:
# 使用splitlines()方法分割文件中的所有行,并使用split()方法分割每一行的各项数据
lines = f.read().splitlines()
data = [line.split(',') for line in lines]
理解这一步之后我们可以得出结论:任何在python中需要处理的数据,我都可以通过读取处理/转换/切片/合并等一系列简单操作达到目的。
完成数据的读取和处理之后,我们可以将二维列表拆分为特征数据和标签数据。示例代码如下:
# 从二维列表中分离出特征数据和标签数据
features = [row[:-1] for row in data]
labels = [row[-1] for row in data]
上述代码中,我们使用 Python 的传统切片方式,将特征数据和标签数据分别从二维列表中提取出来。
最后,我们可以将特征数据和标签数据输出到两个CSV文件中,示例代码如下:
with open('model_features.csv', 'w', newline='') as f:
writer = csv.writer(f)
writer.writerows(features)
with open('model_labels.csv', 'w', newline='') as f:
writer = csv.writer(f)
writer.writerow(['Label'])
writer.writerows([[label] for label in labels])
上述代码中,我们使用csv.writer()
方法分别创建两个writer
对象,并将特征数据和标签数据输出到名为model_features.csv
和model_labels.csv
的CSV文件中。
这个示例说明中更加强调了将原始大数据拆分为所研究需要的小数据。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python 快速把超大txt文件转存为csv的实例 - Python技术站