Код: Выделить всё
interpolate_cols = ["description_sentiment", "Award_ordinal"]
Код: Выделить всё
nan_mask = (michelin["description_sentiment"]==np.nan)
award1_mask = (michelin["Award_ordinal"]==1)
award2_mask = (michelin["Award_ordinal"]==2)
award3_mask = (michelin["Award_ordinal"]==3)
award4_mask = (michelin["Award_ordinal"]==4)
award5_mask = (michelin["Award_ordinal"]==5)
michelin.loc[nan_mask & award1_mask, "description_sentiment"] = michelin.loc[award1_mask, "description_sentiment"].mean()
...
Мой вопрос: что произойдет, когда сложность данных увеличится, т. е. появится больше функций. лучший способ действительно перечислить все по отдельности? или есть более простой программный способ, например:
Код: Выделить всё
interpolate() np.nan for col.unique(), col.unique(), col.unique()
Редактировать: MRE
первые три столбца следует считать порядковыми, следующие три номинальными, следующие несколько с горячим кодированием [логическое значение из категориального номинала] и последний непрерывный.
Код: Выделить всё
df = pd.DataFrame({
"A" : np.random.choice([1, 12], 1000),
"B" : np.random.choice([1, 20], 1000),
"C" : np.random.choice([1, 25], 1000),
"D" : np.random.choice(["Japan", "China", "Indonesia", "Thailand", "Laos", "Cambodia", "Philippines"], 1000),
"E" : np.random.choice(["Japan", "China", "Indonesia", "Thailand", "Laos", "Cambodia", "Philippines"], 1000),
"F" : np.random.choice(["Japan", "China", "Indonesia", "Thailand", "Laos", "Cambodia", "Philippines"], 1000),
"G" : np.random.choice([0, 1], 1000),
"H" : np.random.choice([0, 1], 1000),
"I" : np.random.choice([0, 1], 1000),
"J" : np.random.choice([0, 1], 1000),
"K" : np.random.choice([0, 1], 1000),
"L" : np.random.choice([0, 1], 1000),
"M" : np.random.choice([0, 1], 1000),
"missing_values" : np.random.choice(np.arange(0,1000), 1000) /100
})
df.loc[df["missing_values"].sample(frac=0.1).index, "missing_values"] = np.nan
есть ли программный способ добиться этого?
Подробнее здесь: https://stackoverflow.com/questions/790 ... le-columns