PYTHON 类定义与处理excel表

最近在用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表改成数字显示方式,方便查看

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");