0223代码备份

import os
import pandas as pd
import numpy as np

folder_path = r'F:\health\pr'
for file_name in os.listdir(folder_path):
    if file_name.endswith('.xlsx'):
        file_path = os.path.join(folder_path, file_name)
        df = pd.read_excel(file_path)

        # 对每个excel进行操作
        for column_name in df.columns:
            if column_name in df.columns:
                df[column_name] = df[column_name].apply(lambda x: str(x).lower() if isinstance(x, str) else x)

        # 对特定列进行赋值操作
        if 'hv025' in df.columns:
            df['hv025'] = df['hv025'].apply(lambda x: 1 if x.lower() == 'urban' else (0 if x.lower() == 'rural' else 'n/a'))
            
        if 'hv104' in df.columns:
            def map_hv104(x):
                if pd.isnull(x):
                     return 'n/a'
                return 1 if x.lower() == 'male' else (0 if x.lower() == 'female' else 'n/a')
            df['hv104'] = df['hv104'].apply(map_hv104)

        if 'hv204' in df.columns:
            def map_hv204(x):
                if pd.isnull(x):
                    return 'n/a'
                if x == "Don't know" or (isinstance(x, int) and 31 <= x <= 999):
                    return 0
                return 1
            df['hv204'] = df['hv204'].apply(map_hv204)
        if 'hv206' in df.columns:
            df['hv206'] = df['hv206'].apply(lambda x: 1 if str(x).lower() == 'yes' else (0 if str(x).lower() == 'no' else 'n/a'))
        if 'hml10' in df.columns:
            df['hml10'] = df['hml10'].apply(lambda x: 1 if str(x).lower() == 'yes' else (0 if str(x).lower() == 'no' else 'n/a'))

        # 保存修改后的excel文件
        df.to_excel(file_path, index=False)
print ("over1")
import os
import pandas as pd

folder_path = r'F:\health\pr'
for file_name in os.listdir(folder_path):
    if file_name.endswith('.xlsx'):
        file_path = os.path.join(folder_path, file_name)
        df = pd.read_excel(file_path)

        # 对每个excel进行操作
        for column_name in ['hv106', 'hv201', 'hv205', 'hv207', 'hv208', 'hv209', 'hv210', 'hv211', 'hv212', 'hv221', 'hv227', 'hv228', 
                            'hc57', 'hc70', 'hc71', 'hc72', 'hml12', 'hml32', 'hml35']:
            
            if column_name not in df.columns:
                continue

            if column_name == 'hv106':
                df.loc[:, column_name] = df[column_name].apply(lambda x: 0 if x.lower() in ['no education, preschool', "don't know", 'dk'] else (1 if x.lower() == 'primary' else (2 if x.lower() == 'secondary' else (3 if x.lower() == 'higher' else 'n/a'))))
            elif column_name == 'hv201':
                df.loc[:, column_name] = df[column_name].apply(lambda x: 0 if x.lower() in ['lake/pond/river/channel/irrigation channel', 'unprotected well', 'unprotected spring', 'other', '99', 'river/stream', 'sea, lake', 'open well in dwelling', 'open well in yard/plot', 'open public well', 'pond, lake', 'river, stream', 'spring'] else 1)
            elif column_name == 'hv205':
                def map_hv205(x):
                    if pd.isnull(x):
                        return 'n/a'
                    if x in ["no facility", "traditional pit toilet", "other", "99", "traditional pit toilet (uncovered)", "no facility, bush, field", "No facility/bush/field", "Pit latrine without slab/open pit", "Hanging toilet/latrine", "Flush to somewhere else", "no facility/outdoors/bush", "bucket/potty/other container"]:
                        return 0
                    return 1
                df['hv205'] = df['hv205'].apply(map_hv205)
            elif column_name in ['hv207', 'hv208', 'hv209', 'hv210', 'hv211', 'hv212', 'hv221', 'hv227']:
                df.loc[:, column_name] = df[column_name].apply(lambda x: 1 if str(x).lower() == 'yes' else (0 if str(x).lower() == 'no' else 'n/a'))
            elif column_name == 'hv228':
                def map_hv228(x):
                    if pd.isnull(x):
                        return 'n/a'
                    if x == "all children":
                        return 2
                    if x == "some children":
                        return 1
                    return 0
                df['hv228'] = df['hv228'].apply(map_hv228)           
            elif column_name == 'hc57':
                df.loc[:, column_name] = df[column_name].apply(lambda x: 0 if isinstance(x, str) and x.lower() in ['mild', 'moderate', 'severe'] else 1)
            elif column_name == 'hml12':
                df.loc[:, column_name] = df[column_name].apply(lambda x: 3 if x.lower() in ['only treated bednets', 'only treated (itn) nets'] else (2 if x.lower() in ['both treated and untreated bednets', 'both treated (itn) and untreated nets'] else (1 if x.lower() in ['only untreated bednets', 'only untreated nets'] else (0 if x.lower() in ['no bednet', 'did not sleep under a net'] else 'n/a'))))
            elif column_name in ['hml32', 'hml35']:
                df.loc[:, column_name] = df[column_name].apply(lambda x: 0 if isinstance(x, str) and x.lower() == 'positive' else (1 if isinstance(x, str) and x.lower() == 'negative' else 'n/a'))

        # 保存修改后的excel文件
        df.to_excel(file_path, index=False)
