利用chatGPT快速将csv数据文件可视化

行云流水
2023-05-04 / 0 评论 / 320 阅读 / 正在检测是否收录...

前言

收到一个csv数据文件,是交换机的流量数据。本文分享如何利用chatGPT快速加数据更加直观的展示。前后只用了10分钟不到,即获得一下效果。

过程

csv数据处理

先简单处理下收到的csv文件,去掉表头。只留下时间和数据列。处理后的数据格式如下。

vim 替换
%s /"""//g
%s /"\%uFEFF""//g

和chatgpt对话过程

需要经过一系列的微调,才得到最终代码。下面只展示,我的提问过程,将chatgpt的回答略去
数据存储在 RT03.csv内,格式为 2023-03-24 16:00:00,3417.6906556000,3417.6128778000 每行1个 直接给出python可视化完整代码
...
美化一下代码
...
value1 改为 Inbound, value2改为 Outbound
...
标题为 交换机流量
...
画两张表,不合并
...
value 值 除1000000000,然后保留2位小数

最终代码

最终生成的代码复制一下,保存到文件。随便起个名字,比如t.py。

import pandas as pd
import matplotlib.pyplot as plt

# 读取 CSV 文件
df = pd.read_csv('a.csv', header=None, names=['datetime', 'Inbound', 'Outbound'])

# 将 datetime 列转换为时间戳类型
df['datetime'] = pd.to_datetime(df['datetime'], format='%Y-%m-%d %H:%M:%S')

# 将 Inbound 和 Outbound 列中的值除以 1e9,即十亿,然后保留真实值
df['Inbound'] = df['Inbound'] / 1e9
df['Outbound'] = df['Outbound'] / 1e9

# 标出 Inbound 和 Outbound 列中的最大值
inbound_max = df['Inbound'].max()
outbound_max = df['Outbound'].max()


# 设置 datetime 列为索引
df.set_index('datetime', inplace=True)

# 绘制 Inbound 的折线图
plt.subplot(2, 1, 1)
plt.plot(df['Inbound'], linestyle='-', color='blue')
plt.title('Inbound Traffic')
plt.xlabel('Time')
plt.ylabel('Value (G)')
plt.annotate(f'Max Inbound: {inbound_max:.2f} G',
             xy=(df['Inbound'].idxmax(), inbound_max),
             xytext=(df.index[-10], inbound_max-5),
             arrowprops=dict(facecolor='pink', arrowstyle='->'))

# 绘制 Outbound 的折线图
plt.subplot(2, 1, 2)
plt.plot(df['Outbound'], linestyle='--', color='red')
plt.title('Outbound Traffic')
plt.xlabel('Time')
plt.ylabel('Value (G)')
plt.annotate(f'Max Outbound: {outbound_max:.2f} G',
             xy=(df['Outbound'].idxmax(), outbound_max),
             xytext=(df.index[-10], outbound_max-5),
             arrowprops=dict(facecolor='pink', arrowstyle='->'))

plt.tight_layout()
plt.show()

执行

最后执行一下,即可获得文章头部的图。更直观的展示数据。
python3 t.py

评论 (0)

取消
只有登录/注册用户才可评论