Влияние на производительность нового вычисляемого столбца с Python (Pandas) - PullRequest
0 голосов
/ 08 мая 2018

Я играю с Python, numpy и более с намерением углубиться в тензорный поток и машинное обучение и по-настоящему понять все, а не только "как запустить" части.

Во многих случаях янеобходимо предварительно обработать данные для визуализации с помощью matplotlib, и я не уверен, существует ли более производительный способ или даже обработка «на лету», чтобы эффективно получить тот же результат, что и код, приведенный ниже (df - пандадатафрейм):

def calculate(s):
cl = 100 if s["income-class"] == "<=50K" else 300
return cl


df["incomeClassNum"] = df.apply(lambda row: calculate(row), axis=1)

plt.scatter(df[["age"]], df[["education-num"]], s=df["incomeClassNum"])
plt.show()

Спасибо за любые советы и отзывы, Мартин

1 Ответ

0 голосов
/ 08 мая 2018

Использовать векторизацию numpy.where:

df["incomeClassNum"] = np.where(df["income-class"] == "<=50K", 100, 300)

plt.scatter(df["age"], df["education-num"], s=df["incomeClassNum"])

Также, похоже, новый столбец не нужен:

incomeClassNum = np.where(df["income-class"] == "<=50K", 100, 300)

plt.scatter(df["age"], df["education-num"], s=incomeClassNum )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...