欢迎光临散文网 会员登陆 & 注册

PYTHON 类定义与处理excel表

2019-11-25 11:01 作者:不妙脆角  | 我要投稿

最近在用python处理中国家庭追踪调查(cfps)的数据,记录一下过程。

首先对于多参数的行,定义一个类去存储是再好不过了。定义方法如下,首先要有一个

__init__(self,定义参数1,定义参数2,...)的构造函数。之后你要定义一个类就要输入这些参数。

举个例子:

class UP:

    def __init__(self,粉丝数量,稿件数量,性别,ID):

            self.sum_of_fans=粉丝数量;

            self.sum_of_articles=稿件数量;

            self.gender=性别;

            self.ID=ID;

#你还可以在类里自己定义类函数,并直接引用自身的参数做变量。

    def print_UP(self):

            print(self.ID);

#定义完成

#下面开始生成一个UP

gender=1;

ID="HDTT"

HDTT=UP(1,50,gender,ID);

#这样一个UP主类就定义完成了。

#你可以通过调用类中的变量来查看UP主的信息

print(HDTT.ID);

#还可以调用内置函数

HDTT.print_UP();



下面开始正式工作:

#定义一个成人类

class adult:

    def __init__(self,pid,code_a_p,fid16,provcd16,urban16,cfps_age,cfps_gender,pq1101,cfps2016eduy_im,cfps2016eduy,cfps2016edu):

        #个人ID 1

        self.pid=pid;

        #家庭内码 3

        self.code_a_p=code_a_p;

        #家庭码

        self.fid16=fid16;

        #省份 13

        self.provcd16=provcd16;

        #城乡 16

        self.urban16=urban16

        #年龄 

        self.cfps_age=cfps_age;

        #性别

        self.cfps_gender=cfps_gender;        

        #是否读书

        self.pq1101=pq1101;

        #受教育年限

        self.cfps2016eduy_im=cfps2016eduy_im;

        #已完成教育年限

        self.cfps2016eduy=cfps2016eduy;

        #最高学历

        self.cfps2016edu=cfps2016edu;

        

然后开始处理excel

#write包

import xlwt

#read包

import xlrd

#打开成人的数据

#这里地址前的r是取消转义符号,意思是引号内的斜杠不是用来生成特殊符号的

#比如\n就是回车。加上r就按"\n"而不是回车输出了。

data_adult=xlrd.open_workbook(r"C:\Users\16000\Desktop\cfps2016adult_201906_2.xlsx");

#以索引的方式打开第一个sheet表

table_adult = data_adult.sheet_by_index(0);

#获取第一行,也就是表头的参数

parameter_list_adult=table_adult.row_values(0);

adult_list=[];

adult_ID_list=[];

#开始读入数据,以excel行列索引的方式读入数据

#这里可以把excel表改成数字显示方式,方便查看


选项→公式→R1C1引用样式


for i in range(1,table_adult.nrows):

            #个人ID 1

    pid=table_adult.cell(i,0).value;

        #家庭内码 2

    code_a_p=table_adult.cell(i,1).value;

        #家庭码 3

    fid16=table_adult.cell(i,2).value;

    if fid16 in child_fmlID_list:

        adult_ID_list.append(pid);

        #省份 13

        provcd16=table_adult.cell(i,3).value;

        #城乡 16

        urban16=table_adult.cell(i,4).value;

        #年龄 

        cfps_age=table_adult.cell(i,5).value;

        #性别

        cfps_gender=table_adult.cell(i,6).value;

        #是否读书

        pq1101=table_adult.cell(i,7).value;

        #受教育年限

        cfps2016eduy_im=table_adult.cell(i,9).value;

        #已完成教育年限

        cfps2016eduy=table_adult.cell(i,10).value;

        #最高学历

        cfps2016edu=table_adult.cell(i,8).value;

        

#最后由读取的变量,定义类        adult_per=adult(pid,code_a_p,fid16,provcd16,urban16,cfps_age,cfps_gender,pq1101,cfps2016eduy_im,cfps2016eduy,cfps2016edu);

#把类存入列表。

        adult_list.append(adult_per);


#写入数据

f=xlwt.Workbook();

sheet1 = f.add_sheet(u'sheet1',cell_overwrite_ok=True);

for i in range(1,len(adult_list)):

    sheet1.write(i,0,adult_list[i].fid16);

    sheet1.write(i,1,adult_list[i].provcd16);

f.save(r"C:\Users\16000\Desktop\result_family_8.xls");

PYTHON 类定义与处理excel表的评论 (共 条)

分享到微博请遵守国家法律