excel添加列匹配对比及标签生成(留存)


import pandas as pd
import numpy as np
import os
from datetime import date,datetime
today=date.today()downpath='/Users/kangyongqing/Downloads/'
gensuipath='/Users/kangyongqing/Documents/kangyq/202209/OKR预占/2023Q2促留存/月度留存分级/24样本学生跟随.xlsx'downname='102814_2023_07_27.csv'df0=pd.read_excel(gensuipath,engine='openpyxl',sheet_name='选定跟盯样本',usecols=[0,1,2,3,4,5,6,7,8,9,10,11,12])
print(df0.columns)
print(df0['是否选定'].sum())df1=pd.DataFrame(pd.read_csv(downpath+downname).rename(columns={'tutor_user_id':'教师id'}))
df1.insert(loc=3,column='ci',value=1)
#插入新的列,并赋值,loc是插入列的位置,从0开始
df1=pd.concat([df1,pd.DataFrame(columns=['cici'])],axis=1)
df1['cici'].fillna(2,inplace=True)
#插入新的列,并填充
df1.loc[:,'cicici']=3
#利用loc的行列索引标签来实现print(df1.head())
df2=df1.pivot_table(index=['student_user_id','教师id'],columns='yuefen',values='ci',aggfunc='count').reset_index().fillna(0)
print(df2.head())df3=pd.merge(df0,df2,on=['student_user_id','教师id'],how='left')
# print(df3.head())
# print(df3.columns)#判定停课还是换师
df4=df1.pivot_table(index='student_user_id',values='ci',aggfunc='sum').reset_index().rename(columns={'ci':'Q3总课次'})
print(df4.head())df5=pd.merge(df3,df4,on='student_user_id',how='left').fillna(0)
df5.loc[:,'leiji']=df5['7月跟随']+df5['8月跟随']+df5['9月跟随']
df5['标签']=np.where((df5['leiji']==0)&(df5['Q3总课次']>0),'换师',np.where((df5['leiji']==0)&(df5['Q3总课次']==0),'停课',''))
print(df5.head())
df5['student_user_id']=df5['student_user_id'].astype(np.int64).astype(str)
df5['家长id']=df5['家长id'].astype(np.int64).astype(str)
df5['教师id']=df5['教师id'].astype(np.int64).astype(str)
df5['m1']=df5['m1'].apply(lambda x:pd.to_datetime(x).strftime(format='%Y年%m月'))
df5['m2']=df5['m2'].apply(lambda x:pd.to_datetime(x).strftime(format='%Y年%m月'))
df5['m3']=df5['m3'].apply(lambda x:pd.to_datetime(x).strftime(format='%Y年%m月'))
#时间格式转化print(df5.head())#输出不包含某列的数据
df6=df5.loc[:,df5.columns!='leiji']
print(df6.head())#输出不包含多列的数据,加上~即可
df7=df5.loc[:,~df5.columns.isin(['leiji','Q3总课次'])]
print(df7.head())
df6.to_excel('/Users/kangyongqing/Documents/kangyq/202209/OKR预占/2023Q2促留存/月度留存分级/留存数据跟盯/'+'样本学生跟随明细'+str(today)+'.xlsx',index=False)

知识点:

  1. 读取excel指定列数据,pd.read_excel(usecols=[]);
  2. 数据集插入列的三种方法:insert、concat、loc三种;
  3. 数据透视表及填充空值,并重置索引;
  4. 时间格式调整为~年~月;
  5. np.where 方法生成标签列
  6. 导出不包含指定列的数据到excel

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/11033.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WPF实战学习笔记17-TodoView 添加新增、编辑、查询功能

文章目录 TodoView 添加新增、编辑、查询功能修改TodoViewModel.cs修改XAML修改ToDoService TodoView 添加新增、编辑、查询功能 修改TodoViewModel.cs using Mytodo.Common.Models; using Mytodo.Service; using Prism.Commands; using Prism.Ioc; using Prism.Mvvm; using …

WebSocket心跳机制(笔记大全)

一、WebSocket心跳机制前端 前端实现WebSocket心跳机制的方式主要有两种: 使用setInterval定时发送心跳包。在前端监听到WebSocket的onclose()事件时,重新创建WebSocket连接。 第一种方式会对服务器造成很大的压力,因为即使WebSocket连接正…

HummerRisk V1.3.0 发布

HummerRisk V1.3.0发布: 大家好,HummerRisk 1.3.0和大家见面了,在这个版本中我们继续在多云接入管理、多云检测方式、云资源态势方面提供新的能力,并增加了新的镜像仓库支持类型,并优化了云的区域选择、优化规则组内容…

C#时间轴曲线图形编辑器开发1-基本功能

目录 一、前言 1、简介 2、开发过程 3、工程下载链接 二、基本功能实现 1、绘图面板创建 (1)界面布置 (2)显示面板代码 (3) 面板水平方向、竖直方向移动功能实现 (4)面板放…

【数据结构】实验五:栈

