数据处理分类实例:人员去向分析

数据处理分类实例:人员去向分析

一、数据获取

设置去向

import pandas as pd
import docx
clubs={
     '俱乐部名称':['乒乓球','羽毛球','篮球','器械训练','足球','桌游','无人机','摄影','吉他']}

通过**星发起签到获取成员当日去向
数据处理分类实例:人员去向分析_第1张图片
读取签到数据,并设置姓名为索引

data=pd.read_excel('E:/编程/****.xlsx',encoding='utf-8')
data=data.set_index('1.姓名:')

读取人名单数据,并设置姓名为索引

num=pd.read_excel('E:/编程/人名单.xlsx')
num=num.set_index('1.姓名:')

合并数据

con=pd.concat([num,data],axis=1,sort=False)
'''
pd.concat(
	objs, #要合并对象
	axis=0,#选择合并轴 0按列合并 1按行合并
	join='outer', #outer 并集 inner 交集 
	join_axes=None,#按照选定数据表的索引合并 合并后会切除其他数据表多余索引及数据
	ignore_index=False, #False 按索引合并 True 新建索引0~n 按新索引合并合并后索引被重写
	keys=None,
	levels=None,
	names=None,
	verify_integrity=False,
	copy=True
	)
'''
#如果读取的签到的数据有重复会报错所以**星问卷需要设置为每人填写一次

二、数据处理并写入文档

获取日期

import datetime
date=datetime.datetime.now().strftime('%Y{y}%m{m}%d{d}').format(y='年',m='月',d='日')
 #Y 年保留4为 y保留2位

新建文档

doc_all=docx.Document()

写入文档

para=doc_all.add_heading('', level=2)#添加段落
para.alignment = docx.enum.text.WD_ALIGN_PARAGRAPH.LEFT#设置段落左对齐
run = para.add_run(u'%S'%data)#将data写入文档
#设置字体
run.font.name = u'黑体'
run._element.rPr.rFonts.set(docx.oxml.ns.qn('w:eastAsia'), u'黑体')

获取未填写人员数据

lis=list(con[con['提交答卷时间'].isna()].index)
#con['提交答卷时间']提取'提交答卷时间'中的数据到一个series
#con['提交答卷时间'].isna()判断中数据是否非空
#con[con['提交答卷时间'].isna()]选择数据中为空的行
#con[con['提交答卷时间'].isna()].index获取选出数据的索引(姓名)到一个series
#list(con[con['提交答卷时间'].isna()].index)将series转化为list
for i in lis:
    print(i,end='  ')
print('',end='\n')

获取俱乐部报名人数信息

coo=data.groupby('2.2021-02-01选报课程:|单选题|')['序号'].count()
#按去向分组并计数
cool1=list(coo.index)
#获取去向名称
cool2=list(coo.values)
#获取去向成员数
data2='选报课程   人次\n'
for a,b in zip(cool1,cool2):
    data2=data2+a+'   %d'%b+'\n'
print(data2)

获取各俱乐部报名具体信息

di=dict(list(data.groupby('2.2021-02-01选报课程:|单选题|',as_index=False)))
#按照俱乐部分组并转化为字典
for i,k in zip(clubs['俱乐部名称'],clubs['负责人']):
	#通过zip可将分别存储的对应数据对应并引入循环
    print(i+'  负责人:'+k+'\n成员:')
    temp=list(di[i].index)
    #获取名称为 i 的去向的成员
    #print(type(temp))
    for j in temp:
        print(j,end=' ')
    print('',end='\n')

你可能感兴趣的:(数据分析)