print ("over2")


import os
import pandas as pd

folder_path = r'F:\health\pr'
for file_name in os.listdir(folder_path):
    if file_name.endswith('.xlsx'):
        file_path = os.path.join(folder_path, file_name)
        df = pd.read_excel(file_path)

        # 对每个excel进行操作
        for column_name in ['v157', 'v158', 'v159', 'v717', 'v731', 'v732', 'v445', 'v130', 'v217']:
            if column_name not in df.columns:
                continue
            
            religion_mapping = { 'catholic': 1,  'muslim': 2,  'islamic': 2,  'protestant': 3,  'traditional / animist': 4,  'animist': 4,
                                 'other christian': 5,  'salvation army': 6,  'assembly of god': 7,  "jehovah's witnesses": 8,  'no religion': 10}
            
            if column_name in ['v157', 'v158', 'v159']:
                def map_v157_v158_v159(x):
                    if pd.isnull(x):
                        return 'n/a'
                    if not isinstance(x, str):
                        return x
                    if x.lower() in ['almost every day', 'at least once a week']:
                        return 1
                    return 0
                df['v157'] = df['v157'].apply(map_v157_v158_v159)
                df['v158'] = df['v158'].apply(map_v157_v158_v159)
                df['v159'] = df['v159'].apply(map_v157_v158_v159)
                
            elif column_name == 'v717':
                df.loc[:, column_name] = df[column_name].apply(lambda x: 1 if str(x).lower() in ['prof., tech., manag.', 'professional/technical/managerial'] else (2 if str(x).lower() == 'clerical' else (3 if str(x).lower() in ['sales', 'services'] else (4 if str(x).lower() == 'skilled manual' else (5 if str(x).lower() == 'unskilled manual' else (6 if str(x).lower() in ['household & domestic', 'household and domestic'] else (7 if str(x).lower() in ['agric-self employed', 'agriculture - self employed', 'agricultural - self employed'] else (8 if str(x).lower() == 'other' else (0 if str(x).lower() in ['don\'t know', 'not working', '99'] else 'n/a')))))))))
            elif column_name == 'v731':
                df.loc[:, column_name] = df[column_name].apply(lambda x: 2 if str(x).lower() == 'currently working' else (1 if str(x).lower() in ['in the past year', 'have a job, but on leave last 7 days'] else (0 if str(x).lower() == 'no' else 'n/a')))
            elif column_name == 'v732':
                df.loc[:, column_name] = df[column_name].apply(lambda x: 2 if str(x).lower() == 'all year' else (1 if str(x).lower() == 'seasonal' else (0 if str(x).lower() in ['occasional', 'temporary'] else 'n/a')))
            
            elif column_name == 'v445':
                def map_v445(x):
                    if pd.isnull(x):
                        return 'n/a'
                    if x == 'flagged cases' or (isinstance(x, int) and x >= 1849):
                        return 1
                    return 0
                df['v445'] = df['v445'].apply(map_v445)
                
            elif column_name == 'v130':
                def map_religion(x):
                    if pd.isnull(x):
                        return 'n/a'
                    words = str(x).split()
                    for word in words:
                         if word.lower() in religion_mapping:
                                return religion_mapping[word.lower()]
                    return 9
                df['v130'] = df['v130'].apply(map_religion)
           
            elif column_name == 'v217':
                df.loc[:, column_name] = df[column_name].apply(lambda x: 1 if str(x).lower() == 'middle of the cycle' else (0 if str(x).lower() in ['after period ended', 'at any time', 'before period begins', "don't know", 'during her period', 'other', '9'] else 'n/a'))

        # 保存修改后的excel文件
        df.to_excel(file_path, index=False)
print ("over3")


import os
import pandas as pd
import numpy as np

