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

基于指定条件使用DataFrame绘制图表 附示例数据集

我来帮你梳理下如何基于这个示例DataFrame绘制实用的图表,咱们一步步来:

首先先把原始数据整理成更清晰的表格形式,方便后续处理:

IDCharVarepoch
1sr.r/t & (ted: 15--)a-rt1501569011720
1sr.r/t & (ted: 15--)a-er1501569011820
1sr.r/t & (ted: 15--)a-er1501569011870
2sy.w/f & (ted: *18-)a-ge1501569012945
2sy.w/f & (ted: *18-)a-ge1501569012995
2sy.w/f & (ted: *18-)b-we1501569013945
3sr.r/t & (ted: 19:15)sere-we1501569013945
基于指定DataFrame的图表绘制指南

1. 数据预处理:转换时间戳

首先,epoch字段是毫秒级时间戳,我们需要把它转换成Python的datetime格式,这样才能做时序相关的可视化。用pandas处理的代码如下:

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

# 加载示例数据
data = pd.DataFrame({
    'ID': [1,1,1,2,2,2,3],
    'Char': ['sr.r/t & (ted: 15--)','sr.r/t & (ted: 15--)','sr.r/t & (ted: 15--)','sy.w/f & (ted: *18-)','sy.w/f & (ted: *18-)','sy.w/f & (ted: *18-)','sr.r/t & (ted: 19:15)ser'],
    'Var': ['a-rt','a-er','a-er','a-ge','a-ge','b-we','e-we'],
    'epoch': [1501569011720,1501569011820,1501569011870,1501569012945,1501569012995,1501569013945,1501569013945]
})

# 转换epoch为datetime(毫秒级,所以要除以1000)
data['datetime'] = pd.to_datetime(data['epoch'], unit='ms')

2. 常见图表绘制示例

2.1 时序趋势图:按ID分组查看Var的时间分布

这个图表可以帮你看到每个ID下,不同Var类型随时间的变化情况,适合观察事件的时序规律:

plt.figure(figsize=(10,6))
# 用seaborn的散点图,按ID和Var区分颜色
sns.scatterplot(data=data, x='datetime', y='ID', hue='Var', s=100)
plt.title('Var类型随时间的分布(按ID分组)')
plt.xlabel('时间')
plt.ylabel('ID')
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()

说明:这里用散点图是因为每个时间点对应的记录不多,能清晰展示每个ID在不同时间点的Var类型;如果数据量更大,也可以改用折线图连接同一ID的时序点。

2.2 频次柱状图:统计各Var/Char的出现次数

如果想直观看到不同Var或Char的出现频率,可以用柱状图:

统计Var的频次

plt.figure(figsize=(8,5))
var_counts = data['Var'].value_counts()
sns.barplot(x=var_counts.index, y=var_counts.values)
plt.title('各Var类型的出现频次')
plt.xlabel('Var类型')
plt.ylabel('出现次数')
plt.show()

统计每个ID对应的Char分布

plt.figure(figsize=(10,6))
sns.countplot(data=data, x='ID', hue='Char')
plt.title('各ID对应的Char类型分布')
plt.xlabel('ID')
plt.ylabel('记录数')
plt.legend(title='Char类型', bbox_to_anchor=(1.05, 1), loc='upper left')
plt.tight_layout()
plt.show()

2.3 分组时序折线图:查看同一ID内的时间间隔

如果想观察同一ID下记录的时间间隔,可以把每个ID的时间点按顺序连接:

plt.figure(figsize=(10,6))
# 按ID和datetime排序
data_sorted = data.sort_values(['ID', 'datetime'])
for id_val in data_sorted['ID'].unique():
    subset = data_sorted[data_sorted['ID'] == id_val]
    plt.plot(subset['datetime'], subset['Var'], marker='o', label=f'ID {id_val}')
plt.title('各ID内Var类型的时序变化')
plt.xlabel('时间')
plt.ylabel('Var类型')
plt.xticks(rotation=45)
plt.legend()
plt.tight_layout()
plt.show()

3. 自定义图表的思路

如果有特定的分析需求,比如关注Char字段中的ted参数(比如15--、*18-这类),可以先对Char字段做字符串提取,提取出ted的参数后再做可视化:

比如提取ted的值:

# 用正则提取Char中的ted参数
data['ted_param'] = data['Char'].str.extract(r'ted: (.*?)\)')

之后就可以基于ted_param来分组绘制图表,比如查看不同ted参数对应的时间分布。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:46:03