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

按30秒时间间隔分组Pandas DataFrame并可视化的问题

Pandas按30秒间隔分组及可视化问题解答

1. 查看分组后的DataFrame内容

分组得到的g是GroupBy对象,没法直接打印完整内容,试试这些方法:

  • 遍历所有分组:循环GroupBy对象,逐个输出时间区间和对应数据:
for interval, group_data in g:
    print(f"时间区间: {interval}")
    print(group_data)
    print("---")
  • 查看单个分组:用get_group()指定时间区间,提取该组数据:
# 先获取所有分组的时间键,再取第一个分组示例
first_interval = list(g.groups.keys())[0]
print(g.get_group(first_interval))
  • 整合为层级索引DataFrame:把所有分组合并成一个带层级索引的DataFrame,方便整体查看:
grouped_df = g.apply(lambda x: x.reset_index(drop=True))
print(grouped_df)

2. 绘制每30秒间隔内唯一data的数量

先统计每个时间区间的唯一data数,再可视化:

第一步:统计唯一值数量

用nunique()直接计算每个分组的唯一data条目数:

unique_counts = g['data'].nunique()
# 先看下统计结果
print(unique_counts)

输出是一个Series,索引是时间区间,值为对应区间的唯一data数量。

第二步:可视化展示

用Pandas结合Matplotlib绘制柱状图,清晰展示分布:

import matplotlib.pyplot as plt

# 绘制柱状图
unique_counts.plot(kind='bar', figsize=(10, 6))
plt.title('每30秒间隔内唯一data数量')
plt.xlabel('时间区间')
plt.ylabel('唯一data数量')
plt.xticks(rotation=45)
plt.tight_layout()  # 避免x轴标签被截断
plt.show()

如果想要更美观的样式,也可以用Seaborn:

import seaborn as sns
import matplotlib.pyplot as plt

# 转换为DataFrame格式适配Seaborn
count_df = unique_counts.reset_index(name='unique_count')

sns.barplot(data=count_df, x='timestamp', y='unique_count')
plt.title('每30秒间隔内唯一data数量')
plt.xlabel('时间区间')
plt.ylabel('唯一data数量')
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 03:35:22