Выполнять вычисления для столбцов данных без создания новых столбцов - PullRequest
0 голосов
/ 31 октября 2018

Я работаю над оценкой качества записей в базе данных. У меня есть CSV, который в двоичном виде говорит мне, отсутствует ли конкретное поле для каждой записи. Моя цель состоит в том, чтобы создать оценку путем присвоения различных весов для полей, а затем рассчитать окончательную оценку 1 - 100. Ниже приведено визуальное представление того, с чем я работаю. Два верхних ряда - это весовые коэффициенты, а 3-й ряд - это то, что есть в моем df.

enter image description here

Мне удалось выполнить вычисления, сопоставив 1 и 0 с весами, используя numpy.where (), записав результаты в отдельные столбцы и вычислив баллы с использованием новых столбцов. Мне было интересно, если есть более эффективный способ сделать это. Мой код ниже (я сократил лишние части, чтобы сэкономить место)

df = pd.read_csv(path, names=names, usecols=usecols, header=None)

# Main Scoring Weights
contact_info_weight = 0.5
relations_weight = 0.25
demos_weight = 0.25

# Scoring Sub Rations - contact_info
org_address_rate = 30
org_city_rate = 30
.......other.....

# Scoring Sub Rations - relations
related_ind_rate = 40
related_org_rate = 20
related_pc_rate = 50

# Scoring Sub Rations - demos
org_type_rate = 40
market_segment_rate = 30
process_rate = 30

# Create new columns with score values
df['Org Address Line 1 Score'] = np.where(df['Org Address Line 1'] == 1, org_address_rate, 0)
df['Org City Score'] = np.where(df['Org City'] == 1, org_city_rate, 0)
.......other.....

# Calculate total sub scores
df['Contact Info Score'] = df['Org Address Line 1 Score'] + df['Org City Score'] + df['Org State Score'] + \
                     df['Org Postal Code Score'] + df['Org Country Score'] + df['Org Phone Score']

df['Demos Score'] = df['Org Type Score'] + df['Market Segment Score'] + df['Process Score']

df['Relations Score'] = df['Ind ID Score'] + df['Market Segment Score'] + df['Process Score']

# Calculate final score
df['Completeness Score'] = (df['Contact Info Score'] * contact_info_weight) + (df['Demos Score'] * demos_weight) + \
                           (df['Relations Score'] * relations_weight)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...