数据处理
文章平均质量分 80
小小明-代码实体
高阶数据处理玩家带你高端姿势玩数据!!!关注我发现更多精彩~
展开
-
Python日期范围按旬和整月以及剩余区间拆分
一个比较麻烦的日期拆分问题~原创 2023-12-16 15:32:22 · 3075 阅读 · 2 评论 -
将不规则时间段降雨量拆分合并到整点小时时间段
一份数据集描述每个站点在各个时间段内的总降雨量,可以将这个时间段的每分钟平均降雨量视为这1分钟的降雨量,最终整理合并出按整点小时统计的降雨量。例如结果是6:00-7:00,7:00-8:00等。但是原始数据集有上百万条,经过这样处理后可能出现上亿条中间数据,很可能导致内存不足。所以我出场使用一些几乎不使用额外内存的巧妙方式。咱们的测试数据共48万条。可以很明显的看到角标11到角标12的时间段再按小时拆分后存在重叠时间段,需要合并。然后重采样到小时的单位。原创 2022-10-28 20:53:10 · 16256 阅读 · 5 评论 -
Python&JS宏 实现保留样式合并表格后拆分
将所有表格的数据区域合并起来,第二列要插入当前年月,之后再对合并后的总表使用业务员进行拆分,整个操作要求保留原始数据的所有样式,包括颜色和合并单元格等。原创 2022-10-21 09:24:19 · 17054 阅读 · 10 评论 -
二道题:分组顺序向下填充 和 标注数据整理
之前群友分享这样一道Pandas题:应用pandas模块,导入“python_test.xlsx”的excel中的表格数据(2个sheet)要求:将sheet1表数据中Code_A字段按照下列规则替换为sheet2表数据中对应的Code_B字段。替换规则:1)、先按City,Year,Month,MonthSort升序排序,然后根据City,Year,Month,MonthSort匹配对应行进行替换。原创 2022-10-02 12:17:08 · 21203 阅读 · 4 评论 -
2022-07 Pandas进阶复盘汇总
重读了《Pandas 百问百答》和《joyful-pandas》,对一些容易遗忘及相关内容进行复盘总结。原创 2022-07-17 22:09:12 · 35149 阅读 · 29 评论 -
对比MySQL和Pandas统计直播间各时间段上线人数
一道面试题如下:简单理解就是求每个直播间,所有的最短时间段的上线人数。简单图解下:有了上图,我们应该就秒懂了这题的解题思路,先将所有的时间点排序,按顺序分配得到每个时间分区,绿色为进入起始时间点,红色为结束时间点,我们进入起始点时+1,进入结束时间点时-1,这样就可以得到每个区间的在线人数了。当然假如user3也从进去,则这个时间点位置+2,后续的时间片段内在线人数就是累加后的值。......原创 2022-07-09 23:10:27 · 27137 阅读 · 15 评论 -
Python调用VBA事件编程监控Excel
📢博客主页:https://blog.csdn.net/as604049322📢欢迎点赞 👍 收藏 ⭐留言 📝 欢迎讨论!📢本文由 小小明-代码实体 原创,首发于 CSDN🙉今天我要演示的是如何使用Python监控Excel,并通过Excel事件编程实现一些有意思的效果。首先,我们看看如何用Python打开Excel程序:Python连接Excel应用程序详解首先导入pywin32:import win32com.client as win32打开一个新的Excel程序有以下两种方法:.原创 2022-04-27 18:03:48 · 27120 阅读 · 26 评论 -
筛选100米范围内而且方位角相差15度以内的基站
前面我在《使用sklearn处理经纬度的三种距离计算与地图可视化》一文中演示了三种基站经纬度数据的计算。今天的需求给出原始数据是一批包含方位角的基站发射器数据,每个基站存在多个发射器,幼稚不同的方位角,要求找出与目标基站距离接近并且方位角接近的基站数据。例如筛选出100米范围内方位角相差15度以内的基站发射器。首先我们读取数据:import pandas as pdimport numpy as npexcel = pd.ExcelFile("多层网计算.xlsx")find = excel.原创 2022-04-26 17:22:18 · 24044 阅读 · 23 评论 -
Python调用VBA实现保留原始样式的表格合并
大家好,我是小小明。之前我在《各类Excel表格批量合并问题的实现思路与案例》一文中演示了各种常见的表格合并的需求,但VBA复制粘贴的需求却没有演示,今天我演示一个基于VBA复制粘贴来实现表格合并的案例。有一个Excel表有很多sheet:现在我们需要在保留所有样式的情况下,将所有sheet合并到一个sheet中。我的实现思路如下:创建一个新的sheet,将第一个sheet完整合并进去将后面的sheet除了表头外都复制粘贴到新建的sheet中(排除掉不需要参与合并的sheet)上面的操作人原创 2022-04-24 20:54:23 · 25114 阅读 · 16 评论 -
多个DataFream追加写入同一个sheet代码示例
📢博客主页:https://blog.csdn.net/as604049322📢欢迎点赞 👍 收藏 ⭐留言 📝 欢迎讨论!📢本文由 小小明-代码实体 原创,首发于 CSDN🙉今天我演示一个如何将多个pandas对象直接写入到一个Excel的同一个sheet中,这里我不使用依赖本地Excel软件的xlwings,而是直接使用原生的openpyxl实现。经过清理后的原始数据形式如下:data然后定义一个业务员统计列表:ywys = [ ["a", "b", "c", "d"], .原创 2022-04-24 16:37:06 · 17011 阅读 · 13 评论 -
对比MySQL和Pandas计算用户最大连续登录天数
数据来源于道才的文章:《用SQL计算用户连续登录天数》需求如下:计算每一个用户的最大连续登录天数,由左变换到右边。MySQL8.0窗口函数实现实现思路:对用户ID和登录日期去重对每个用户ID按照日期顺序进行编号将登录日期减去编号对应的天数,使连续的日期转换为同一天将连续日期转换为同一个日期之后就可以按照这个字段分组,后面就简单了。下面我们一步步看:对用户ID和登录日期去重:SELECT DISTINCT role_id,$part_date `date` FROM role_log原创 2022-04-12 22:01:48 · 16100 阅读 · 37 评论 -
生成王者荣耀装备信息Markdown和Excel
王者荣耀的装备信息列表网址:https://pvp.qq.com/web201605/item.shtml经开发者工具检查,装备数据可通过https://pvp.qq.com/web201605/js/item.json接口获取。获取装备数据采集并整理数据:import requestsimport pandas as pdheaders = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/原创 2022-04-08 10:27:46 · 28854 阅读 · 36 评论 -
❤️仅剩20分钟挑战一道Pandas面试题⚠️生死竞速⚠️简直刺激⚡
15分钟之内解决一道外企的Pandas面试题~原创 2021-09-09 00:46:06 · 58837 阅读 · 157 评论 -
如何读取xls的颜色并按照连续一致颜色进行分组?
最近碰上一个需求,需要给物流行业的Excel匹配派送费,具体完整需求较为复杂。其中涉及的一个麻烦点可以拿出来给大家讲讲。这些物流订单表中,通过连续相同的颜色标识属于合票派送,并不像数据库有单独的字段标记。今天我们的实现目标是读取连续相同的颜色,标记同一个分组编号。通过openpyxl读取xlsx格式的颜色比较简单不作演示了,读者也可以考虑先将xls格式先转换为xlsx格式再读取颜色。不过我今天演示的是使用xlrd库直接读取xls格式的Excel表,从而解析出颜色,并分析是否是连续相同的颜色,给一个唯一的原创 2021-08-31 21:18:05 · 51289 阅读 · 126 评论 -
Pandas自定义shift与DataFrame求差集
大家好,我是小小明。近期有位量化大佬问了我这样的一个问题:我们知道Pandas默认的API是不支持这样的操作的,但是在几个月我已经给他写了一个实现方法。虽然非常简单,但既然又问了一遍,说明这个需求还是比较偏门,或者我的实现方法并不能让人记住,基于这样的现状,我将自己编写高级shift封装起来,供金融大佬们使用。最终我们封装的方法如下:import numpy as npimport pandas as pddef adv_shift(s, n, na_value=pd.NA): t原创 2021-07-19 02:03:24 · 31438 阅读 · 89 评论 -
用Numpy对Pandas对象变形到底有多简单?
需求如下:源数据是左边的形式,需要转换成右边的形式。对于这种需求直接使用Pandas是比较麻烦的,如果使用numpy来处理就会非常简单。到底有多简单的呢?咱们一起看看吧。首先我们读取数据:import pandas as pdimport numpy as npdf = pd.read_excel("data.xlsx")得到上面的源码数据形式,下面开始使用numpy进行数据重组,完整代码如下:result = []for row in df.values: result.原创 2021-07-08 14:22:04 · 31386 阅读 · 75 评论 -
Python自制成语接龙小游戏
作者:小小明Python自制成语接龙小游戏在 https://github.com/pwxcoo/chinese-xinhua 项目中可以下载到中华成语的语料库,该项目收录包括 14032 条歇后语,16142 个汉字,264434 个词语,31648 个成语。结构如下:chinese-xinhua/|+- data/ <-- 数据文件夹| || +- idiom.json <-- 成语| || +- word.json <-- 汉字| || +- .原创 2021-06-23 15:41:03 · 38457 阅读 · 54 评论 -
各类Excel表格批量合并问题的实现思路与案例
作者:小小明在日常工作中,网友、朋友或同事总是会遇到各类表格合并的需求,其实这类需求呢只要搞懂核心需求都非常简单,万变不离其宗。基本思路:遍历需要被合并的文件pandas读取数据,并合并数据保存数据对样式无要求,使用pandas对象直接写出对样式有要求,使用openpyxl加载模板要求样式与原始表格完全一致,使用VBA复制粘贴(本文未实现)首先我们看下遍历文件比较简单的方法:遍历文件示例遍历当前目录以xlsx为后缀,不是以~或r结尾的文件:from glob impor.原创 2021-06-26 22:04:25 · 44312 阅读 · 53 评论 -
超简单的方法完整保留原有所有样式拆分Excel表
作者:小小明,高级数据处理专家,解决各类数据处理难题。需求描述有一个Excel表格:我们希望将其按照指定的字段拆分为多个表格。如果直接用pandas,代码很简单却只能保留数据;如果使用openpyxl,也无法直接设置原有的样式,需要逐个设置会非常麻烦。下面我将使用Excel自带的筛选功能,筛选出指定的值,然后复制粘贴到一张新的工作表中。唯一值不多的时候我们人工操作也可以,但数据量大唯一值多的时候,人工操作就耗时很久了。如何使用Python实现这个自动化操作呢?那就是通过pywin32调用VBA.原创 2021-06-21 20:14:06 · 31306 阅读 · 94 评论 -
Pandas基础|生成对应编码的N种方法
作者:小小明需求已知列表[‘50万以上’, ‘10万以下’, ‘10万以下’, ‘50万以上’, ‘10万以下’, ‘10万以下’, ‘30-50万’, ‘10-30万’]按照以下关系生成编码:‘10万以下’ 1‘10-30万’ 2‘30-50万’ 3‘50万以上’ 4对于这个基础问题,使用pandas至少有10种以上的方法去实现它,你能使用多少个API去实现,往往能体现你对Pandas方法的熟练程度,以后任何类似或更复杂的需求都不怕。下面我将演示较为常规的几种.原创 2021-06-15 15:05:08 · 28078 阅读 · 75 评论 -
Pandas读取Excel日期数据的异常处理
作者:小小明异常描述有时我们的Excel有一个调整过自定义格式的日期字段:当我们用pandas读取时却是这样的效果:不管如何指定参数都无效。出现原因没有使用系统内置的日期单元格格式,自定义格式没有对负数格式进行定义,pandas读取时无法识别出是日期格式,而是读取出单元格实际存储的数值。解决方案:修改自定义格式可以修改为系统内置的自定义格式:或者在自定义格式上补充负数的定义:增加;@即可pandas直接解析Excel数值为日期有时这种Excel很多,我们需要通过pa.原创 2021-06-15 10:42:13 · 27425 阅读 · 52 评论 -
三行代码将Excel转为任意格式的Word
作者:小小明需求有一个Excel文件:需要按照题目和答案分别生成两个如下格式的word文档:实现它的核心代码仅三行:tpl = DocxTemplate("xxxx模板.docx")tpl.render({'ps': df[columns].values.tolist()})tpl.save("result/xxxx-yy.docx")下面我们看看具体的实现过程:实现过程首先制作Word模板,编辑民法学必刷470题-题集模板.docx文件内容如下:{%p for a,b,c,.原创 2021-06-08 21:25:54 · 26073 阅读 · 51 评论 -
Pandas数据处理|筛选与兼职打卡时间差异在一分钟内的全职打卡数据
需求与背景某公司旗下有很多便利店,但近期却发现个别门店存在全职帮兼职打卡的情况,为此总部领导决定对所有门店的打卡时间数据进行分析,将每一个门店,全职人员和兼职人员上班卡、下班卡其中之一相差1分钟以内的数据找出来,然后再具体调查。下面我们的任务就是以兼职人员数据为基准,找出相同门店下全职人员上班卡、下班卡其中之一相差1分钟以内的数据:解决需求首先读取数据(已脱敏):import pandas as pdexcel = pd.ExcelFile("全职与兼职相差一分钟.xlsx")df_full原创 2021-06-08 16:25:18 · 25356 阅读 · 81 评论 -
批量模糊匹配的三种方法
作者:小小明文章目录使用编辑距离算法进行模糊匹配使用fuzzywuzzy进行批量模糊匹配fuzz模块process模块整体代码使用Gensim进行批量模糊匹配Gensim简介使用词袋模型直接进行批量相似度匹配使用TF-IDF主题向量变换后进行批量相似度匹配同时获取最大的3个结果完整代码总结有时有些数据存在一定的对应关系,但是缺少连接字段,需要人工找出能够匹配的数据建立关系。这里,我展示几种模糊匹配的思路,应对不同量级的数据。当然,基于排序的模糊匹配(类似于Excel的VLOOKUP函数的模糊匹配模.原创 2021-06-05 12:16:26 · 33235 阅读 · 51 评论 -
使用sklearn处理经纬度的三种距离计算与地图可视化
作者:小小明在一堆基站经纬度数据中,时常涉及三种计算,例如查找某个点最近的N个点,查找某个点指定距离范围内的所有点,将距离小于指定阈值聚类的基站聚类在一起。下面我们看看计算方法。import pandas as pdimport matplotlib.pyplot as plt%matplotlib inlineplt.rcParams['font.sans-serif'] = ['SimHei']plt.rcParams['axes.unicode_minus'] = False首先.原创 2021-05-26 23:03:08 · 26906 阅读 · 96 评论 -
使用Python进行同期群分析(Cohort Analysis)
同期群分析同期群分析概念同期群(Cohort)的字面意思(有共同特点或举止类同的)一群人,比如不同性别,不同年龄。结合到用户分析层面,比如不同月份获取的用户,不同渠道新增用户,具备不同特征的用户(比如微信里每天至少和10个以上朋友微信的用户)。同期群分析(Cohort Analysis),将这些具有不同特征的人群进行对比分析,以发现他们在时间维度下的行为差异。同期群分析的分组逻辑有:按获客月份(按周甚至按天分组)按获客渠道按照用户完成的特定行为,比如用户访问网站的次数或者购买次数来分类。原创 2021-05-08 00:21:14 · 26442 阅读 · 60 评论 -
商品亲和性分析与关联规则挖掘
商品亲和性分析亲和性分析根据样本个体之间的关系,确定它们关系的亲疏。它主要根据两个指标统计商品之间的亲和性:支持度:支持度指的是数据集中规则应验的次数。(商品交易中同时买A商品和B商品的交易数量【支持度也可以为次数/交易总量】)置信度:置信度代表的是规则的准确性如何。(既买A商品又买B商品的数量除以买A商品的数量)首先,我们使用Pandas读取数据集:import pandas as pdfrom itertools import combinationsfeatures = ["bre原创 2021-05-05 18:54:39 · 41862 阅读 · 58 评论 -
结构化数据非等值范围查找问题
本问题数据来源于小z的《解一道反常的Pandas题(附源数据和代码)》需求如下:该问题最核心的解题思路是按照地区代码先将两张表关联起来,然后按照重量是否在指定的区间筛选出符合条件的记录。各类不同的解法实际区别也是,如何进行表关联,如何进行关联后的过滤。大家都习惯性用merge或join进行表关联,而我则习惯直接在循环中定向筛选,我这样做的好处是不会一次性产生全表的笛卡尔积,不会一次性产生N倍的内存浪费。但考虑到实际数据量很小,直接用全表join其实也可以的。顺序查找匹配首先读取数据:impor原创 2021-03-09 09:37:01 · 40014 阅读 · 51 评论 -
SQL思维快速上手使用Pandas
大多数数据工作者都学过SQL,却没有学过Pandas,本文的目标是让熟悉SQL语法的朋友能够快速在pandas上使用同样思维的等价方法。下面测试的过程中,数据库中存在下面三张表,数据库版本为MySQL 8.0.19:(上面使用的数据库可视化工具为SQLyog)本文涉及的库,可以使用pip安装:pip install sqlalchemypip install pandas -Upip install pandasql数据来源:tips.csv:https://raw.github.com原创 2021-03-08 18:30:12 · 40226 阅读 · 47 评论 -
Python VS VBA 读取Excel中的文本框组件
Python读取Excel的文本框基本需求今天看到了一个很奇怪的问题,要读取Excel文件的文本框中的文本,例如这种:本以为openxlpy可以读取,但查看openxlpy官方文档并没有找到相应的API,咨询了几个大佬,他们也没有处理过类似的问题。无赖之下,我就准备发挥我较强的数据解析能力,自己写个方法来读取这些东西。处理代码xlsx文件的本质是xml格式的压缩包,解压文件做xml解析提取出相应的数据即可。本来准备用lxml作xpath解析xml,但实际测试发现,这些xml文件存在大量的命名原创 2021-02-27 19:36:23 · 41500 阅读 · 44 评论 -
Pandas实例|自定义截断分组
作者:小小明来自一位群友的需求:求每个level列等于2之间的level等于1或3的dwell time的和。level列碰到2断开便断开,中间等于1或3的行,对dwell time列聚合求和。要解决这个问题,只需要自定义分组规则即可。首先,我们读取测试数据:import pandas as pddf = pd.read_csv("20200922-02.csv")dfleveldwell timedwell time of level 1+3027.8.原创 2021-02-09 16:35:18 · 40662 阅读 · 53 评论 -
Pandas实例|药品发放汇总与excel表数据回填
作者:小小明需求有一个卫生院需要统计一下每个村扶贫药品发放的数据。数据形式是在一个文件夹下,每个村的数据都存储在一个独立的excel文件中,需要将每个村的数据进行汇总,汇总形式如下:数据处理流程首先读取改文件夹下一个文件的数据进行测试:from pathlib import Pathimport pandas as pdfor name in Path(r"F:\jupyter\test\药品数据汇总\基础表").glob("[!~]*.xls*"): filename = .原创 2021-02-09 12:55:52 · 39953 阅读 · 56 评论 -
快速计算每个学生成绩最相似的10个学生(万级别数据量)
作者:小小明10年编码经验,熟悉Java、Python和Scala,非常擅长解决各类复杂数据处理的逻辑,各类结构化与非结构化数据互转,字符串解析匹配等等。至今已经帮助至少百名数据从业者解决工作中的实际问题,如果你在数据处理上遇到什么困难,欢迎评论区与我交流。求每个学生分数最接近的10个学生需求背景某MOOC课程网站的老师需要统计每个学生成绩最相近的10个学生,距离计算公式是每门课程的成绩之差的绝对值求和。例如,学生1的成绩为(83,84,86,99,87),学生2的成绩为(83,84,86,.原创 2021-02-01 19:29:52 · 40275 阅读 · 41 评论 -
Pandas基础|列方向分组变形
作者:小小明刚才碰到一个非常简单的需求:但是我发现大部分人再做这个问题的时候,代码写的异常复杂。我建议你也不要直接看我的代码,而是先思考一下,你会怎么解决这个问题。首先读取数据:import pandas as pddf = pd.read_excel("练习.xlsx", index_col=0)df结果:为了后续处理方便,我将不需要参与分组的第一列事先设置为索引。groupby分组相信大部分读者都使用过,但一直都是按行分组,不过groupby不仅可以按行分组,还可以按列进行.原创 2021-01-26 22:54:24 · 38131 阅读 · 15 评论 -
Pandas直接读取sql脚本
之前有群友反应同事给了他一个几百MB的sql脚本,导入数据库再从数据库读取数据有点慢,想了解下有没有可以直接读取sql脚本到pandas的方法。原创 2021-01-19 22:33:43 · 35993 阅读 · 14 评论 -
Pandas直接读取arff格式的文件
作者:小小明之前有位群友遇到了arff格式的数据,却不知道怎么读取:然后我让这位群友把文件发我,给我分析一下,我用文件编辑器打开后,发现格式如下:只是一个文本文本而已,解析文本文件我实在太擅长了。可以看到:编码是utf-8列名都在以@attribute开头的行数据在@data的后面的部分理解了这三点,我马上就能用pandas直接读取它,下面看看代码:import pandas as pdwith open("adult_census_19210979.arff", encod.原创 2021-01-19 01:19:25 · 45938 阅读 · 13 评论 -
Pandas实现列表分列与字典分列的三个实例
大家好,我是小小明,本人非常擅长解决各类复杂数据处理的逻辑,包括各类结构化与非结构化数据互转,字符串解析匹配等等。至今已经帮助很多数据从业者解决工作中的实际问题,如果你在数据处理上遇到什么困难,欢迎与我交流。上次我分享了一道基础题N种解题思路,其中一种读取数据的过程涉及到列表分列,详见:https://blog.csdn.net/as604049322/article/details/112760894这次我将分享三个实际案例,让大家看看列表分列的一些实际应用。首先,我们先导包并设置Pandas.原创 2021-01-18 17:27:01 · 34980 阅读 · 4 评论 -
一道基础题,多种解题思路,引出Pandas多个知识点
作者:小小明源于林哥发出的一道基础题:基础解法explode函数这道题最简单的解法,应该大部分会pandas的朋友都会,林哥也马上发出了自己的答案:import pandas as pdmydict = {'A': [1], 'B': [2, 3], 'C': [4, 5, 6]}pd.DataFrame(mydict.items()).explode(1)结果:详解mydict.items()是python基础字典的内容,它返回了这个字典键值对组成的元组列表。而将这个元组列.原创 2021-01-18 01:22:48 · 33490 阅读 · 2 评论 -
Hive和Pandas实现wordcount
本文Pandas版本必须为0.25以上才能使用explode,可以通过以下命令看Pandas版本:pip show pandas可以通过以下命令升级Pandas到最新版:pip ins...原创 2020-04-25 08:30:31 · 32289 阅读 · 0 评论 -
100毫秒过滤一百万字文本的停用词
作者简介:小小明,Pandas数据处理专家,致力于帮助无数数据从业者解决数据处理难题。之前有位群友分享了使用Pandas过滤停用词的技巧:不过其实这并不是效率最高的一种方法,今天我将演示一种更高效过滤停用词的方法。文章目录过滤停用词前的准备工作数据读取jieba分词器设置角色为特定词汇开始分词加载停用词过滤停用词的n种方法性能对比直接过滤使用Pandas进行停用词过滤使用set集合过滤速度最快的过滤方法总结过滤停用词前的准备工作这次我打算用一部197W字的小说作为数据示例。数据读取首先,.原创 2021-01-11 19:04:00 · 43201 阅读 · 0 评论