Python 我有非类型函数返回,如何在django视图中打印/转换它?
我使用生命线库进行生存分析,这个函数名为Python 我有非类型函数返回,如何在django视图中打印/转换它?,python,django,function,django-views,nonetype,Python,Django,Function,Django Views,Nonetype,我使用生命线库进行生存分析,这个函数名为CoxPHFitter().print_summary()返回一个非类型对象,下面是我在survat.py中的代码: import pandas as pd import numpy as np import matplotlib.pyplot as plt import lifelines from lifelines import CoxPHFitter,AalenAdditiveFitter import os def printcox(*args
CoxPHFitter().print_summary()
返回一个非类型对象,下面是我在survat.py
中的代码:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import lifelines
from lifelines import CoxPHFitter,AalenAdditiveFitter
import os
def printcox(*args):
module_dir = os.path.dirname(__file__) # get current directory
file_path = os.path.join(module_dir, 'prostate1.csv')
prostate_dataset=pd.read_csv(file_path)
# prostate_dataset=pd.read_csv(args[0])
prostate_dataset=prostate_dataset[list(args[1:])]
for x in prostate_dataset:
if (prostate_dataset[x].dtype=="object"):
cat=pd.Series(list(prostate_dataset[x]))
for y in pd.unique(cat):
prostate_dataset[x+'.'+y]=pd.get_dummies(cat)[y]
prostate_dataset.drop(x, axis=1, inplace=True)
# prostate_dataset=prostate
# print prostate_dataset
else:
pass
# for z in prostate_dataset:
# print z
cf=CoxPHFitter()
cf.fit(prostate_dataset,args[1],event_col=args[2])
return cf.print_summary()
def listindex(request):
# Handle file upload
if request.method == 'POST':
form = DocumentForm(request.POST, request.FILES)
if form.is_valid():
newdoc = Document(docfile = request.FILES['docfile'])
newdoc.save()
# ert= form.cleaned_data['aalenMember']
# Redirect to the document list after POST
return HttpResponseRedirect(reverse('survat.survatapp.views.listindex'))
else:
form = DocumentForm() # A empty, unbound form
# Load documents for the list page
documents = Document.objects.all()
def delete_matrix():
documents = Document.objects.all()
for document in documents:
document.delete()
if request.method == 'POST':
tempCox = []
tempAalen = []
timeColumn = request.POST.get('timeColumn', '')
tempCox.append(timeColumn)
tempAalen.append(timeColumn)
eventColumn = request.POST.get('eventColumn', '')
tempCox.append(eventColumn)
tempAalen.append(eventColumn)
coxMember = request.POST.get('coxMember', '')
aalenMember = request.POST.get('aalenMember', '')
coxMemberI = int(float(coxMember))
aalenMemberI = int(float(aalenMember))
coxCovariate = []
aalenCovariate = []
for j in range(1,coxMemberI):
coxCovariate.append(request.POST.get('coxCovariate'+str(j), ''))
tempCox.append(request.POST.get('coxCovariate'+str(j), ''))
for k in range(1,aalenMemberI):
aalenCovariate.append(request.POST.get('aalenCovariate'+str(k), ''))
tempAalen.append(request.POST.get('aalenCovariate'+str(k), ''))
ert = request.POST.get('coxMember', '')
ert = str(type(int(float(ert))))
else:
tempCox = []
tempAalen = []
ert = "niji"
timeColumn = "niji"
eventColumn = "niji"
coxMember = "niji"
aalenMember = "niji"
coxMemberI = "niji"
aalenMemberI = "niji"
coxCovariate = []
aalenCovariate = []
for j in range(1,20):
coxCovariate.append ("niji")
for k in range(1,20):
aalenCovariate.append ("niji")
asdf=printcox('prostate1.csv','dtime','status1','age','hg','sz','sg','pf','rx')
# Render list page with the documents and the form
return render_to_response(
'survatapp/list.html',
{'documents': documents, 'form': form, 'ert':ert, 'wer':tempAalen,'asdf':asdf},
context_instance=RequestContext(request)
)
当我用调用spyder中的函数时,结果如下:
但是当我在我的views.py
中调用它并尝试在我的.html中打印它时,它什么也不打印,因为它是非类型数据,我应该怎么处理
这是我的视图。py
:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import lifelines
from lifelines import CoxPHFitter,AalenAdditiveFitter
import os
def printcox(*args):
module_dir = os.path.dirname(__file__) # get current directory
file_path = os.path.join(module_dir, 'prostate1.csv')
prostate_dataset=pd.read_csv(file_path)
# prostate_dataset=pd.read_csv(args[0])
prostate_dataset=prostate_dataset[list(args[1:])]
for x in prostate_dataset:
if (prostate_dataset[x].dtype=="object"):
cat=pd.Series(list(prostate_dataset[x]))
for y in pd.unique(cat):
prostate_dataset[x+'.'+y]=pd.get_dummies(cat)[y]
prostate_dataset.drop(x, axis=1, inplace=True)
# prostate_dataset=prostate
# print prostate_dataset
else:
pass
# for z in prostate_dataset:
# print z
cf=CoxPHFitter()
cf.fit(prostate_dataset,args[1],event_col=args[2])
return cf.print_summary()
def listindex(request):
# Handle file upload
if request.method == 'POST':
form = DocumentForm(request.POST, request.FILES)
if form.is_valid():
newdoc = Document(docfile = request.FILES['docfile'])
newdoc.save()
# ert= form.cleaned_data['aalenMember']
# Redirect to the document list after POST
return HttpResponseRedirect(reverse('survat.survatapp.views.listindex'))
else:
form = DocumentForm() # A empty, unbound form
# Load documents for the list page
documents = Document.objects.all()
def delete_matrix():
documents = Document.objects.all()
for document in documents:
document.delete()
if request.method == 'POST':
tempCox = []
tempAalen = []
timeColumn = request.POST.get('timeColumn', '')
tempCox.append(timeColumn)
tempAalen.append(timeColumn)
eventColumn = request.POST.get('eventColumn', '')
tempCox.append(eventColumn)
tempAalen.append(eventColumn)
coxMember = request.POST.get('coxMember', '')
aalenMember = request.POST.get('aalenMember', '')
coxMemberI = int(float(coxMember))
aalenMemberI = int(float(aalenMember))
coxCovariate = []
aalenCovariate = []
for j in range(1,coxMemberI):
coxCovariate.append(request.POST.get('coxCovariate'+str(j), ''))
tempCox.append(request.POST.get('coxCovariate'+str(j), ''))
for k in range(1,aalenMemberI):
aalenCovariate.append(request.POST.get('aalenCovariate'+str(k), ''))
tempAalen.append(request.POST.get('aalenCovariate'+str(k), ''))
ert = request.POST.get('coxMember', '')
ert = str(type(int(float(ert))))
else:
tempCox = []
tempAalen = []
ert = "niji"
timeColumn = "niji"
eventColumn = "niji"
coxMember = "niji"
aalenMember = "niji"
coxMemberI = "niji"
aalenMemberI = "niji"
coxCovariate = []
aalenCovariate = []
for j in range(1,20):
coxCovariate.append ("niji")
for k in range(1,20):
aalenCovariate.append ("niji")
asdf=printcox('prostate1.csv','dtime','status1','age','hg','sz','sg','pf','rx')
# Render list page with the documents and the form
return render_to_response(
'survatapp/list.html',
{'documents': documents, 'form': form, 'ert':ert, 'wer':tempAalen,'asdf':asdf},
context_instance=RequestContext(request)
)
我用my.html中的{{asdf}}
调用它
提前感谢:)如果
CoxPHFitter
没有将结果作为字符串公开,则可以将打印输出重定向到变量。请参见,您也可以尝试使用cf.summary
,它返回这些摘要统计信息的数据帧。也许类似于cf.summary.to_string()
?非常感谢@SylvainBiehler,它可以无缝地工作:D@Cam.Davidson.Pilon你好,皮隆先生,很高兴在这里见到你,谢谢你的建议,我会试一试的。嗯,顺便问一下,你收到我的电子邮件了吗?它是从milexjaro@hotmail.com,仍然坚持在coxPH中将子类别变量作为一个整体类别处理:(