title: Creating a heatmap using python and csv file
body: <p>I'm trying to create a heatmap, with the x axis being time, the y axis being detectors (it's for freeway speed detection), and the colour scheme and numbers on the graph being for occupancy or basically what values the csv has at that time and detector.</p>
  
  <p>My first thought is to use matplotlib in conjunction with pandas and numpy.</p>
  
  <p>I've been trying lots of different approaches and feel like i've hit a brickwall in terms of getting it working.</p>
  
  <p>Does anyone have a good idea about using these tools?</p>
  
  <p>Cheers!</p>
  
  <pre><code>Row Labels  14142OB_L1  14142OB_L2  14140OB_E1P0    14140OB_E1P1    14140OB_E2P0    14140OB_E2P1    14140OB_L1  14140OB_L2  14140OB_M1P0    14140OB_M1P1    14140OB_M2P0    14140OB_M2P1    14140OB_M3P0    14140OB_M3P1    14140OB_S1P0    14140OB_S1P1    14140OB_S2P0    14140OB_S2P1    14140OB_S3P0    14140OB_S3P1    14138OB_L1  14138OB_L2  14138OB_L3  14136OB_L1  14136OB_L2  14136OB_L3  14134OB_L1  14134OB_L2  14134OB_L3  14132OB_L1  14132OB_L2  14132OB_L3
  00 - 01 hr  0.22    1.42    0.29    0.29    0.59    0.59    0.17    1.47    0.38    0.38    0.56    0.6 0.08    0.1 0.67    0.7 0.88    0.9 0.15    0.17    0.17    1.66    0.47    0.16    1.6 0.49    0.14    0.94    1.21    0.21    1.22    0.44
  01 - 02 hr  0.08    0.77    0.08    0.07    0.24    0.24    0.1 0.73    0.08    0.09    0.21    0.23    0.05    0.06    0.21    0.23    0.29    0.29    0.1 0.1 0.08    0.83    0.17    0.1 0.77    0.18    0.08    0.4 0.57    0.07    0.64    0.18
  02 - 03 hr  0.08    0.73    0.06    0.06    0.23    0.23    0.06    0.73    0.07    0.07    0.23    0.24    0.02    0.02    0.16    0.17    0.32    0.34    0.06    0.07    0.06    0.77    0.16    0.06    0.78    0.17    0.07    0.3 0.66    0.06    0.68    0.19
  03 - 04 hr  0.05    0.85    0.06    0.06    0.22    0.23    0.04    0.86    0.05    0.05    0.2 0.21    0.1 0.11    0.11    0.12    0.32    0.33    0.15    0.16    0.03    0.93    0.14    0.03    0.89    0.15    0.03    0.41    0.61    0.02    0.73    0.21
  04 - 05 hr  0.13    1.25    0.09    0.09    0.24    0.24    0.12    1.25    0.11    0.11    0.2 0.21    0.08    0.09    0.19    0.2 0.32    0.34    0.15    0.15    0.1 1.33    0.18    0.11    1.35    0.19    0.11    0.52    1   0.07    1.08    0.29
  05 - 06 hr  0.91    2.87    0.08    0.08    0.66    0.69    0.8 2.96    0.15    0.17    0.43    0.45    0.32    0.33    0.39    0.41    0.76    0.82    0.47    0.49    0.59    3.27    0.51    0.58    3.19    0.56    0.45    1.85    2.19    0.43    2.52    0.79
  06 - 07 hr  3.92    5.44    1.29    1.14    4.03    4.12    3.19    6.03    1.66    1.69    3.26    3.44    1.84    1.93    13.03   14.97   13.81   19.23   4.69    5.59    3.03    6.72    3.01    2.78    6.81    3.02    1.52    4.22    7.13    2.54    5.94    2.88
  07 - 08 hr  4.68    6.35    1.67    1.8 5.69    5.95    4.01    6.81    2.69    2.78    3.84    4.03    3.27    4.05    24.25   24.39   28.07   36.5    15.39   15.38   3.79    7.91    4.28    3.58    7.91    4.33    1.67    6.16    8.3 3.17    6.59    3.74
  08 - 09 hr  5.21    6.31    2.51    2.82    7.46    7.72    4.53    6.65    9.03    8.98    13.94   12.77   6.73    8.55    47  48.38   50.08   48.32   22.83   21.91   4.29    8.27    5.04    4.15    8.27    5.16    2.44    6.24    9.17    3.26    6.81    4.16
  09 - 10 hr  4.05    6.17    1.01    0.99    4.47    4.55    3.45    6.53    1.68    1.74    3.12    3.24    1.82    1.98    16.49   16.22   15.58   20.36   4.31    5.2 3.36    7.24    3.55    3.03    7.36    3.73    1.89    5.64    6.75    2.24    5.94    3.26
  10 - 11 hr  3.62    6.64    1.14    1.15    4.11    4.18    3.23    6.87    1.79    1.87    3.03    3.13    1.72    1.89    15.02   18.75   17.25   22.61   3.06    3.24    3.06    7.69    3.23    2.87    7.49    3.56    2.06    4.99    7.05    2.26    6.2 3.07
  11 - 12 hr  4.31    6.74    1.29    1.3 4.91    4.97    3.79    6.88    2.25    2.35    3.97    4.29    1.84    1.98    19.58   22.5    24.92   23.14   3.27    3.46    3.65    7.67    3.96    3.43    7.74    4   2.39    5.4 7.67    2.57    6.42    3.22
  12 - 13 hr  4.53    6.9 1.4 1.39    5.81    5.9 3.96    7.18    2.69    2.86    4.94    5.28    2.15    2.29    24.46   28.34   36.59   31.06   5.4 5.39    3.95    7.98    4.54    3.7 8.03    4.69    2.36    5.99    8.29    3.01    6.61    3.37
  13 - 14 hr  6.13    7.29    1.57    1.55    6.02    6.11    5.34    7.74    2.67    2.76    5.2 5.56    2.04    2.16    23.74   28.31   31.01   36.89   4.15    4.6 5.22    8.83    4.77    4.96    8.84    4.92    2.65    6.56    9.77    3.96    7.23    3.88
  14 - 15 hr  8.72    8.22    2.93    3.06    8.58    8.9 8.94    9.57    17.69   17.2    18.99   23.58   2.37    3.69    38.81   53.33   49.93   45.42   5.69    4.3 8.13    10.04   5.45    7.03    9.94    5.51    3.59    7.41    12.4    5.92    8.04    4.4
  15 - 16 hr  13.26   9.75    15.68   18.3    22.21   23.25   10.8    9.06    35.31   37.1    36.27   35.89   3.14    2.91    47.93   54.86   51.96   50.74   6.27    5.77    11.82   12.78   7.62    12.03   12.5    6.55    4.71    9.21    17.87   9.06    9.33    4.5
  16 - 17 hr  18.25   14.92   4.95    4.63    9.68    10.2    20.14   16.68   21.38   21.39   23.92   28.11   1.75    1.86    48.15   47.31   46.65   50.4    3.46    3.31    21.52   16.97   7.37    18.47   14.84   7.51    6.88    15.52   27.8    11.17   9.35    5.34
  17 - 18 hr  13.82   9.76    31.23   31.46   34.89   36.06   13.72   11.14   41.24   44.5    42  47.07   1.6 1.62    57.4    58.92   57.23   62.92   3.41    8.01    20.26   20.35   15.25   21.49   20.5    9.31    12.27   17.3    34.46   22.89   20.56   12.04
  18 - 19 hr  7.51    5.81    50.48   49.94   45.97   46.43   8.65    5.95    49.26   48.28   51.04   46.46   2   3.04    56.08   56.39   54.95   59.06   3.18    6.47    13.44   13.73   25.79   17.67   21.52   19.26   6.35    11.52   22.13   11.31   10.4    5.42
  19 - 20 hr  3.96    5.01    2.77    2.71    6.62    6.87    3.65    5.19    7.72    7.86    9.5 10.44   1.17    1.44    23.6    30.16   28.82   30.87   1.73    1.76    3.6 6.52    4.04    3.38    6.51    4.03    1.88    5.05    7.15    2.99    5.44    3.1
  20 - 21 hr  2.16    3.72    1.75    1.74    3.96    4.02    2.03    3.72    2.62    2.73    4.32    4.54    0.76    0.79    18.41   23.69   30.91   31.05   1.31    1.26    2.1 4.76    2.97    1.93    4.75    2.97    1.43    3.43    4.9 1.73    3.9 2.27
  21 - 22 hr  2.03    3.81    1.49    1.47    2.97    2.99    2   3.79    2.11    2.15    3.07    3.27    0.37    0.4 12.96   14.05   15.49   17.93   0.64    0.67    1.86    4.87    2.35    1.75    4.88    2.29    1.14    3.4 4.44    1.57    3.89    1.92
  22 - 23 hr  1.33    3.2 1.21    1.22    2.46    2.5 1.21    3.23    1.75    1.79    2.36    2.48    0.35    0.38    6.19    9.26    10.48   12.16   0.57    0.58    1.28    3.85    2   1.23    3.84    1.96    0.82    2.74    3.55    1.12    3.29    1.73
  23 - 24 hr  0.65    2.43    0.49    0.49    1.41    1.44    0.69    2.35    0.69    0.7 1.3 1.38    0.19    0.21    1.51    1.66    2.46    2.45    0.41    0.42    0.71    2.63    1.06    0.59    2.73    1.04    0.4 1.8 2.25    0.58    2.28    0.94
  Grand Total 4.57    5.26    5.23    5.32    7.64    7.85    4.36    5.56    8.54    8.73    9.83    10.29   1.49    1.74    20.68   23.05   23.71   25.17   3.78    4.1 4.84    6.98    4.5 4.79    7.21    3.98    2.39    5.29    8.59    3.84    5.63    2.97
  </code></pre>
  
  <p>Here is the current script I'm using.</p>
  
  <pre><code>read_occupancy = pd.read_csv (r'C:\Users\holborm\Desktop\Visualisation\dataaxisplotstuff.csv')   #read the csv file (put 'r' before the path string to address any special characters, such as '\'). Don't forget to put the file name at the end of the path + ".csv"
  
  df = DataFrame(read_occupancy)    # assign column names
  
  
  #create time and detector name axis
  
  time_axis = df.index
  
  detector_axis = df.columns
  
  plt.plot(df)
  </code></pre>
  
  <p>Using Seaborn</p>
  
  <pre><code>    read_occupancy = pd.read_csv (r'C:\Users\holborm\Desktop\Visualisation\dataaxisplotstuff.csv')   #read the csv file (put 'r' before the path string to address any special characters, such as '\'). Don't forget to put the file name at the end of the path + ".csv"
  
  df = DataFrame(read_occupancy)    # assign column names
  
  
  #create time and detector name axis
  
  sns.heatmap(df)
  </code></pre>
  
  <p>Error</p>
  
  <pre><code>---------------------------------------------------------------------------
  TypeError                                 Traceback (most recent call last)
  &lt;ipython-input-79-33a3388e21cc&gt; in &lt;module&gt;()
        6 #create time and detector name axis
        7 
  ----&gt; 8 sns.heatmap(df)
  
  ~\AppData\Local\Continuum\anaconda3\lib\site-packages\seaborn\matrix.py in heatmap(data, vmin, vmax, cmap, center, robust, annot, fmt, annot_kws, linewidths, linecolor, cbar, cbar_kws, cbar_ax, square, xticklabels, yticklabels, mask, ax, **kwargs)
      515     plotter = _HeatMapper(data, vmin, vmax, cmap, center, robust, annot, fmt,
      516                           annot_kws, cbar, cbar_kws, xticklabels,
  --&gt; 517                           yticklabels, mask)
      518 
      519     # Add the pcolormesh kwargs here
  
  ~\AppData\Local\Continuum\anaconda3\lib\site-packages\seaborn\matrix.py in __init__(self, data, vmin, vmax, cmap, center, robust, annot, fmt, annot_kws, cbar, cbar_kws, xticklabels, yticklabels, mask)
      166         # Determine good default values for the colormapping
      167         self._determine_cmap_params(plot_data, vmin, vmax,
  --&gt; 168                                     cmap, center, robust)
      169 
      170         # Sort out the annotations
  
  ~\AppData\Local\Continuum\anaconda3\lib\site-packages\seaborn\matrix.py in _determine_cmap_params(self, plot_data, vmin, vmax, cmap, center, robust)
      203                                cmap, center, robust):
      204         """Use some heuristics to set good defaults for colorbar and range."""
  --&gt; 205         calc_data = plot_data.data[~np.isnan(plot_data.data)]
      206         if vmin is None:
      207             vmin = np.percentile(calc_data, 2) if robust else calc_data.min()
  
  TypeError: ufunc 'isnan' not supported for the input types, and the inputs could not be safely coerced to any supported types according to the casting rule ''safe''
  </code></pre>