title: Plotting multiple overlapping histograms with columns from two separate pandas data frames
body: <p>I've got two pandas data frames with the same column names ('Height', 'Weight', 'Alc'), but one is with dirty data and one with cleaned data. </p>
  
  <p>To visualise my cleaning, I want to make a histogram with <strong>overlapping</strong> bars showing the dirty data and the cleaned data for a given variable on the same chart. Eg for 'Height' I want a chart looking like the one pictured below, with dirty 'Height' data in one colour, and cleaned 'Height' data in another.</p>
  
  <p>Importantly, I want to make such a chart for <strong>all</strong> of my variables (ie 'Height', 'Weight', and 'Alc').</p>
  
  <p>In order to achieve this I've tried appending the data frames and plotting the histograms from a single data frame. Unfortunately it produces just regular histograms, not overlapping ones.</p>
  
  <p>Thanks for any help! </p>
  
  <p><a href="https://i.stack.imgur.com/2wybe.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/2wybe.png" alt=""></a></p>
  
  <pre><code>import pandas as pd
  import numpy as np
  import matplotlib.pyplot as plt
  
  
  # DIRTY DATA FRAME  
  data = [[1.0, 10, 0], [0.0, 12, 0.4], [2.0, 918, 0.9], [2.0, 918, 0.9]]   
  df_dirty = pd.DataFrame(data, columns = ['Height', 'Weight', 'Alc']) 
  
  
  # CLEAN DATA FRAME
  data2 = [[1.0, 10, np.nan], [0.0, 12, 0.4], [np.nan, np.nan, 0.9], [np.nan, np.nan, 0.9]]   
  df_clean = pd.DataFrame(data2, columns = ['Height', 'Weight', 'Alc']) 
  
  
  # ADDITION OF GROUP-BY VARIABLE   
  my_dfs = [df_dirty, df_clean]
  my_status = ['dirty','clean']
  for dataframe, status in zip(my_dfs, my_status):
      dataframe['groupbyvar'] = status
  
  
  # DATA FRAME FOR PLOTTING  
  df_plotting = df_dirty.append(df_clean, ignore_index=True)
  
  
  # HISTOGRAMS FOR ALL COLUMNS IN DATA FRAME FOR PLOTTING   
  for col in df_plotting:
      df_plotting.hist(by="groupbyvar", column=col)
  </code></pre>
  
  <p><strong>EDIT</strong>:
  The above chart is just a picture to explain what I want, my current code does <strong>NOT</strong> make it.</p>