title: Pandas read_csv inconsistent with data inference
body: <p>So I'm building out a function that reads csv data of unknown format from an S3 bucket. If I read a column of data that entirely filled, the dataframe infers the datatype correctly, however it always converts the datatype to a string if any row within the column is empty. For example:</p>
  <pre><code>csv_1 = &quot;&quot;&quot;id,name,age
      0,dan,10
      1,ana,
      &quot;&quot;&quot;
  
  csv_2 = &quot;&quot;&quot;id,name,age
      3,bill,33
      4,jill,35
      &quot;&quot;&quot;
  
  df1 = pd.read_csv(io.StringIO(csv_1), index_col=None, keep_default_na=False)
  df2 = pd.read_csv(io.StringIO(csv_2), index_col=None, keep_default_na=False)
  
  df1['age'][0] # '10'
  df2['age'][0] # 33
  </code></pre>
  <p>Is there a way to change this behavior to make the datatype of a given column default to what the rest of the column is, which in this case is an integer? I can't hard code conversions of specific columns since I do not know the columns or datatypes before ingestion and should work for any csv structure.</p>