python 完全匹配,python数据分析数据匹配
平时我们经常会制作周报、月报这种超过操作相同的报表,我们可以使用大蟒的熊猫库对其进行自动化。这篇文章就演示了利用大蟒实现使用超过中的纵向查找函数函数,并将其脚本封装成可执行程序的扩展名可执行程序。
写这段脚本的原因是因为我们部门的一个做渠道的同事不太会用纵向查找函数函数,所以我琢磨着将他要用到纵向查找函数的工作需求写成脚本供他使用。
需求:要将B表中的"收入"字段的数据匹配到A表中去:
表答:
表A
表B
表B
结果:
结果
脚本内容如下:
进口熊猫作为螺纹中径
表名=输入(请输入A表文件名:)
表_路径=表_名称。xlsx
工作表名称=输入(请输入A表中的表名称:)
表_ a=PD。read _ excel(表格路径,工作表名称=工作表名称,转换器={ 订单号:str}).dropna(axis=1,how=all )
表_ b _名称=输入(请输入B表文件名:)
表_ b _路径=表_ b _名称。xlsx
工作表_ b _名称=输入(请输入B表中的表名称:)
表b=PD。read _ excel(table _ b _ path,sheet_name=sheet_b_name,converters={ 交易ID:str})
table_b_2=table_b.groupby(交易ID’).收入100 . 000苏姆(1000 . 000)。重置索引()
table _ c=table _ a . merge(right=table _ b _ 2,how=left ,left_on=订单号,right_on=交易ID’)
table_c.to_excel(c.xlsx ,index=False)
考虑到同事不会使用python,故将这段脚本封装成可执行可执行程序的扩展名文件,关于怎样将计算机编程语言代码封装打包成可执行的可执行程序的扩展名文件以及可能碰见的报错解决详见我之前的文章:将大蟒脚本打包封装成可执行程序的扩展名程序
过程演示。可交换的图像格式
但是上面的可执行程序的扩展名使用起来并不够直观、方便,故又利用图形界面制作了一个图像使用者界面界面:
图像使用者界面界面。可交换的图像格式
制作图像使用者界面界面的脚本如下:
#!/usr/鲤鱼猫咪/python
# -*-编码:utf-8 -*-
来自tkinter导入*
进口熊猫作为螺纹中径
导入操作系统
进口是
window=Tk()
window.title(数据匹配)
window.geometry(300x400 )
var1=StringVar()
var2=StringVar()
var3=StringVar()
var4=StringVar()
var5=StringVar()
var6=StringVar()
var7=StringVar()
L1=标签(文本=请输入表A的名称:)
L1.pack()
e1=Entry(window,show=None,textvariable=var1)
e1.pack()
L2=标签(文本=请输入表A中表名称:)
L2.pack()
e2=Entry(window,show=None,textvariable=var2)
e2.pack()
L3=标签(文本=请输入表A中的身份列:)
L3.pack()
e3=条目(窗口,显示=无,文本变量=var3)
e3.pack()
L4=标签(text=请输入表B的名称:)
L4.pack()
e4=Entry(window,show=None,textvariable=var4)
e4.pack()
L5=标签(text=请输入表B中表名称:)
L5.pack()
e5=Entry(window,show=None,textvariable=var5)
e5.pack()
L6=标签(文本=请输入表B中的身份列:)
L6.pack()
e6=条目(窗口,显示=无,文本变量=var6)
e6.pack()
L7=标签(text=请输入要匹配的表B中的列名:)
L7.pack()
e7=Entry(window,show=None,textvariable=var7)
e7.pack()
极好的数据匹配():
path= C:\ \ Users \ \ PS 2019 02 25 \ \ Desktop
os.chdir(路径)
table_a_path=e1.get()
a_type=re.search(r([a-z]*).([a-z]*),table_a_path).第二组
sheet_a_name=e2.get()
A_id=e3.get()
if a_type==xlsx :
表_ A=PD。read _ excel(table _ A _ path,sheet_name=sheet_a_name,converters={A_id:str}).dropna(axis=1,how=all )
否则:
表_ A=PD。read _ CSV(table _ A _ path,sheet_name=sheet_a_name,converters={A_id: str}).dropna(axis=1,how=all )
table_b_path=e4.get()
b_type=re.search(r([a-z]*).([a-z]*),table_b_path).第二组
sheet_b_name=e5.get()
B_id=e6.get()
target_col=e7.get()
if b_type==xlsx :
表B=PD。read _ excel(table _ B _ path,sheet_name=sheet_b_name,converters={B_id: str}).dropna(axis=1,how=all )
否则:
表B=PD。read _ CSV(table _ B _ path,sheet_name=sheet_b_name,converters={B_id: str}).dropna(axis=1,how=all )
table _ B _ 2=table _ B . group by(B _ id)[target _ col].sum().重置索引()
table _ c=table _ A . merge(right=table _ B _ 2,how=left ,left_on=A_id,right_on=B_id)
table_c.to_excel(c.xlsx ,index=False)
B=按钮(窗口,文本=匹配,宽度=15,高度=2,命令=数据_匹配)
b .包()
window.mainloop()
学tkinter看活力冰棍老板的视频:做一个简单的窗户。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。