我的数据为.csv格式,数据的每一行代表每个代理,而每一列则代表某个属性。
我的问题是如何从Mesa中的csv文件分配代理及其属性?
请问有人可以在Mesa中导入它们吗?
谢谢。
答案 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