如何格式化DataFrame并分组统计COUNT以绘制Plotly折线图?
解决方案
步骤1:统一时间列格式
先确保TIMESTAMP DATE列是datetime类型,避免分组时因格式错误导致异常:
import pandas as pd import plotly.express as px # 模拟你的数据结构(替换成真实数据即可) data = { 'ORIGEN': ['站点1', '站点1', '站点2', '站点1', '站点2', '站点2'], 'TIMESTAMP DATE': ['2024-05-01', '2024-05-01', '2024-05-01', '2024-05-02', '2024-05-02', '2024-05-03'] } df = pd.DataFrame(data) # 转换时间列格式 df['TIMESTAMP DATE'] = pd.to_datetime(df['TIMESTAMP DATE'])
步骤2:分组统计计数
直接通过groupby结合size()统计每组的条目数,重置索引后得到带COUNT列的目标DataFrame:
# 按ORIGEN和时间分组,统计每组数量 grouped_df = df.groupby(['ORIGEN', 'TIMESTAMP DATE']).size().reset_index(name='COUNT')
这里用size()比count()更直观,它直接统计分组后的行数,不会过滤空值(若数据存在空值场景)。
步骤3:绘制Plotly折线图
用px.line快速生成折线图,通过color参数区分不同ORIGEN的系列:
# 生成折线图 fig = px.line(grouped_df, x='TIMESTAMP DATE', y='COUNT', color='ORIGEN', markers=True, # 显示数据点标记 title='各ORIGEN按时间的计数趋势') fig.show()
补全缺失日期(可选)
如果部分日期下某个ORIGEN没有数据导致折线断裂,可以用重采样补全缺失值:
# 按ORIGEN分组后,补全每日数据,缺失计数填0 grouped_df = grouped_df.set_index('TIMESTAMP DATE').groupby('ORIGEN').resample('D').asfreq()['COUNT'].fillna(0).reset_index()
内容的提问来源于stack exchange,提问作者Carlos Char
相关产品推荐
相关产品推荐

