[英]How can I turn the rows of a csv file into a list of objects?
我正在處理患者數據。 我將患者數據存儲在CSV文件中。 每行是一個新患者,有數百名患者。 我想以清單的發生率來訪問患者。 例如,我的患者列表的索引0將輸出具有以下屬性的患者對象:
{首先:“撒迦利亞”,最后:“ Siyaji”,年齡:21}
等等。 以下是我正在編寫的代碼,盡管我看不到如何在沒有手動初始化每個對象的情況下生成許多對象。 考慮到有數百名患者,這是非常不切實際的。
import ASD as asd
class Patient:
mrn = 0
first = ''
last = ''
gender = 0
smoker = 0
bmi = 0
asa = 0
cci = 0
dob = ''
dos = ''
age = 0
def setData(self, mrn, first, last, gender, smoker, bmi, asa, cci, dob, dos, age):
self.mrn = mrn
self.first = first
self.last = last
self.gender = gender
self.smoker = smoker
self.bmi = bmi
self.asa = asa
self.cci = cci
self.dob = dob
self.dos = dos
self.age = age
def showData(self):
print("MRN\t:",self.mrn)
print("First\t:", self.first)
print("Last\t:", self.last)
print("Gender\t:", self.gender)
print("Smoker\t:", self.smoker)
print("BMI\t:",self.bmi)
print("ASA\t:", self.asa)
print("CCI\t:", self.cci)
print("DOB\t:", self.dob)
print("DOS\t:", self.dos)
print("Age\t:", self.age)
def main():
p1 = Patient()
p1.setData(asd.file1['MRN'][0],
asd.file1['First'][0],
asd.file1['Last'][0],
asd.file1['Female'][0],
asd.file1['Smoker'][0],
asd.file1['BMI'][0],
asd.file1['ASA'][0],
asd.file1['CCI'][0],
asd.file1['DOB'][0],
asd.file1['DOS'][0],
asd.file1['Age'][0])
p1.showData()
if __name__ == '__main__':
main()
您只需導入熊貓並讀取CSV文件並訪問患者信息即可。
import pandas as pd
patients = pd.read_csv("patients.csv")
# To access information
patients.loc[0] #or patients.iloc[0]
csv
模塊支持從csv文件讀取。 如果您想進行復雜的數據插值,那么當然還有熊貓。 假設它是一個簡單的操作,它應該看起來像這樣,
import csv
with open(filename, 'r') as stream:
reader = csv.DictReader(stream)
count == 0
for row in reader:
if count != 0 # skip the header, or do something here
p = Patient(row["mrn"], row["first"], row["last"], row["gender"], row["smoker"], row["bmi"], row["asa"], row["cci"], row["dob"], row["dos"], row["age"])
print(p)
count += 1
我也看到您的患者定義類不遵循慣用的python。 可以通過以下方式將其重寫為更加Pythonic的形式。
class Patient:
def __init___(self, mrn=None, first=None, last=None, gender=None, smoker=None, bmi=None, asa=None, cci=None, dob=None, dos=None, age=None)
self.mrn = mrn
self.first = first
self.last = last
self.gender = gender
self.smoker = smoker
self.bmi = bmi
self.asa = asa
self.cci = cci
self.dob = dob
self.dos = dos
self.age = age
def __repr__(self):
return '''MRN: {}
First: {}
...
ASA: {}'''.format(self.mrn, self.first,....,self.asa)
由於構造函數具有許多字段,因此最大的優點之一就是可以使用關鍵字參數實例化您的類,並降低將某些字段與其他值混淆的風險。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.