![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
python
永远在减肥永远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 · 4044 阅读 · 0 评论 -
Python Pandas连接Mysql数据库并向表中新增行记录及查询记录
from sqlalchemy import create_engineimport pymysqlengine=create_engine(r"mysql+pymysql://root:123456@110.110.110.36:3301/database_name")#root:123456@110.110.110.36:3301/database_name 用户名:密码@ip地址:端口号/表名称data_sale.to_sql('table_name_1',engine,if_exists=原创 2022-01-26 16:35:43 · 2066 阅读 · 0 评论 -
Python pandas一行代码实现分组非重复计数
上表data是销售记录表,现需要统计每个省份的动销的门店数量。import pandas as pddata.groupby([“省份”]).agg()原创 2022-01-08 21:08:33 · 1815 阅读 · 0 评论 -
Python正则表达式之提取指定字符串内容后的数值
需求:提取散装商品斤重统计表格中describe列中高值、高高值、中值的斤重describe列样例如下,高值、高高值、中值分别对应不同的价格分类,我们需要提取不同价格的斤重,以计算总的销售额。如果只是几行这样的记录,直接人工提取就很方便了。样例中可以看出高值3斤,高高值2斤,中值1斤。但是如果有很多这样的行记录,人工取值在这里显然是行不通了,这里考虑使用正则表达式模糊匹配后来提取数值。这里需要提醒的一项是,每行记录不一定三种值的斤重都存在,有可能仅存1种或者2种值的斤重,但不同价格分类只会对应一个斤重。原创 2022-01-08 20:42:55 · 9250 阅读 · 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 · 1032 阅读 · 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 · 2296 阅读 · 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 · 7610 阅读 · 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 · 4583 阅读 · 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 · 5492 阅读 · 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 · 10055 阅读 · 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 · 6023 阅读 · 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 · 570 阅读 · 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 · 5645 阅读 · 1 评论 -
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 · 1653 阅读 · 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 · 30173 阅读 · 0 评论 -
Python pandas遍历读取文件夹、子文件下所有的excel文件
目录遍历读取代码os.walk()文件目录遍历器遍历读取代码前几天收到一个excel拼接预处理的工作,一开始想着拼接能有多难,结果拿到源文件是真崩溃。一个大文件夹杂七杂八揣着若干个小文件夹,excel文件散落各处,而且各个excel文件sheet页的个数和名称也乱七八糟,没有任何规律可循。各个excel表格上充斥着各种人工痕迹,东一榔头西一棒子就是一个先前业务人员插的透视表。总之,是一个非常脏的数据集。那就暴力遍历法,挨个读吧,先把数据读出来,后续清洗的问题也注定是灾难。所以接下来的这段代码实现的效原创 2021-03-23 18:08:02 · 21815 阅读 · 0 评论 -
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 · 19887 阅读 · 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 · 54767 阅读 · 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 · 5999 阅读 · 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 · 19098 阅读 · 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 · 45750 阅读 · 1 评论 -
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 · 64539 阅读 · 2 评论 -
Python正则表达式之提取字符串中中文和数值
Python正则表达式之提取字符串中指定值提取中文提取数值提取整型数值提取浮点型数值提取整型和浮点型数值提取中文import repattern=re.compile("[\u4e00-\u9fa5]+")pattern.findall("士力架花生夹心巧克力全家桶460g/+40克(20克*2)500g")输出:[‘士力架花生夹心巧克力全家桶’, ‘克’, ‘克’]提取数值提取整型数值import repattern=re.compile("[0-9]+")pattern.find原创 2021-03-10 16:30:42 · 3640 阅读 · 2 评论 -
Python sklearn针对不同人群的差异化保险费用定价方案
一、背景传统健康险产品需要依靠“生命表”和“重大疾病发生率表”来进行产品设计。不同保险公司在设计产品时都需要基于以上两表,这就导致保险产品的同质化日益加重。同时由于传统的健康险产品基于总体发生概率来确定风险杠杆,吸烟体人群和非吸烟体人群的个体化差异被忽视。 使用机器学习技术,可以训练出针对个体的风险判断模型,通过该模型来估算不同个体的风险杠杆,以实现吸烟体和非吸烟体人群保险费率差异化定价。二、样本数据分析1、训练集数据共计1338条美国地区被保险人数据,每条数据包括年龄、性别、BMI指数、子女数、是原创 2020-07-24 23:44:43 · 2210 阅读 · 4 评论 -
Python pandas数据制作箱线图实例(matplotlib,seaborn)
箱线图(Box-plot)是用来显示一组或多组数据分布特征的统计图。关于箱线图具体信息,可以参考箱线图详解我们需要对以下数据中的charges值做出箱线图,并且按照不同性别分组展现。源数据下载1、使用matplotlib的boxplot()函数制作箱线图matplotlib中制作箱线图的函数为boxplot()。import matplotlib.pyplot as pltplt.rcParams['font.sans-serif']=['SimHei']#解决中文乱码问题plt.rc.原创 2020-07-22 02:41:43 · 24856 阅读 · 1 评论 -
Python类中属性、方法与self的关系
一、属性1、如果属性直接定义在类中而不是在类的方法中class Test(): a=1 b=3那么该属性既是该类的属性,也是该类的实例的属性。Test.a输出:1test=Test()test.a输出:12、如果属性定义在类的方法中(1)参数中不加selfclass Test(): def fun(): b=4那么该属性既不是该类的属性也不是该类的实例的属性,它只是该方法(此处指fun()方法)的局部变量。test=Test()te原创 2020-07-19 17:27:13 · 787 阅读 · 0 评论 -
Python中类的三种继承方式(隐式、显式、复合)
1、隐式继承(implicit inheritance)class Parent: def implicit(self): print('Parent implicit()')class Child(Parent): pass#创建空的代码块dad=Parent()son=Child()dad.implicit()son.implicit()输出:Parent implicit()Parent implicit()2、显示覆写(explicit over原创 2020-07-02 00:27:55 · 2057 阅读 · 0 评论 -
Python随机数生成模块random的常见方法介绍
首先需要导入random模块import random1、生成随机整型数random.randint()random.randint(0,9)#返回0-9之间的随机整数,包头包尾[0,9]输出:42、生成[0.0,1.0)之间的随机浮点数random.random()random.random()输出:0.5734316641569493、生成指定区间的随机浮点数random.uniform()random.uniform(1,9)#返回1-9之间的随机浮点数,包头包尾[1.0,9.原创 2020-07-01 22:54:00 · 1382 阅读 · 0 评论 -
Python中text文件操作
1、打开一个文件open()handle=open(filename,mode)mode为文件打开的模式,‘r’表示只读,’w’表示可写,‘rb’表示二进制只读格式,’wb’表示二进制可写格式,默认是只读模式。open()函数返回一个file handle(文件句柄),可以将之视为一系列的行。handle=open('temp.txt')#返回文件句柄for i in handle: print(i)输出:this is first linethis is second line原创 2020-07-01 18:11:24 · 3810 阅读 · 1 评论 -
Python中实现分行打印的两种方式
1、使用转义字符\nprint('jan\nfeb\nmar')janfebmar2、三重引号print("""i like watching tv. do you like it too?""")i like watching tv.do you like it too?原创 2020-07-01 14:42:19 · 3455 阅读 · 0 评论 -
Python中%r和%s的相同点和不同点
1、在处理布尔型或者数字型时,二者是没有区别的(1)数字型'I am %r years old'%22#%r ‘I am 22 years old’'I am %s years old'%22#%s‘I am 22 years old’'This building is %r m tall'%22.35#%r‘This building is 22.35 m tall’'This building is %s m tall'%22.35#%s‘This building is 22原创 2020-07-01 14:30:26 · 243 阅读 · 0 评论 -
Python中取整函数汇总
1、int()这是一个类型转换函数,很多时候也可以满足取整要求。我们可以将该函数理解为向零取整,即向接近零的方向取整。int(5.6)输出:5int(-5.6)#向零取整,-5相比于-6更接近0输出:-52、向上取整(1)、math模块中的ceil()函数,取整结果为大一位的整数import math#导入math模块math.ceil(5.6)输出:6math.ceil(-5.6)输出:-5(2)、numpy模块中的ceil()函数,取整结果为大一位的浮点形式的整数i原创 2020-07-01 13:57:40 · 26674 阅读 · 0 评论 -
Python中sorted()排序函数
语法:sorted(iterable, key=None, reverse=False)iterable:可迭代的对象key:用来排序的元素,可以通过函数指定reverse:排序规则,reverse = True 降序 , reverse = False 升序(默认1、sorted()用于列表lista=[1,4,2,6]sorted(a)输出:[1, 2, 4, 6]sort ()是应用在 list 上的方法,sorted ()可以对所有可迭代的对象进行排序操作。sorted()函数原创 2020-06-21 15:16:16 · 6919 阅读 · 0 评论 -
用Python实现字符串逆序
思路一:从字符串末端开始取值,将取到的值依次放入到列表中。s=input()s_list_new=[]j=-1for i in range(len(s)): s_list_new.append(s_list[j]) j-=1print(''.join(s_list_new))#通过join()函数将列表转换为字符串思路二:字符串切片Python提供有步长的字符串切片方式,例如:s='hello,world's[:7:2]#第二个冒号后的参数为步长输出:‘hlow’当原创 2020-06-20 20:47:42 · 748 阅读 · 0 评论 -
用Python求某数的立方根-牛顿迭代法
首先了解什么是牛顿迭代法。太多公式符号了,这个编辑器打出来能累死人。直接上手写图。原创 2020-06-20 19:29:13 · 9867 阅读 · 3 评论 -
用Python求两数的最小公倍数-辗转相除法
问题:输入正整数A,B,求得A,B的最小公倍数思路一:暴力迭代循环,直到循环至某数能被A,B整除。方法简单,但是效率太低。a=int(input())b=int(input())m=max(a,b)n=min(a,b)if m%n==0: min_mul=aelse: min_mul=a+b while min_mul%m!=0 or min_mul%n!=0: min_mul+=1print(min_mul)思路二:最小公倍数=两数之积/最大公约原创 2020-06-20 16:30:17 · 3901 阅读 · 0 评论 -
Python正则表达式之初识正则表达式
一、正则表达式正则表达式(Regular Expressions):一种字符串匹配模式,达到一种类似于模糊查询的效果。Python中通过调用re库import re引入正则模块后可进行相关匹配操作。二、re库常用函数1、re.search()与Python自带的字符串函数find()类似,find()在字符串中寻找指定的字符串的位置,并返回该字符串首次出现的首字母的索引。如果字符串未找到,返回-1。s='hello's.find('o')输出:4re.search()中如果匹配字符串未找原创 2020-06-18 20:55:00 · 266 阅读 · 0 评论 -
Python中删除字符串中指定的值
1、删除指定位置的值:pop()函数#删除字符串中的最后一个字符s='helloworld2's_list=list(s)#将字符串转换为列表s_list.pop(-1)#pop掉列表最后一个值,返回被pop掉的值输出:‘2’''.join(s_list)#将pop之后的列表通过join()函数转换为字符串输出:‘helloworld’2、删除指定值法一:replace()函数#删除掉第一次出现的ws='hello,wworld's.replace('w','',1)#第一个原创 2020-06-17 17:34:56 · 13599 阅读 · 2 评论 -
Python中join()函数
join()函数是将列表、元组、字典、字符串以特定的分隔符连接成新的字符串的函数。‘sep’.join(seq)#sep为分隔符,seq为需要连接的序列。1、序列为列表a=['hello','world']''.join(a)#分隔符为空输出:‘helloworld’a=['hello','world']','.join(a)#分隔符为逗号输出:‘hello,world’2、序列为元组a=('hello','world')':'.join(a)#分隔符为:输出:‘hello:w原创 2020-06-17 16:45:37 · 649 阅读 · 0 评论 -
Python中isinstance()函数和type()函数
1、type()函数用来判断一个对象是什么类型。type([1,2,3])输出:list2、isinstance()函数用来判断一个对象是否是一个已知类型。isinstance([1,2,3],list)输出:Trueisinstance([1,2,3],(list,str,dict))输出:True3、type()与isinstance()在判定类型时的区别type()不考虑继承关系isinstance()考虑继承关系,认为子类也是一种父类类型class A: pass原创 2020-06-17 14:13:41 · 295 阅读 · 0 评论