I have a dataset regarding some used cars from eBay, which I tried to plot after I edited the dataset as follows:
import pandas as pd
df = pd.read_csv(\"./a
The problem comes from the fact that pairplot only accepts some pandas types in the PairGrid: float or int, but not Object or Int64 for exemple (at least for some versions of matplotlib and/or seaborn: 3.0.3 and 0.9.0 respectivly generates that error).
Using .astype('float') to modify the concerned series before plotting in the following exemple solves the problem as a.One is set to Int64 and a.Two is initially an Object type:
a = pd.DataFrame()
a['One'] = [1, 3, 3, 2, 1]
a['One']=a['One'].astype('Int64')
a['Two'] = ['yes', 'yes', 'no', 'yes', 'no']
a['Two'] = np.where(a['Two'] == 'yes', 1, a['Two'])
a['Two'] = np.where(a['Two'] == 'no', 0, a['Two'])
a['One']=a['One'].astype('int')
a['Two']=a['Two'].astype('int')
sns.pairplot(a)
plt.show()
Remark that if you have some NaN in your dataframe, float is the only option as Int64 accepts missing values but not the Int type.
Following your comment, an example snippet, which hopefully can help you. Maybe the issue is with IPython? Unfortunately, I do not know. Having your dataset available would definitely help.
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import seaborn as sns
a = pd.DataFrame()
a['One'] = [1, 3, 3, 2, 1]
a['Two'] = ['ja', 'ja', 'nein', 'ja', 'nein']
a['Two'] = np.where(a['Two'] == 'ja', 1, a['Two'])
a['Two'] = np.where(a['Two'] == 'nein', 0, a['Two'])
a = a[a['Two'].notnull()]
print(a)
sns.pairplot(a)
plt.show()
This prints
One Two
0 1 1
1 3 1
2 3 0
3 2 1
4 1 0
and displays