![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
pandas
永远在减肥永远110的的小潘
这个作者很懒,什么都没留下…
展开
-
Python pandas在源数据中标记重复记录
现在有一份订单源数据,是从各位业务人员处搜集整合而来。由于有的业务人员给的订单数据会出现重合的部分,需要将该部分的重复记录在源数据中标记出来,由业务人员确认后,删除该部分的重复记录,以得到最终准确的订单源数据用于后续的订单统计。源数据样例如下,其中订单id、用户id、国条码、购买数量四个组合字段可作为一行记录的唯一标识。第一步:读取数据import pandas as pdfile_path=r"E:\临时\20220214\临时.xlsx"data=pd.read_excel(file_pat原创 2022-02-15 15:55:04 · 4026 阅读 · 0 评论 -
Python pandas一行代码实现分组非重复计数
上表data是销售记录表,现需要统计每个省份的动销的门店数量。import pandas as pddata.groupby([“省份”]).agg()原创 2022-01-08 21:08:33 · 1792 阅读 · 0 评论 -
Python正则表达式之提取指定字符串内容后的数值
需求:提取散装商品斤重统计表格中describe列中高值、高高值、中值的斤重describe列样例如下,高值、高高值、中值分别对应不同的价格分类,我们需要提取不同价格的斤重,以计算总的销售额。如果只是几行这样的记录,直接人工提取就很方便了。样例中可以看出高值3斤,高高值2斤,中值1斤。但是如果有很多这样的行记录,人工取值在这里显然是行不通了,这里考虑使用正则表达式模糊匹配后来提取数值。这里需要提醒的一项是,每行记录不一定三种值的斤重都存在,有可能仅存1种或者2种值的斤重,但不同价格分类只会对应一个斤重。原创 2022-01-08 20:42:55 · 9213 阅读 · 0 评论 -
Python pandas groupby函数给用户贴商品标签
在以上订单表中,需要给每位用户贴上购买的商品名称标签和总的实付款金额标签。这里需要注意的是如果某位用户多次购买同一商品,标签中只需要保留一次该商品名称。下面通过pandas 的groupby函数实现该效果。#订单数据读取import pandas as pdimport numpy as npfile_path=r"E:\临时\20211118\订单数据.xlsx"data=pd.read_excel(file_path)#订单数据前5行打印data.head()#通过grou.原创 2021-11-18 14:08:27 · 1020 阅读 · 0 评论 -
Python pandas使用pivot_table时由于index存在nan值,导致该行记录未被记录
Python pandas 的pivot_table可以实现与Excel透视表类似的效果,但是如果index参数列中存在Nan值,就会导致改行记录不被计入。result=data.pivot_table(index=["商家名称","月份","活动类型","满减门槛","满减金额"],values=["补贴金额","原价"],aggfunc={"补贴金额":np.sum,"原价":np.sum}).reset_index()#因满减门槛及满减金额存在Nan值,导致pivot_table的结果并不准确目原创 2021-11-18 11:22:07 · 2255 阅读 · 0 评论 -
Python pandas分组后取每组排名前三的记录
源数据如上所示,需要输出每个城市销售额排名靠前的三家零售商。具体做法如下:S1:读取文件#读取源数据文件import pandas as pdfile_path=r"E:\临时\20211103\temp.xlsx"data=pd.read_excel(file_path)S2:降序排序#以城市和销售额为基准进行降序排序data_sort=data.sort_values(by=["城市","销售额"],ascending=[False,False])S3:分组后取每组排名前三的.原创 2021-11-03 15:44:14 · 7529 阅读 · 0 评论 -
Python pandas数据预处理之行数据复制
现有一张进货表格,数据如下,需要将商品数量与商品名称拆分,最终实现有多少个商品显示多少行数据。即当商品为“鸡蛋*5”时,需要有5条鸡蛋数据。import pandas as pdimport numpy as npfile_path=r"E:\临时\数据预处理.xlsx"data=pd.read_excel(file_path)#首先将不同商品做拆分,间隔符为","data10=data.join(data["商品"].str.split(",",expand=True))拆分后的数据如原创 2021-10-19 22:51:30 · 4524 阅读 · 0 评论 -
Python pandas多层次索引降级为单层索引
在Pandas中使用pivot_table做聚合运算后,计算出来的结果具有多层次索引。import pandas as pdsku_store=data10.pivot_table(index=["item_num","vender_name"],columns="period",values=["store_name"],aggfunc=["count"])sku_store=sku_store.reset_index()如下所示,这是一个三层结构的索引接下来我们给这个三层索引降级为单层原创 2021-08-20 16:38:50 · 5422 阅读 · 0 评论 -
Python set()函数求交集,并集,差集
set() 函数创建一个无序不重复元素集,可进行关系测试,删除重复数据,还可以计算交集、差集、并集等。import pandas as pdimport numpy as npimport random li_1=[1,2,3]li_2=[4,5,6,7,1,2,3,5,5,7,7]li_3=[1,2,3]#交集set(li_1)&set(li_2){1, 2, 3}#并集set(li_1)|set(li_3){1, 2, 3}#差集set(li_2)-set.原创 2021-08-11 15:41:35 · 9955 阅读 · 0 评论 -
Python 列表(list)去重的几种方式
法一:使用set()函数进行去重set() 函数创建一个无序不重复元素集,可进行关系测试,删除重复数据,还可以计算交集、差集、并集等。import pandas as pdimport numpy as npimport random temp=list()for i in range(0,1000): temp.append(random.randint(0,100))len(temp)#去重前长度1000len(set(temp))#去重后长度101法二:fo原创 2021-08-11 15:12:14 · 6004 阅读 · 0 评论 -
Python查看订单中不同商品组合偏好度
在用户线上下单购买商品时,一个订单中往往有多种不同的商品,在分析了大量订单后,发现某些商品成对出现的频次较高,说明用户对该种商品组合具有一定的偏好度。实例演示:1.目标是从以下订单记录中探究订单的商品两两组合偏好度。2.首先从订单中分离出全部的商品,形成商品清单。import pandas as pdimport numpy as npimport datetimeimport osfile_path=r"E:\演示.xlsx"data=pd.read_excel(file_path)原创 2021-08-11 12:48:41 · 545 阅读 · 0 评论 -
Python pandas清除字符串中间的空格
用python读取包含手机号的Excel表格文件时,由于有的手机号录入时不规范,数值中间有的存在空格,有的不存在空格,如下所示。为保证后续匹配工作顺利进行,对手机号进行格式转换,统一转换为浮点型。df["手机号码"].astype(np.float)不过执行该语句时报错,报错信息如下:ValueError: could not convert string to float: ‘130 1111 1112’由于手机号中间存在空格,系统将其默认为字符型,无法强制转换为浮点型。只有将中间的空格去除原创 2021-07-13 16:43:39 · 5613 阅读 · 1 评论 -
Python pandas使用ExcelWriter()类将数据导出至多个excel页签
在pandas中我们通常使用to_excel()方法将dataframe导出至Excel文件上,如果需要将多个不同的dataframe导出到同一个Excel文件的不同Sheet页,可以使用pandas.ExcelWriter()类来实现。语法:ExcelWriter(path, engine=None, date_format=None, datetime_format=None,mode=‘w’)path:xls或xlsx文件的路径;engine:可选参数,默认值为"xlwt",对于xls文原创 2021-06-30 17:41:55 · 5887 阅读 · 0 评论 -
Python pandas 随机生成20个整数且两两相加不相等
问题背景:现有一份EXCEL表格如下,左侧表格中的活动名称需以右侧表格为基础表格进行匹配。匹配条件为:左侧日期位于右侧开始时间与结束时间范围内,且左侧商品名称与右侧商品名称一致。由于出现了时间范围判断,这是我想到了使用EXCEL的lookup()函数来进行多条件匹配。这里的lookup()匹配的是最后一次满足条件的值,但是实际的需求是多值匹配,即如果右侧映射表中有多项满足匹配条件,左侧匹配结果应有多项,且lookup()函数运行较慢,如果数据量大的话,非常耗时间。目前的解决方法是:第一步:计算出原创 2021-06-25 15:47:33 · 1020 阅读 · 1 评论 -
Python pandas读取excel单元格数据,显示不全问题
用pandas的pd.read_excel()方法在读取一个存储图片URL路径的EXCEL表格数据时,由于路径较长,出现了单元格内容显示不全的问题。尤其是在使用pd.to_excel()将处理好的数据导出时,EXCEL单元格中存储的仅为未显示完全的URL路径。使用参数display.max_colwidth 每一列最大的宽度(避免显示不全的问题)pd.set_option("display.max_colwidth",1000)...原创 2021-06-22 23:56:55 · 6449 阅读 · 0 评论 -
Python pandas to_csv()乱码问题
使用to_csv()方法将数据导出后,发现表格中的中文字符乱码。设置编码方式为:utf_8,表格中的中文字符乱码问题未解决。网上找了下解决方法,应将编码方式设置为utf_8_sig,问题得到解决。具体原因分析可参考这篇文章:https://blog.csdn.net/chenpe32cp/article/details/82150074...原创 2021-05-27 16:03:07 · 1650 阅读 · 0 评论 -
Python pandas快速获取数据的行数和列数
import pandas as pd df = pd.DataFrame({'Country':['China','China', 'India', 'India', 'America', 'Japan', 'China', 'India'], 'Income':[10000, 10000, 5000, 5002, 40000, 50000, 8000, 5000], 'Number':[5000, 4321, 1234,原创 2021-05-27 15:24:08 · 29992 阅读 · 0 评论 -
Python pandas merge函数实现类似excel的vlookup效果
目录Excel Vlookup匹配Pandas Merge匹配Excel Vlookup匹配示例:左表通过”姓名“字段匹配右表中的“子女姓名”注:此处vlookup()第一次匹配成功后,默认结束该匹配,自动进入下一行。Pandas Merge匹配示例:data1=pd.DataFrame({"姓名":["张三","李四","王五","潘六","柳七"],"落户积分":[5,6,7,8,9]})data2=pd.DataFrame([["张三","张小小"],["张三","张大大"]],col原创 2021-04-26 18:34:21 · 2292 阅读 · 0 评论 -
Python pandas遍历读取文件夹、子文件下所有的excel文件
目录遍历读取代码os.walk()文件目录遍历器遍历读取代码前几天收到一个excel拼接预处理的工作,一开始想着拼接能有多难,结果拿到源文件是真崩溃。一个大文件夹杂七杂八揣着若干个小文件夹,excel文件散落各处,而且各个excel文件sheet页的个数和名称也乱七八糟,没有任何规律可循。各个excel表格上充斥着各种人工痕迹,东一榔头西一棒子就是一个先前业务人员插的透视表。总之,是一个非常脏的数据集。那就暴力遍历法,挨个读吧,先把数据读出来,后续清洗的问题也注定是灾难。所以接下来的这段代码实现的效原创 2021-03-23 18:08:02 · 21499 阅读 · 0 评论 -
Python pandas 根据指定条件筛选数据
1、构造dataframeimport pandas as pdimport numpy as npdf=pd.DataFrame(np.arange(16).reshape(4,4),columns=["sh","bj","sz","gz"],index=["one","two","three","four"])2、筛选出"sh"列大于5的数据法一:直接筛选,适用于一些比较简单直接的筛选,这种方式方便快捷。df[df["sh"]>5]法二:函数筛选,适用于比较复杂的条件筛选,函原创 2021-03-16 14:30:42 · 63090 阅读 · 2 评论 -
Python pandas 重命名索引和列名称
目录1.重命名列名称2.重命名索引3.重置索引df=pd.DataFrame(np.arange(16).reshape(4,4),columns=["one","two","three","four"],index=['a','b','c','d'])1.重命名列名称df.rename(columns={"one":"nj","two":"bj"},inplace=True)2.重命名索引df.rename(index={"a":"aaa","d":"ddd"},inplace=True原创 2021-03-16 18:33:34 · 19562 阅读 · 0 评论 -
Python pandas 删除指定行/列数据
目录1.滤除缺失数据dropna()1)滤除含有NaN值的所有行2)滤除含有NaN值的所有列3)滤除元素都是NaN值的行4)滤除元素都是NaN值的列5)滤除指定列中含有缺失的行2.删除重复值 drop_duplicates()3.根据指定条件删除行列drop()1.滤除缺失数据dropna()import pandas as pdimport numpy as npdf=pd.DataFrame({"record":[np.nan,"亚健康|潘光|45岁","疾病|张思",np.nan],"date原创 2021-03-16 18:17:05 · 54477 阅读 · 4 评论 -
Python pandas 实现Excel分列效果
在Excel中,通过分列功能,可以实现单元格数据按照指定分隔符分列。pandas 中可以通过str.split()函数实现类似的分列效果。import pandas as pdimport numpy as npdf=pd.DataFrame(["健康|王三","亚健康|潘光|45岁","疾病|张思","重疾|刘武"],index=["one","two","three","four"],columns=["record"])#以"|"为分割符分列,返回Seriesdf["record"].s原创 2021-03-16 17:18:54 · 5896 阅读 · 0 评论 -
Python pandas 计算行/列数据之和
import pandas as pdimport numpy as npdf=pd.DataFrame(np.arange(16).reshape(4,4),columns=["sh","bj","sz","gz"],index=["one","two","three","four"])目录1. 对每一列求和2.对每一行求和3.DataFrame中axis=1/axis=0的区别1. 对每一列求和df.loc["sum"]=df.apply(lambda x:sum(x),axis=0)原创 2021-03-16 17:06:17 · 19022 阅读 · 1 评论 -
Python pandas 替换指定数据
目录一、构造dataframe二、替换指定数据(fillna、isin、replace)三、替换函数replace()详解一、构造dataframeimport pandas as pdimport numpy as npdf=pd.DataFrame(np.arange(16).reshape(4,4),columns=["sh","bj","sz","gz"],index=["one","two","three","four"])df.iloc[0,1]=np.nan二、替换指定数据(f原创 2021-03-16 15:58:18 · 45051 阅读 · 1 评论