Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何改进和修复简单的python评分算法_Python_Pandas - Fatal编程技术网

如何改进和修复简单的python评分算法

如何改进和修复简单的python评分算法,python,pandas,Python,Pandas,我试图让我的评分函数使用填充列来确定最后一列的空值。该算法基于如下所示的MySQL。我遇到了很多与文本变量相关的语法错误,而且看起来非常复杂,没有压缩 import pandas as pd import numpy as np d = {'BP systolic': [139, 125, 117], 'BP diastolic': [83, 76, 87], 'Gender': ['Male', 'Female', 'Female'], '1st degr

我试图让我的评分函数使用填充列来确定最后一列的空值。该算法基于如下所示的MySQL。我遇到了很多与文本变量相关的语法错误,而且看起来非常复杂,没有压缩

import pandas as pd
import numpy as np

d = {'BP systolic': [139, 125, 117], 
     'BP diastolic': [83, 76, 87], 
     'Gender': ['Male', 'Female', 'Female'], 
     '1st degree relative with diabetes': ['Yes', 'Yes', 'No'],
     'Physically active': ['Yes', 'Yes', 'No'],
     'Age, years': [34, 48, 57],
     'history of hypertension': ['Yes', 'No', 'Yes'],
     'BMI, kg/m²': [40, 25, 17],
     'American Diabetes Association (ADA) Risk Calculator': [np.nan, np.nan, np.nan]}


df = pd.DataFrame(data=d)    
points = []
for i in range(0, len(df['BP systolic'])):
    p = 0
    
    r1 = df['BP systolic'][i]
    r2 = df['BP diastolic'][i]
    r3 = df['Gender'][i]
    r4 = df['1st degree relative with diabetes'][i]
    r5 = df['Physically active'][i]
    r6 = df['Age, years'][i]
    r7 = df['history of hypertension'][i]
    r8 = df['BMI, kg/m²'][i]

    if r1 > 140:
        p += 1
        points.append([r1, p])
    else:
        p += 0
        points.append([r1, p])
        
    if r2 > 90:
        p += 1
        points.append([r2, p])
    else:
        p += 0
        points.append([r2, p])
        
    if r3 = 'Male':
        p += 1
        points.append([r3, p])
    else:
        p += 0
        points.append([r3, p])
     
    if r4 = 'Yes':
        p += 1
        points.append([r4, p])
    else:
        p += 0
        points.append([r4, p])
        
    if r5 = 'No':
        p += 1
        points.append([r5, p])
    else:
        p += 0
        points.append([r5, p])
        
    if r6 < 40:
        p += 0
        points.append([r6, p])
    elif r6 > 40 < 50:
        p += 1
        points.append([r6, p])
    elif r6 > 50 < 60:
        p += 2
        points.append([r6, p])
    else:
        p += 3
        points.append([r6, p])
        
    if r7 = 'Yes':
        p += 1
        points.append([r7, p])
    else:
        p += 0
        points.append([r7, p])
        
    if r8 < 25:
        p += 0
        points.append([r8, p])
    elif r8 > 25 < 30:
        p += 1
        points.append([r8, p])
    elif r8 > 30 < 40:
        p += 2
        points.append([r8, p])
    else:
        p += 3
        points.append([r8, p])
pd.options.display.max_columns = None
pd.options.display.max_rows = None
print(df)
print(points)
将熊猫作为pd导入
将numpy作为np导入
d={'BP systolic':[139125117],
“舒张压”:[83,76,87],
‘性别’:[‘男性’、‘女性’、‘女性’],
“糖尿病一级亲属”:[“是”、“是”、“否”],
“体力活动”:[“是”、“是”、“否”],
“年龄,年”:[34,48,57],
‘高血压病史’:[‘是’、‘否’、‘是’],
“体重指数,kg/m²”:[40,25,17],
“美国糖尿病协会(ADA)风险计算器”:[np.nan,np.nan,np.nan]}
df=pd.DataFrame(数据=d)
点数=[]
对于范围(0,len)内的i(df['BP systolical']):
p=0
r1=df[‘收缩压’][i]
r2=df[‘舒张压’][i]
r3=df[‘性别’][i]
r4=df[“与糖尿病相关的一级”][i]
r5=df[“体力活动”][i]
r6=df[“年龄,年][i]
r7=df[高血压病史][i]
r8=df['BMI,kg/m²][i]
如果r1>140:
p+=1
points.append([r1,p])
其他:
p+=0
points.append([r1,p])
如果r2>90:
p+=1
点。追加([r2,p])
其他:
p+=0
点。追加([r2,p])
如果r3=男性:
p+=1
点。追加([r3,p])
其他:
p+=0
点。追加([r3,p])
如果r4=‘是’:
p+=1
points.append([r4,p])
其他:
p+=0
points.append([r4,p])
如果r5=‘否’:
p+=1
points.append([r5,p])
其他:
p+=0
points.append([r5,p])
如果r6<40:
p+=0
points.append([r6,p])
elif r6>40<50:
p+=1
points.append([r6,p])
elif r6>50<60:
p+=2
points.append([r6,p])
其他:
p+=3
points.append([r6,p])
如果r7=‘是’:
p+=1
points.append([r7,p])
其他:
p+=0
points.append([r7,p])
如果r8<25:
p+=0
points.append([r8,p])
elif r8>25<30:
p+=1
points.append([r8,p])
elif r8>30<40:
p+=2
points.append([r8,p])
其他:
p+=3
points.append([r8,p])
pd.options.display.max_columns=None
pd.options.display.max_行=无
打印(df)
打印(点数)
CREATE TABLE`trial1`.`trial1`(`Name`TEXT-NULL,`Age,years`INT-NULL,`Gender`TEXT-NULL,`1度糖尿病相关`TEXT-NULL,`高血压病史`TEXT-NULL,`BP-systolic`INT-NULL,`BP-舒张期`INT-NULL,`体力活动`TEXT-NULL,`BMI,kg/m²`INT-NULL,`美国糖尿病协会(ADA)`风险计算器'FLOAT NULL)引擎=InnoDB;
在“trial1”(“姓名”,“年龄,年”,“性别”,“糖尿病一级亲属”,“高血压病史”,“收缩压”,“舒张压”,“体力活动”,“体重指数,kg/m²”,“美国糖尿病协会(ADA)风险计算器”)中插入值(“人A”,“34”,“男性”,“是”,“是”,“139”,“83”,“是”,“40”,空);
在“trial1”(“姓名”,“年龄,年份”,“性别”,“糖尿病一级亲属”,“高血压病史”,“收缩压”,“舒张压”,“体力活动”,“体重指数,kg/m²”,“美国糖尿病协会(ADA)风险计算器”)中插入值('Person B','48','女性','Yes','No','125','76','Yes','25',NULL);
在“trial1”(“姓名”,“年龄,年”,“性别”,“糖尿病一级亲属”,“高血压病史”,“收缩压”,“舒张压”,“体力活动”,“体重指数,kg/m²”,“美国糖尿病协会(ADA)风险计算器”)中插入值('Person C','57','femal','No','Yes','117','87','No','17',NULL);
更新试验1
设置“美国糖尿病协会(ADA)风险计算器”=(
(收缩压`>=140)+(舒张压`>=90)+
('Gender`='Male')+
(`1度糖尿病相关`Yes`)+
(‘高血压病史’=‘是’)+
(`体力活动'='否')+
案例
当年龄小于40岁时,则为0
当年龄在40到49岁之间时,则1
当年龄在50岁至59岁之间时,则为2岁
当“年龄,年数”>=60时,则为3
完+
案例
当“BMI,kg/m²”<25时,则为0
当“BMI,kg/m²”介于25和30之间时,则为1
当“BMI,kg/m²”介于31和39之间时,则为2
当“BMI,kg/m²”>=40时,则为3
结束
) / 12 
其中“美国糖尿病协会(ADA)风险计算器”为空

您需要使用两个等号
如果r3=['Male']

您好,您遇到了什么错误?@IronMan File“”,第43行如果r3=['Male']:^SyntaxError:invalid syntaxes是的,这解决了所有文本变量语法错误,这些错误与一些变量没有获得指定分数有关,或者在这种情况下,我实际上可以将列指定给该总和p,你知道吗?
CREATE TABLE `trial1`.`trial1` ( `Name` TEXT NULL , `Age, years` INT NULL , `Gender` TEXT NULL , `1st degree relative with diabetes` TEXT NULL , `history of hypertension` TEXT NULL , `BP systolic` INT NULL , `BP diastolic` INT NULL , `Physically active` TEXT NULL , `BMI, kg/m²` INT NULL , `American Diabetes Association (ADA) Risk Calculator` FLOAT NULL ) ENGINE = InnoDB;

INSERT INTO `trial1` (`Name`, `Age, years`, `Gender`, `1st degree relative with diabetes`, `history of hypertension`, `BP systolic`, `BP diastolic`, `Physically active`, `BMI, kg/m²`, `American Diabetes Association (ADA) Risk Calculator`) VALUES ('Person A', '34', 'Male', 'Yes', 'Yes', '139', '83', 'Yes', '40', NULL);
INSERT INTO `trial1` (`Name`, `Age, years`, `Gender`, `1st degree relative with diabetes`, `history of hypertension`, `BP systolic`, `BP diastolic`, `Physically active`, `BMI, kg/m²`, `American Diabetes Association (ADA) Risk Calculator`) VALUES ('Person B', '48', 'Female', 'Yes', 'No', '125', '76', 'Yes', '25', NULL);
INSERT INTO `trial1` (`Name`, `Age, years`, `Gender`, `1st degree relative with diabetes`, `history of hypertension`, `BP systolic`, `BP diastolic`, `Physically active`, `BMI, kg/m²`, `American Diabetes Association (ADA) Risk Calculator`) VALUES ('Person C', '57', 'Female', 'No', 'Yes', '117', '87', 'No', '17', NULL);
update trial1
set `American Diabetes Association (ADA) Risk Calculator` = ( 
  (`BP systolic` >= 140) + (`BP diastolic` >= 90) +
  (`Gender` = 'Male') +
  (`1st degree relative with diabetes` = 'Yes') +
  (`history of hypertension` = 'Yes') +
  (`Physically active` = 'No') +
  case
    when `Age, years` < 40 then 0 
    when `Age, years` BETWEEN 40 AND 49 then 1 
    when `Age, years` BETWEEN 50 AND 59 then 2
    when `Age, years` >= 60 then 3
  end +  
  case
    when `BMI, kg/m²` < 25 then 0
    when `BMI, kg/m²` BETWEEN 25 AND 30 then 1 
    when `BMI, kg/m²` BETWEEN 31 AND 39 then 2 
    when `BMI, kg/m²` >= 40 then 3
  end
) / 12 
where `American Diabetes Association (ADA) Risk Calculator` is null