folder_path = r'F:\health\pr'
for file_name in os.listdir(folder_path):
    if file_name.endswith('.xlsx'):
        file_path = os.path.join(folder_path, file_name)
        df = pd.read_excel(file_path)

        # 对每个excel进行操作
        for column_name in ['v313', 'v326', 'v416', 'v467d', 'v750', 'v751', 'v754cp', 'v754dp', 'v754jp', 'v754wp', 'v761', 'v781', 'v783', 'hiv03']:
            if column_name not in df.columns:
                continue
            
            if column_name == 'v313':
                df.loc[:, column_name] = df[column_name].apply(lambda x: 2 if x == 'modern method' else (1 if x in ['traditional method', 'folkloric method'] else (0 if x == 'no method' else 'n/a')))
           
            elif column_name == 'v326':
                def map_v326(x):
                    if pd.isnull(x):
                        return 'n/a'
                    words = str(x).split()
                    for word in words:
                        if word.lower() in ['public', 'health', 'hospital', 'pharmacy', 'medical', 'clinic', 'government', 'doctor']:
                            return 1
                    return 0
                df['v326'] = df['v326'].apply(map_v326)
                
            elif column_name == 'v416':
                def map_v416(x):
                    if pd.isnull(x):
                        return 'n/a'
                    if x in ["heard of ors", "used ors"]:
                        return 1
                    return 0
                df['v416'] = df['v416'].apply(map_v416)
                
            elif column_name == 'v467d':
                df.loc[:, column_name] = df[column_name].apply(lambda x: 1 if x == 'not a big problem' else (0 if x == 'big problem' else 'n/a'))
            elif column_name in ['v750', 'v751', 'v761', 'v781', 'v783']:
                df.loc[:, column_name] = df[column_name].apply(lambda x: 1 if x == 'yes' else (0 if x == 'no' else 'n/a'))
            elif column_name in ['v754cp', 'v754dp', 'v754jp', 'v754wp']:
                df.loc[:, column_name] = df[column_name].apply(lambda x: 1 if x in ['reduce chances of aids by always using condoms during sex', 'reduce chance of aids: have 1 sex partnr with no oth partner', 'no'] else (0 if x in ['don\'t know', '9'] else 'n/a'))
            elif column_name == 'hiv03': 
                def map_hiv03(x):
                    if pd.isnull(x):
                        return x
                    if isinstance(x, str) and x.lower() in ['hiv  positive', 'hiv2 positive', 'hiv1 & hiv2 positive']:
                        return 0
                    if isinstance(x, str) and x.lower() in ['hiv negative', 'inconclusive', 'indeterminate', '8', 'indeterminant']:
                        return 1
                    return x
                df['hiv03'] = df['hiv03'].apply(map_hiv03)

        # 保存修改后的excel文件
        df.to_excel(file_path, index=False)
print ("over4")


import os
import pandas as pd

folder_path = r'F:\health\pr'
for file_name in os.listdir(folder_path):
    if file_name.endswith('.xlsx'):
        file_path = os.path.join(folder_path, file_name)
        df = pd.read_excel(file_path)

        # 重命名列
        rename_mapping = {
            'hv025': 'urban',
            'hv106': 'edu',
            'hv201': 'water',
            'hv204': 'waterdis',
            'hv205': 'toilet',
            'hv206': 'elec',
            'hv207': 'radio',
            'hv208': 'TV',
            'hv209': 'refrigerator',
            'hv210': 'bicycle',
            'hv211': 'motorcycle',
            'hv212': 'car',
            'hv221': 'phone',
            'hv227': 'bednets',
            'hv228': 'bednetchildren',
            'hc57': 'anemia',
            'hml10': 'ITN',
            'hml12': 'netstype',
            'hml32': 'malaria from blood smear test',
            'hml35': 'malaria rapid test',
            'v157': 'newspapers',
            'v158': 'listening to radio',
            'v159': 'watching TV',
            'v717': 'occu',
            'v731': 'occustatus',
            'v732': 'occufrequency',
            'v445': 'femaleBMI',
            'v130': 'religion',
            'v217': 'ovulatory cycle',
            'v313': 'type of contraceptive',
            'v326': 'contraceptive source',
            'v467d': 'distance to the health facility',
            'v761': 'condom use',
            'v781': 'tested for AIDS',
            'v783': 'Know where',
            'hiv03': 'hiv'}
        
        df.rename(columns=rename_mapping, inplace=True)

        # 删除列
        columns_to_delete = ['hv226', 'hv234', 'hc55', 'hb55', 'hb56', 'ha63', 'ha65', 'hb63', 'hb65', 'hb40', 'v131', 'hc70', 'hc71', 'hc72', 'hml33']
        for column in columns_to_delete:
            if column in df.columns:
                df.drop(columns=column, inplace=True)

        # 保存修改后的excel文件
        df.to_excel(file_path, index=False)
print ("over5")

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值