Python: Round() 不适用于我的 fillna()
Python: Round() is not working with my fillna()
import seaborn
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
passengers = pd.read_csv('passengers.csv')
#passengers['Age'].fillna(value=round(passengers['Age'].mean()), inplace=True)
passengers['Age'].fillna(value=round(np.mean(passengers['Age'])), inplace=True)
这是我试过的两种不同的代码。
我的想法是用乘客的平均年龄填充任何 na,我想通过四舍五入更进一步。
在 Codecademy 的终端中它可以工作,但在我的 Jupyter Notebook 中它不会四舍五入。
我是不是做错了什么?
尝试使用 sklearn
中的 SimpleImputer()
这是官方文档中的工作示例:
import numpy as np
from sklearn.impute import SimpleImputer
imp_mean = SimpleImputer(missing_values=np.nan, strategy='mean')
imp_mean.fit([[7, 2, 3], [4, np.nan, 6], [10, 5, 9]]) # your column
X = [[np.nan, 2, 3], [4, np.nan, 6], [10, np.nan, 9]]
print(imp_mean.transform(X))
>>
[[ 7. 2. 3. ]
[ 4. 3.5 6. ]
[10. 3.5 9. ]]
您可以选择 均值、中位数、众数等。请参阅official documentation
您可以像 passengers['Age'] = imp_mean.fit_transform(passengers['Age'])
一样直接对每一列一次性使用 fit_transform
获得更新后的列后,您可以在列上使用 round
和 apply()
,例如 passengers['Age'] = passengers['Age'].apply(lambda x: round(x))
这可能不是最有效的解决方案,但它会起作用 ;)
import seaborn
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
passengers = pd.read_csv('passengers.csv')
#passengers['Age'].fillna(value=round(passengers['Age'].mean()), inplace=True)
passengers['Age'].fillna(value=round(np.mean(passengers['Age'])), inplace=True)
这是我试过的两种不同的代码。
我的想法是用乘客的平均年龄填充任何 na,我想通过四舍五入更进一步。
在 Codecademy 的终端中它可以工作,但在我的 Jupyter Notebook 中它不会四舍五入。
我是不是做错了什么?
尝试使用 sklearn
中的 SimpleImputer()
这是官方文档中的工作示例:
import numpy as np
from sklearn.impute import SimpleImputer
imp_mean = SimpleImputer(missing_values=np.nan, strategy='mean')
imp_mean.fit([[7, 2, 3], [4, np.nan, 6], [10, 5, 9]]) # your column
X = [[np.nan, 2, 3], [4, np.nan, 6], [10, np.nan, 9]]
print(imp_mean.transform(X))
>>
[[ 7. 2. 3. ]
[ 4. 3.5 6. ]
[10. 3.5 9. ]]
您可以选择 均值、中位数、众数等。请参阅official documentation
您可以像 passengers['Age'] = imp_mean.fit_transform(passengers['Age'])
fit_transform
获得更新后的列后,您可以在列上使用 round
和 apply()
,例如 passengers['Age'] = passengers['Age'].apply(lambda x: round(x))
这可能不是最有效的解决方案,但它会起作用 ;)