1

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

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

任何人都可以帮助我如何在 Mesa 中导入它们吗?

谢谢。

4

1 回答 1

1

要导入 .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
于 2018-11-02T10:59:13.020 回答