BUG: read_csv returns inconsistent or misleading values with dtype=float
The issue occurs for `read_csv()` when reading a mixture of empty or NaN and potential Boolean values when choosing `float` as dtype. NaN is either read as 1.0, or in the case of an empirical csv-file even inconsistently either as 1.0 or NaN. I could not replicate the inconsistency with synthetic-data, therefore the csv-file in question is provided here: https://github.com/c06n/Pandas_readcsv_issue/blob/master/empirical_data.csv 

Neither issue occurs if `engine='python'`, therefore I believe it is a bug.

#### example with synthetic data:

```python
import pandas as pd
import numpy as np

df = pd.DataFrame({'a': np.r_[[np.nan]*2000,
                              np.repeat('True', 100),
                              [np.nan]*2000,
                              np.repeat('True', 100),
                              [np.nan]*2000]})
df.to_csv('synthetic_data.csv', sep=';', decimal=',', index=False)
df = pd.read_csv('synthetic_data.csv', 
                 na_values='',
                 sep=';',
                 decimal=',',
                 dtype={'a': 'float'})
df.a
```

#### example with empirical data:

Get the data from https://github.com/c06n/Pandas_readcsv_issue/blob/master/empirical_data.csv and then use the code below. The interesting columns are the right-most ones, e.g. the column `approach`. 

```
df = pd.read_csv('empirical_data.csv', 
                 na_values='',
                 sep=';',
                 decimal=',',
                 dtype={'approach': 'float'})
df.approach
```

#### Problem description

In the synthetic data, all values are converted to 1.0 (both NaN-values and the `True`-string object). In the empirical data, the first NaN-values are converted to 1.0, but at the end there are values that remain NaN.

* The problematic nature of the inconsistent treatment of NaN in case of the empirical data file should be self explanatory. 
* Returning 1.0 for NaN-values seems inappropriate as well. Because the Python-engine returns NaN, this behavior does not appear to be intended.

Personally, I find the behavior in either case hugely problematic, because converting NaN to 1.0 is very non-intuitive in either case. Throwing an error, if possible, would be my preference.

#### Expected Output

Empty cells and values that are explicitely defined as NaN (e.g. "nan") should remain NaN.

#### Output of ``pd.show_versions()``

<details>

INSTALLED VERSIONS
------------------
commit           : None
python           : 3.7.7.final.0
python-bits      : 64
OS               : Windows
OS-release       : 10
machine          : AMD64
processor        : Intel64 Family 6 Model 142 Stepping 10, GenuineIntel
byteorder        : little
LC_ALL           : None
LANG             : None
LOCALE           : None.None

pandas           : 1.0.3
numpy            : 1.18.1
pytz             : 2020.1
dateutil         : 2.8.1
pip              : 20.0.2
setuptools       : 46.1.3.post20200330
Cython           : 0.29.17
pytest           : None
hypothesis       : 5.11.0
sphinx           : 3.0.3
blosc            : None
feather          : None
xlsxwriter       : 1.2.8
lxml.etree       : 4.5.0
html5lib         : 1.0.1
pymysql          : None
psycopg2         : None
jinja2           : 2.11.2
IPython          : 7.13.0
pandas_datareader: None
bs4              : 4.9.0
bottleneck       : 1.3.2
fastparquet      : None
gcsfs            : None
lxml.etree       : 4.5.0
matplotlib       : 3.1.3
numexpr          : 2.7.1
odfpy            : None
openpyxl         : 3.0.3
pandas_gbq       : None
pyarrow          : None
pytables         : None
pytest           : None
pyxlsb           : None
s3fs             : None
scipy            : 1.4.1
sqlalchemy       : 1.3.16
tables           : 3.6.1
tabulate         : None
xarray           : None
xlrd             : 1.2.0
xlwt             : 1.3.0
xlsxwriter       : 1.2.8
numba            : 0.49.0

</details>