实验五 栈 一、实验目的与要求 1)熟悉栈的类型定义和基本操作; 2)灵活应用栈解决具体应用问题。 二、实验内容 1、判断回文数,回文是指正读反读均相同的字符序列,如“1221”和“12321”均是回文,但“…

与传统透明屏相比,BOE透明屏有哪些特点优势?

BOE透明屏是一种新型的显示技术,它能够实现透明度高达90%以上的显示效果。这种屏幕可以应用于各种领域,如商业展示、智能家居、汽车行业等,具有广阔的市场前景。 BOE透明屏采用了先进的光学技术,通过控制光的传播和折射&#xff…

自建纯内网iot平台服务,软硬件服务器全栈实践

基于以下几个考虑,自制硬件设备,mqtt内网服务器。 1.米家app不稳定,逻辑在云端或xiaomi中枢网关只支持少部分在本地计算。 2.监控homeassistant官方服务有大量数据交互。可能与hass安装小米账户有关。 3.硬件:原理图,l…

linux信号介绍

信号介绍 信号的概念 信号是信息的载体,Linux/UNIX 环境下,古老、经典的通信方式, 现下依然是主要的通信手段。 信号在我们的生活中随处可见,例如: 古代战争中摔杯为号; 现代战争中的信号弹&#x…

【KVC补充 Objective-C语言】

一、KVC补充 好,那么接下来,再给大家说一下这个KVC 1.首先我们说,这个KVC,就是指的什么 key value coding 吧 全称就是叫做(Key Value Coding),这是它的全称 那么,你在帮助文档里面搜的时候,你就搜key-value coding 是不是这个啊,key-value coding 然后点击,进…

Unity XML3——XML序列化

一、XML 序列化 ​ 序列化:把对象转化为可传输的字节序列过程称为序列化,就是把想要存储的内容转换为字节序列用于存储或传递 ​ 反序列化:把字节序列还原为对象的过程称为反序列化,就是把存储或收到的字节序列信息解析读取出来…

尚医通06:数据字典+EasyExcel+mongodb

内容介绍 1、数据字典列表前端 2、EasyExcel介绍、实例 3、数据字典导出接口、前端 4、数据字典导入接口、前端 5、数据字典添加redis缓存 6、MongoDB简介 7、MongoDB安装 8、MongoDB基本概念 数据字典列表前端 1、测试问题 (1)报错日志 &am…

SpringBoot复习:(4)打成的jar包是如何启动的?

jar包通过MANIFEST的Main-Class指定了主类JarLauncher, JarLauncher的main方法代码如下: 其中调用的launch的代码如下: 首先,创建了一个自定义的ClassLoader,代码如下: 其中调用的重载的createClassLoader代码如下&#xff1…

STM32MP157驱动开发——按键驱动(中断)

文章目录 编写使用中断的按键驱动程序编程思路设备树相关驱动代码相关 代码修改设备树文件gpio_key_drv.cMakefile编译测试 编写使用中断的按键驱动程序 对于使用中断的按键驱动,内核自带的驱动程序 drivers/input/keyboard/gpio_keys.c 就可以,需要做的…

对gpt的简单认识

1.gpt是什么? GPT(Generative Pre-trained Transformer 生成式预训练Transformer模型)是一种基于Transformer架构的预训练语言模型,由OpenAI开发。GPT模型以无监督学习的方式使用大规模语料库进行预训练,并具有生成文…

cpolar内网穿透工具

文章目录 cpolar内网穿透工具 cpolar内网穿透工具 科学技术的发展日新月异,电子设备在人们的生活中已成为不可或缺的工具,甚至在很多情况下,各类型的电子设备已经成为工作的核心,虽然移动设备越来越小巧,功能也越来越…

基于netlify生成custom SSL certificate

(1)腾讯云申请 (2)域名控制台解析 (3)Nginx下载(crt: CA certificate Chain)

课程27:API接口请求日志【后端】

🚀前言 本文是《.Net Core从零学习搭建权限管理系统》教程专栏的课程(点击链接,跳转到专栏主页,欢迎订阅,持续更新…) 专栏介绍:以实战为线索,基于.Net 7 + REST + Vue、前后端分离,不依赖任何第三方框架,从零一步一步讲解权限管理系统搭建。 专栏适用于人群:We…

图片URL通过js自动上传

场景 已经获取了图片的地址,想直接通过这个链接上传到网站指定位置 操作步骤 找到上传图片对应的控件,一般都是input, 在谷歌浏览器的Elements中 搜索 input[typefile],一般就是需要的对象了找到对应的对象,执行以下代码即可上…

SpringBoot 8种异步实现方式

前言:异步执行对于开发者来说并不陌生,在实际的开发过程中,很多场景多会使用到异步,相比同步执行,异步可以大大缩短请求链路耗时时间,比如:「发送短信、邮件、异步更新等」,这些都是…

【Maven】Maven 中 pom.xml 文件

文章目录 前言什么是 pom?pom配置一览 1. dependencies2.scope3.properties4.plugin参考 前言 Maven 是一个项目管理工具,可以对 Java 项目进行构建和管理依赖。 本文,我们认识下 pom.xml 文件。POM(Project Object Model, 项目…