Python plotly Express 直方图:图表未显示所有唯一 TIME_BUCKET 值,它以每小时值的形式聚集 TIME_BUCKETs

Python plotly Express Histogram: Graph not showing all unique TIME_BUCKET values, it clubbing TIME_BUCKETs in hourly value

我的 CSV 内容有 1.1K 列这样的三列。这具有 5 分钟 TIME_BUCKET 的值,例如 03:40:00+00:00、03:45:00+00:00 等。 我希望图表绘制所有这些不同的 TIME_BUCKETS 的直方图,但它实际上绘制了每小时时间桶的图表,如 03:00、04:00 等

我的代码如下

import pandas as pd
import plotly.express as px

df = pd.read_csv("D:/Work/WORK/2021/FEB21/BiPA/nqquery/Issue/5MinTimeBucketHistogramNotWorking1.csv")
graph = px.histogram(df, x='TIME_BUCKET', color='REPORT_NAME', title='Report Category Wise Execution Count (5 minuntes sample size)')
graph.show()

我的 CSV 内容如下所示,有 1.1K 列。共享整个 CSV here 以供参考。

   ,REPORT_NAME,TIME_BUCKET
23,DashboardReport,2021-01-20 03:30:00+00:00
33,DashboardReport,2021-01-20 03:40:00+00:00
69,ExportReport,2021-01-20 03:40:00+00:00
74,ExportReport,2021-01-20 03:40:00+00:00
97,ExportReport,2021-01-20 03:40:00+00:00
98,ExportReport,2021-01-20 03:40:00+00:00
99,ExportReport,2021-01-20 03:40:00+00:00
101,ExportReport,2021-01-20 03:40:00+00:00
103,ExportReport,2021-01-20 03:40:00+00:00
2821,DashboardReport,2021-01-20 15:40:00+00:00
2822,DashboardReport,2021-01-20 15:40:00+00:00
2823,DashboardReport,2021-01-20 15:45:00+00:00
2896,DashboardReport,2021-01-20 16:15:00+00:00
3283,SQLReport,2021-01-20 19:00:00+00:00
3285,DashboardReport,2021-01-20 19:00:00+00:00
3288,DashboardReport,2021-01-20 19:05:00+00:00
3289,DashboardReport,2021-01-20 19:05:00+00:00
3292,ImportReport,2021-01-20 19:05:00+00:00
3293,DashboardReport,2021-01-20 19:05:00+00:00
3294,DashboardReport,2021-01-20 19:05:00+00:00
3295,DashboardReport,2021-01-20 19:10:00+00:00
3297,DashboardReport,2021-01-20 19:10:00+00:00
3298,SQLReport,2021-01-20 19:10:00+00:00
3300,DashboardReport,2021-01-20 19:10:00+00:00
3303,SQLReport,2021-01-20 19:15:00+00:00
3307,ImportReport,2021-01-20 19:15:00+00:00
3309,DashboardReport,2021-01-20 19:15:00+00:00
3312,DashboardReport,2021-01-20 19:15:00+00:00
3313,DashboardReport,2021-01-20 19:15:00+00:00
3314,SQLReport,2021-01-20 19:15:00+00:00
3315,DashboardReport,2021-01-20 19:15:00+00:00
3316,DashboardReport,2021-01-20 19:15:00+00:00
3317,DashboardReport,2021-01-20 19:15:00+00:00
3318,ImportReport,2021-01-20 19:15:00+00:00
3319,DashboardReport,2021-01-20 19:15:00+00:00
3324,DashboardReport,2021-01-20 19:20:00+00:00
3328,SQLReport,2021-01-20 19:20:00+00:00
3331,ImportReport,2021-01-20 19:20:00+00:00
3332,ImportReport,2021-01-20 19:20:00+00:00
3335,DashboardReport,2021-01-20 19:20:00+00:00
3336,ImportReport,2021-01-20 19:20:00+00:00
3337,DashboardReport,2021-01-20 19:20:00+00:00
3339,DashboardReport,2021-01-20 19:20:00+00:00
3344,DashboardReport,2021-01-20 19:20:00+00:00
3345,DashboardReport,2021-01-20 19:20:00+00:00
3349,DBReport,2021-01-20 19:20:00+00:00
3350,SQLReport,2021-01-20 19:20:00+00:00
3354,DashboardReport,2021-01-20 19:20:00+00:00
3355,DashboardReport,2021-01-20 19:20:00+00:00
3356,DashboardReport,2021-01-20 19:20:00+00:00
3357,DashboardReport,2021-01-20 19:20:00+00:00
3358,DashboardReport,2021-01-20 19:20:00+00:00
3359,DashboardReport,2021-01-20 19:20:00+00:00
3360,DashboardReport,2021-01-20 19:20:00+00:00
3368,DashboardReport,2021-01-20 19:25:00+00:00
3370,DashboardReport,2021-01-20 19:25:00+00:00
3375,DashboardReport,2021-01-20 19:25:00+00:00
3377,DashboardReport,2021-01-20 19:30:00+00:00
3379,DashboardReport,2021-01-20 19:30:00+00:00
3381,DashboardReport,2021-01-20 19:30:00+00:00
3384,DashboardReport,2021-01-20 19:30:00+00:00
3396,ImportReport,2021-01-20 19:40:00+00:00
3398,DashboardReport,2021-01-20 19:40:00+00:00
3403,DashboardReport,2021-01-20 19:45:00+00:00
3404,DashboardReport,2021-01-20 19:45:00+00:00
3408,DashboardReport,2021-01-20 19:45:00+00:00
3410,DashboardReport,2021-01-20 19:45:00+00:00
3418,DashboardReport,2021-01-20 19:50:00+00:00
3419,SQLReport,2021-01-20 19:50:00+00:00
3421,DashboardReport,2021-01-20 19:50:00+00:00
3422,DashboardReport,2021-01-20 19:50:00+00:00
3429,DashboardReport,2021-01-20 19:50:00+00:00
3434,DashboardReport,2021-01-20 19:55:00+00:00
3443,ImportReport,2021-01-20 20:00:00+00:00
3444,ImportReport,2021-01-20 20:00:00+00:00
3450,DBReport,2021-01-20 20:05:00+00:00
3451,DBReport,2021-01-20 20:05:00+00:00
3489,SQLReport,2021-01-20 20:20:00+00:00
3490,ImportReport,2021-01-20 20:20:00+00:00
3496,DashboardReport,2021-01-20 20:20:00+00:00
3499,ImportReport,2021-01-20 20:25:00+00:00
3501,DashboardReport,2021-01-20 20:25:00+00:00
3505,DashboardReport,2021-01-20 20:25:00+00:00
3513,SQLReport,2021-01-20 20:30:00+00:00
3514,DashboardReport,2021-01-20 20:35:00+00:00
3521,SQLReport,2021-01-20 20:35:00+00:00
3522,DashboardReport,2021-01-20 20:35:00+00:00
3523,DashboardReport,2021-01-20 20:35:00+00:00
3527,DashboardReport,2021-01-20 20:40:00+00:00
3537,DashboardReport,2021-01-20 20:40:00+00:00
3538,DashboardReport,2021-01-20 20:40:00+00:00
3540,DashboardReport,2021-01-20 20:45:00+00:00
3549,DashboardReport,2021-01-20 20:50:00+00:00
3552,DashboardReport,2021-01-20 20:55:00+00:00
3555,SQLReport,2021-01-20 20:55:00+00:00
3556,DashboardReport,2021-01-20 20:55:00+00:00
3557,SQLReport,2021-01-20 20:55:00+00:00
3558,DashboardReport,2021-01-20 20:55:00+00:00

