You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python从不规则TXT提取数据并在Jupyter notebook绘图

基于Python+Jupyter的实现方案

环境依赖

首先确保你已经安装了所需库,未安装可执行以下命令:

pip install pandas matplotlib

数据提取与结构化

我们通过正则表达式匹配每行的有效数据,自动兼容你文件中存在的少量拼写错误(如CPU tim、comparison漏写s等),最终输出结构化的DataFrame方便后续处理:

import re
import pandas as pd
import matplotlib.pyplot as plt

# 配置参数
FILE_PATH = "你的文件路径.txt" # 替换为你的txt文件实际路径

# 定义正则匹配规则,兼容拼写误差
pattern = re.compile(r'Average (\w+) (CPU tim?e?|comparison)\w*, array size (\d+): (\d+)')
data = []

# 读取文件并匹配数据
with open(FILE_PATH, 'r', encoding='utf-8') as f:
    for line in f:
        line = line.strip()
        # 跳过空行和分隔符行
        if not line or line.startswith('#'):
            continue
        match = pattern.search(line)
        if match:
            algo, metric, size, value = match.groups()
            data.append({
                "array_size": int(size),
                "algorithm": algo.lower(),
                "metric": "cpu_time" if "CPU" in metric else "comparison",
                "value": int(value)
            })

# 转换为DataFrame并整理为宽表,方便绘图
df = pd.DataFrame(data)
df_pivot = df.pivot_table(
    index="array_size",
    columns=["algorithm", "metric"],
    values="value"
).reset_index()
# 打印预览结构化后的数据
print(df_pivot.head())

运行后你会得到规整的结构化数据,每行对应一个数组大小的所有指标。

绘制目标图表

1. 数组大小 vs 两种算法CPU时间折线图

plt.figure(figsize=(10,6))
plt.plot(df_pivot['array_size'], df_pivot[('hybridsort','cpu_time')], label='Hybridsort CPU Time', marker='o')
plt.plot(df_pivot['array_size'], df_pivot[('mergesort','cpu_time')], label='Mergesort CPU Time', marker='s')
plt.xlabel('Array Size')
plt.ylabel('CPU Time')
plt.title('CPU Time Comparison Between Hybridsort and Mergesort')
plt.legend()
plt.grid(alpha=0.3)
plt.show()

2. 数组大小 vs 两种算法比较次数折线图

plt.figure(figsize=(10,6))
plt.plot(df_pivot['array_size'], df_pivot[('hybridsort','comparison')], label='Hybridsort Comparisons', marker='o')
plt.plot(df_pivot['array_size'], df_pivot[('mergesort','comparison')], label='Mergesort Comparisons', marker='s')
plt.xlabel('Array Size')
plt.ylabel('Number of Comparisons')
plt.title('Comparison Count Comparison Between Hybridsort and Mergesort')
plt.legend()
plt.grid(alpha=0.3)
plt.show()

如果后续需要调整图表样式、保存图片,可以直接修改matplotlib的相关参数即可。

内容的提问来源于stack exchange,提问作者Ymi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 17:48:03