从台面中的CSV导入代理及其属性

时间:2018-10-28 22:02:33

标签: python-3.7 agent-based-modeling mesa-abm

我的数据为.csv格式,数据的每一行代表每个代理,而每一列则代表某个属性。

我的问题是如何从Mesa中的csv文件分配代理及其属性?

请问有人可以在Mesa中导入它们吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

要导入.csv并将其转换为属性,您想知道自己如何读取文件,然后在创建文件时将其传递给代理类。

例如:

您拥有“ people.csv”:

         agent, height, weight
         bill, 72 in, 190lbs
         anne, 70 in, 170lbs

您以列表列表形式阅读:

import csv
people = []

with open('people.csv') as csv_file:
    csv_reader = csv.reader(csv_file, delimiter=',')
    line_count = 0
    for row in csv_reader:
         if line_count == 0:
            pass #skips the column headers
            line_count += 1
         else: 
            people.append(row)
            # This will look like [[ 'bill', '72 in', '190lbs'], ['anne', '70 in',\ 
            #'170lbs']]

您连续将其传递到代理实例中,通常会在模型模块中创建代理计划时发生:

  for i in range(number_of_agents):
        a = myAgent(i, self, row[i])
        self.schedule.add(a)

您将行变量分配给代理属性:

  class myAgent(Agent): 
       def __init__(self, unique_id, model, row): 
            super().__init__(unique_id, model)
            self.name = row[0] # e.g bill
            self.height = row[1] # e.g. 72 in
            self.weight = row[2] # e.g. 190 lbs