输出如下所示

您的 df['TIME_BUCKETS'] 毫不奇怪地被 plotly 解释为连续时间,并在连续的 x 轴上显示为连续时间。如果您想显示存储桶 类别 的值,就像它们出现在您的数据框中一样,只需添加:

fig.update_xaxes(type='category')

如果你也稍微调整一下 ticktext 的 font size,那么你会得到这样的结果:

请注意,我在以下位置使用了 df['TIME_BUCKETS'] 的格式化版本:

df['buckets'] = [dat[11:16] for dat in df['TIME_BUCKET']]

如果你不这样做,你会得到这样的结果:

带有数据示例的完整代码:

import pandas as pd
import plotly.express as px

df.to_dict()
df = pd.DataFrame({'   ': {0: 23,
  1: 33,
  2: 69,
  3: 74,
  4: 97,
  5: 98,
  6: 99,
  7: 101,
  8: 103,
  9: 2821,
  10: 2822,
  11: 2823,
  12: 2896,
  13: 3283,
  14: 3285,
  15: 3288,
  16: 3289,
  17: 3292,
  18: 3293,
  19: 3294,
  20: 3295,
  21: 3297,
  22: 3298,
  23: 3300,
  24: 3303,
  25: 3307,
  26: 3309,
  27: 3312,
  28: 3313,
  29: 3314,
  30: 3315,
  31: 3316,
  32: 3317,
  33: 3318,
  34: 3319,
  35: 3324,
  36: 3328,
  37: 3331,
  38: 3332,
  39: 3335,
  40: 3336,
  41: 3337,
  42: 3339,
  43: 3344,
  44: 3345,
  45: 3349,
  46: 3350,
  47: 3354,
  48: 3355,
  49: 3356,
  50: 3357,
  51: 3358,
  52: 3359,
  53: 3360,
  54: 3368,
  55: 3370,
  56: 3375,
  57: 3377,
  58: 3379,
  59: 3381,
  60: 3384,
  61: 3396,
  62: 3398,
  63: 3403,
  64: 3404,
  65: 3408,
  66: 3410,
  67: 3418,
  68: 3419,
  69: 3421,
  70: 3422,
  71: 3429,
  72: 3434,
  73: 3443,
  74: 3444,
  75: 3450,
  76: 3451,
  77: 3489,
  78: 3490,
  79: 3496,
  80: 3499,
  81: 3501,
  82: 3505,
  83: 3513,
  84: 3514,
  85: 3521,
  86: 3522,
  87: 3523,
  88: 3527,
  89: 3537,
  90: 3538,
  91: 3540,
  92: 3549,
  93: 3552,
  94: 3555,
  95: 3556,
  96: 3557,
  97: 3558},
 'REPORT_NAME': {0: 'DashboardReport',
  1: 'DashboardReport',
  2: 'ExportReport',
  3: 'ExportReport',
  4: 'ExportReport',
  5: 'ExportReport',
  6: 'ExportReport',
  7: 'ExportReport',
  8: 'ExportReport',
  9: 'DashboardReport',
  10: 'DashboardReport',
  11: 'DashboardReport',
  12: 'DashboardReport',
  13: 'SQLReport',
  14: 'DashboardReport',
  15: 'DashboardReport',
  16: 'DashboardReport',
  17: 'ImportReport',
  18: 'DashboardReport',
  19: 'DashboardReport',
  20: 'DashboardReport',
  21: 'DashboardReport',
  22: 'SQLReport',
  23: 'DashboardReport',
  24: 'SQLReport',
  25: 'ImportReport',
  26: 'DashboardReport',
  27: 'DashboardReport',
  28: 'DashboardReport',
  29: 'SQLReport',
  30: 'DashboardReport',
  31: 'DashboardReport',
  32: 'DashboardReport',
  33: 'ImportReport',
  34: 'DashboardReport',
  35: 'DashboardReport',
  36: 'SQLReport',
  37: 'ImportReport',
  38: 'ImportReport',
  39: 'DashboardReport',
  40: 'ImportReport',
  41: 'DashboardReport',
  42: 'DashboardReport',
  43: 'DashboardReport',
  44: 'DashboardReport',
  45: 'DBReport',
  46: 'SQLReport',
  47: 'DashboardReport',
  48: 'DashboardReport',
  49: 'DashboardReport',
  50: 'DashboardReport',
  51: 'DashboardReport',
  52: 'DashboardReport',
  53: 'DashboardReport',
  54: 'DashboardReport',
  55: 'DashboardReport',
  56: 'DashboardReport',
  57: 'DashboardReport',
  58: 'DashboardReport',
  59: 'DashboardReport',
  60: 'DashboardReport',
  61: 'ImportReport',
  62: 'DashboardReport',
  63: 'DashboardReport',
  64: 'DashboardReport',
  65: 'DashboardReport',
  66: 'DashboardReport',
  67: 'DashboardReport',
  68: 'SQLReport',
  69: 'DashboardReport',
  70: 'DashboardReport',
  71: 'DashboardReport',
  72: 'DashboardReport',
  73: 'ImportReport',
  74: 'ImportReport',
  75: 'DBReport',
  76: 'DBReport',
  77: 'SQLReport',
  78: 'ImportReport',
  79: 'DashboardReport',
  80: 'ImportReport',
  81: 'DashboardReport',
  82: 'DashboardReport',
  83: 'SQLReport',
  84: 'DashboardReport',
  85: 'SQLReport',
  86: 'DashboardReport',
  87: 'DashboardReport',
  88: 'DashboardReport',
  89: 'DashboardReport',
  90: 'DashboardReport',
  91: 'DashboardReport',
  92: 'DashboardReport',
  93: 'DashboardReport',
  94: 'SQLReport',
  95: 'DashboardReport',
  96: 'SQLReport',
  97: 'DashboardReport'},
 'TIME_BUCKET': {0: '2021-01-20 03:30:00+00:00',
  1: '2021-01-20 03:40:00+00:00',
  2: '2021-01-20 03:40:00+00:00',
  3: '2021-01-20 03:40:00+00:00',
  4: '2021-01-20 03:40:00+00:00',
  5: '2021-01-20 03:40:00+00:00',
  6: '2021-01-20 03:40:00+00:00',
  7: '2021-01-20 03:40:00+00:00',
  8: '2021-01-20 03:40:00+00:00',
  9: '2021-01-20 15:40:00+00:00',
  10: '2021-01-20 15:40:00+00:00',
  11: '2021-01-20 15:45:00+00:00',
  12: '2021-01-20 16:15:00+00:00',
  13: '2021-01-20 19:00:00+00:00',
  14: '2021-01-20 19:00:00+00:00',
  15: '2021-01-20 19:05:00+00:00',
  16: '2021-01-20 19:05:00+00:00',
  17: '2021-01-20 19:05:00+00:00',
  18: '2021-01-20 19:05:00+00:00',
  19: '2021-01-20 19:05:00+00:00',
  20: '2021-01-20 19:10:00+00:00',
  21: '2021-01-20 19:10:00+00:00',
  22: '2021-01-20 19:10:00+00:00',
  23: '2021-01-20 19:10:00+00:00',
  24: '2021-01-20 19:15:00+00:00',
  25: '2021-01-20 19:15:00+00:00',
  26: '2021-01-20 19:15:00+00:00',
  27: '2021-01-20 19:15:00+00:00',
  28: '2021-01-20 19:15:00+00:00',
  29: '2021-01-20 19:15:00+00:00',
  30: '2021-01-20 19:15:00+00:00',
  31: '2021-01-20 19:15:00+00:00',
  32: '2021-01-20 19:15:00+00:00',
  33: '2021-01-20 19:15:00+00:00',
  34: '2021-01-20 19:15:00+00:00',
  35: '2021-01-20 19:20:00+00:00',
  36: '2021-01-20 19:20:00+00:00',
  37: '2021-01-20 19:20:00+00:00',
  38: '2021-01-20 19:20:00+00:00',
  39: '2021-01-20 19:20:00+00:00',
  40: '2021-01-20 19:20:00+00:00',
  41: '2021-01-20 19:20:00+00:00',
  42: '2021-01-20 19:20:00+00:00',
  43: '2021-01-20 19:20:00+00:00',
  44: '2021-01-20 19:20:00+00:00',
  45: '2021-01-20 19:20:00+00:00',
  46: '2021-01-20 19:20:00+00:00',
  47: '2021-01-20 19:20:00+00:00',
  48: '2021-01-20 19:20:00+00:00',
  49: '2021-01-20 19:20:00+00:00',
  50: '2021-01-20 19:20:00+00:00',
  51: '2021-01-20 19:20:00+00:00',
  52: '2021-01-20 19:20:00+00:00',
  53: '2021-01-20 19:20:00+00:00',
  54: '2021-01-20 19:25:00+00:00',
  55: '2021-01-20 19:25:00+00:00',
  56: '2021-01-20 19:25:00+00:00',
  57: '2021-01-20 19:30:00+00:00',
  58: '2021-01-20 19:30:00+00:00',
  59: '2021-01-20 19:30:00+00:00',
  60: '2021-01-20 19:30:00+00:00',
  61: '2021-01-20 19:40:00+00:00',
  62: '2021-01-20 19:40:00+00:00',
  63: '2021-01-20 19:45:00+00:00',
  64: '2021-01-20 19:45:00+00:00',
  65: '2021-01-20 19:45:00+00:00',
  66: '2021-01-20 19:45:00+00:00',
  67: '2021-01-20 19:50:00+00:00',
  68: '2021-01-20 19:50:00+00:00',
  69: '2021-01-20 19:50:00+00:00',
  70: '2021-01-20 19:50:00+00:00',
  71: '2021-01-20 19:50:00+00:00',
  72: '2021-01-20 19:55:00+00:00',
  73: '2021-01-20 20:00:00+00:00',
  74: '2021-01-20 20:00:00+00:00',
  75: '2021-01-20 20:05:00+00:00',
  76: '2021-01-20 20:05:00+00:00',
  77: '2021-01-20 20:20:00+00:00',
  78: '2021-01-20 20:20:00+00:00',
  79: '2021-01-20 20:20:00+00:00',
  80: '2021-01-20 20:25:00+00:00',
  81: '2021-01-20 20:25:00+00:00',
  82: '2021-01-20 20:25:00+00:00',
  83: '2021-01-20 20:30:00+00:00',
  84: '2021-01-20 20:35:00+00:00',
  85: '2021-01-20 20:35:00+00:00',
  86: '2021-01-20 20:35:00+00:00',
  87: '2021-01-20 20:35:00+00:00',
  88: '2021-01-20 20:40:00+00:00',
  89: '2021-01-20 20:40:00+00:00',
  90: '2021-01-20 20:40:00+00:00',
  91: '2021-01-20 20:45:00+00:00',
  92: '2021-01-20 20:50:00+00:00',
  93: '2021-01-20 20:55:00+00:00',
  94: '2021-01-20 20:55:00+00:00',
  95: '2021-01-20 20:55:00+00:00',
  96: '2021-01-20 20:55:00+00:00',
  97: '2021-01-20 20:55:00+00:00'}})

df['buckets'] = [dat[11:16] for dat in df['TIME_BUCKET']]
fig = px.histogram(df, x='TIME_BUCKET', color='REPORT_NAME', title='Report Category Wise Execution Count (5 minuntes sample size)')
fig.update_xaxes(type='category')
fig.layout.xaxis.tickfont.size = 10

fig.show()