title: Save a pandas dataframe as table in Image or pdf document with nice multi index display
body: <p>I'm trying to include a data frame with multi-index in a report in pdf. I would like to have a nice table output.</p>
  
  <p>I have found these 2 solutions:</p>
  
  <p>pandas.df -> HTML -> pdf</p>
  
  <pre><code>    import pandas as pd
      from IPython.display import HTML
      import pdfkit
  
      # df generation
      df = pd.read_csv(path_to_csv, sep =',')
      groupeddf = df.groupby('Cluster')
      res = groupeddf.describe([0.05, 0.5, 0.95])
      res.index.rename(['Cluster', 'stats'], inplace=True)
  
      res['Cluster'] = res.index.get_level_values('Cluster')
      res['stats'] = res.index.get_level_values('stats')
      populations = (res.iloc[(res.index.get_level_values('stats') == 'count'), \
                                                              0].values).tolist()
      res['population'] = [populations[i] for i in res.index.labels[0].values()]
      total_pop = sum(populations)
      res['frequency'] =(res['population']/total_pop).round(3)
      res.set_index(['Cluster', 'population','frequency', 'stats'], inplace=True)
  
  
  
      res1 = res.iloc[(res.index.get_level_values('stats') == '5%') |
      (res.index.get_level_values('stats') == 'mean') |
      (res.index.get_level_values('stats') == '50%') |
      (res.index.get_level_values('stats') == '95%')]
      res1 = res1.round(2)
      # saving the df     
      h = HTML(res1.to_html())
      my_file = open('test.html', 'w')
      my_file.write(h.data)
      my_file.close()
  
  
      options = {
          'orientation': 'Landscape'
          }
      with open('test.html') as f:
          pdfkit.from_file(f, 'out.pdf', options=options)
  </code></pre>
  
  <p>But this has a dependence on <code>pdfkit</code> which make it difficult to us. That's why I am trying to use pandas.df -> tex -> pdf (as mentioned in <a href="https://stackoverflow.com/questions/26678467/export-a-pandas-dataframe-as-a-table-image">Export a Pandas dataframe as a table image</a> )</p>
  
  <pre><code>    import pandas as pd
      import os
      # df generation              
      df = pd.read_csv(path_to_csv, sep =',')
      groupeddf = df.groupby('Cluster')
      res = groupeddf.describe([0.05, 0.5, 0.95])
      res.index.rename(['Cluster', 'stats'], inplace=True)
  
      res['Cluster'] = res.index.get_level_values('Cluster')
      res['stats'] = res.index.get_level_values('stats')
      populations = (res.iloc[(res.index.get_level_values('stats') == 'count'), \
                                                              0].values).tolist()
      res['population'] = [populations[i] for i in res.index.labels[0].values()]
      total_pop = sum(populations)
      res['frequency'] =(res['population']/total_pop).round(3)
      res.set_index(['Cluster', 'population','frequency', 'stats'], inplace=True)
  
  
  
      res1 = res.iloc[(res.index.get_level_values('stats') == '5%') |
      (res.index.get_level_values('stats') == 'mean') |
      (res.index.get_level_values('stats') == '50%') |
      (res.index.get_level_values('stats') == '95%')]
      res1 = res1.round(2)
      res1.rename(columns=lambda x: x.replace('_', ' '), inplace=True)    
  
      #latex
      template = r'''\documentclass[preview]{{standalone}}
      \usepackage{{booktabs}}
      \begin{{document}}
      {}
      \end{{document}}
      '''
  
      with open("outputfile.tex", "wb") as afile: 
          afile.write(template.format(res1.to_latex()))
      os.system("pdflatex outputfile.tex")
  </code></pre>
  
  <p>However, I am not familiar with latex, and I get this error :</p>
  
  <pre><code>  ! LaTeX Error: File `standalone.cls' not found.
  
   Type X to quit or &lt;RETURN&gt; to proceed,
   or enter a new name. (Default extension: cls)
  </code></pre>
  
  <p>Any idea about the error or the standard way to do pandas.df -> pdf ?</p>