code: def read_tb(path):
      
      import pandas
      import numpy as np
      from glob import glob
      from collections import defaultdict
      import tensorflow as tf
      if osp.isdir(path):
          fnames = glob(osp.join(path, "events.*"))
      elif osp.basename(path).startswith("events."):
          fnames = [path]
      else:
          raise NotImplementedError("Expected tensorboard file or directory containing them. Got %s"%path)
      tag2pairs = defaultdict(list)
      maxstep = 0
      for fname in fnames:
          for summary in tf.train.summary_iterator(fname):
              if summary.step > 0:
                  for v in summary.summary.value:
                      pair = (summary.step, v.simple_value)
                      tag2pairs[v.tag].append(pair)
                  maxstep = max(summary.step, maxstep)
      data = np.empty((maxstep, len(tag2pairs)))
      data[:] = np.nan
      tags = sorted(tag2pairs.keys())
      for (colidx,tag) in enumerate(tags):
          pairs = tag2pairs[tag]
          for (step, value) in pairs:
              data[step-1, colidx] = value
      return pandas.DataFrame(data, columns=tags)
docs: path : a tensorboard file OR a directory, where we will find all TB files
             of the form events.*