python学习3

大家好,今天又来更新python学习篇了。本次的内容比较简单,时描述性统计代码,直接给出所有代码,如下:

import pandas as pd
from scipy.stats import fisher_exact
from fuzzywuzzy import fuzz
from fuzzywuzzy import process
import re
base_info = pd.read_excel("./data/附件1.xlsx", index_col=0)
sale_info = pd.read_excel("./data/附件2.xlsx")
sale_info['销售日期']=pd.to_datetime(sale_info['销售日期'])data=sale_info.join(base_info,on="单品编码")
data["销售额(元)"]=data["销量(千克)"]*data["销售单价(元/千克)"]print("--------------------------------------------")
print("统计打折销售情况")
print(data["是否打折销售"].groupby([data["是否打折销售"],data["分类名称"]]).count())print("--------------------------------------------")
print("统计退货情况")
print(data["销售类型"].groupby([data["销售类型"],data["分类名称"]]).count())print("--------------------------------------------")
print("执行Fisher 精确性检验")
print(data["销售类型"].groupby([data["销售类型"],data["是否打折销售"]]).count())
table=[[457,4],[830680,47362]]
result=fisher_exact(table,alternative='two-sided')
print("Fisher 精确性检验结果: ")
print("p-value:",result.pvalue)
print("statistic:",result.statistic)print("--------------------------------------------")
print("执行Fisher 精确性检验")
names=base_info["单品名称"].tolist()
print(names)print("--------------------------------------------")
print("执行字符串匹配")
strings=names
threshold=80
similar_strings={}
for string in strings:best_match=process.extractOne(string,[s for s in strings if s not in [string]],scorer=fuzz .ratio)if best_match[1]>=threshold and best_match[0]!=string and best_match[0][:2]==string[:2]:if re.search(r'\(\d+\)',best_match[0]) and re.search(r'\(\d+\)',string):similar_strings[string]=best_match[0]for original,similar in similar_strings.items():print(f"'{original}'和'{similar}'")

输出结果如下: 

 对于其中的一些代码,在此解释:

代码1

第十五行

print(data["是否打折销售"].groupby([data["是否打折销售"],data["分类名称"]]).count())

这行代码使用 pandas 的 groupby() 方法和 count() 方法对 data 数据中的 "是否打折销售" 和 "分类名称" 列进行分组,并对每个分组计数。

groupby() 方法将 DataFrame 根据指定的列名进行分组,返回一个 GroupBy 对象。在这里,我们通过传递表示 "是否打折销售" 和 "分类名称" 的两个列名来分组 data DataFrame。

count() 方法用于计算每组中唯一值的数量。在这里,它返回唯一组合的数量,即 (是否打折销售, 分类名称) 组合的数量。

通过在 groupby() 方法中传递多个列名,我们可以获取多个类别之间的交叉计数。

代码2

table=[[457,4],[830680,47362]]
result=fisher_exact(table,alternative='two-sided')

这段代码是使用 `fisher_exact()` 函数对给定的二维表格 `table` 进行 Fisher 精确性检验,并计算 p-value 和统计量,结果将存储在变量 `result` 中。

- `table=[[457,4],[830680,47362]]` 表示给出一个二维表格,其中第一行包含两个元素 `[457,4]`,第二行包含两个元素 `[830680,47362]`;
- `fisher_exact(table, alternative='two-sided')` 表示使用 Fisher 精确性检验对给定的二维表格 `table` 进行检验。`alternative='two-sided'` 表示使用双侧检验。

执行这段代码将会得到 Fisher 精确性检验的结果,包括 p-value 和统计量。具体而言,`result` 变量中将包含一个二元组,第一个元素表示 p-value,第二个元素表示统计量。

代码3

for string in strings:best_match=process.extractOne(string,[s for s in strings if s not in [string]],scorer=fuzz .ratio)if best_match[1]>=threshold and best_match[0]!=string and best_match[0][:2]==string[:2]:if re.search(r'\(\d+\)',best_match[0]) and re.search(r'\(\d+\)',string):similar_strings[string]=best_match[0]for original,similar in similar_strings.items():print(f"'{original}'和'{similar}'")

这段代码是一个字符串匹配的算法,它会找出与给定字符串相似的其他字符串,并将结果打印出来。

代码的执行过程如下:

1. 对于 `strings` 列表中的每个字符串,依次执行以下步骤:
2. 使用 `process.extractOne()` 函数找到与当前字符串 `string` 最相似的字符串。该函数会在剩余的字符串列表中进行搜索,返回一个二元组,其中第一个元素是最佳匹配的字符串,第二个元素是匹配的分数。
3. 判断最佳匹配的分数是否大于等于设定的阈值 `threshold`,并且最佳匹配的字符串不等于当前字符串 `string`,且最佳匹配的字符串和当前字符串的前两个字符相同。
4. 若上述条件满足,则继续执行下一步。
5. 判断最佳匹配的字符串和当前字符串都是否包含形如 `(数字)` 的字符串。
6. 若上述条件满足,则将原始字符串和相似字符串的对应关系添加到 `similar_strings` 字典中。
7. 遍历 `similar_strings` 字典中的每一项,将原始字符串和相似字符串的对应关系打印出来。

总结来说,该代码的目的是找出在给定阈值和条件下,符合相似性要求的字符串对,并将它们打印出来。这样可以帮助找出在字符串中存在相似内容的情况,并进一步进行处理或分析。

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

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

相关文章

仿易订货的订货系统源码一般多少钱

易订货是一款面向中小企业的B2B电子商务平台,旨在提供一站式的采购和销售解决方案。不少批发商贸企业在数字化转型的时候会采用订货系统,今天我们谈谈仿易订货的订货系统源码需要多少钱。 这款订货系统是一款SaaS,所以它是不面向市场销售源码…

STM32启动过程

STM32启动模式(自举模式) M3/3/7等内核,复位后做的第一件事: 从地址0x0000 0000处取出栈指针MSP的初始值,该值就是栈顶地址。从地址0x0000 0004处取出程序计数器指针PC的初始值,该值是复位向量。 芯片厂商…

【react.js + hooks】基于事件机制的跨组件数据共享

跨组件通信和数据共享不是一件容易的事,如果通过 prop 一层层传递,太繁琐,而且仅适用于从上到下的数据传递;建立一个全局的状态 Store,每个数据可能两三个组件间需要使用,其他地方用不着,挂那么…

C语言-Makefile

Makefile 什么是make? make 是个命令,是个可执行程序,用来解析 Makefile 文件的命令这个命令存放在 /usr/bin/ 什么是 makefile? makefile 是个文件,这个文件中描述了我们程序的编译规则咱们执行 make 命令的时候, m…

C++软件调试与异常排查技术从入门到精通学习路线分享

目录 1、概述 2、全面了解引发C软件异常的常见原因 3、熟练掌握排查C软件异常的常见手段与方法 3.1、IDE调试 3.2、添加打印日志 3.3、分块注释代码 3.4、数据断点 3.5、历史版本比对法 3.6、Windbg静态分析与动态调试 3.7、使用IDA查看汇编代码 3.8、使用常用工具分…

连锁管理系统是什么?有哪些功能?

连锁管理系统帮助门店实现POS收银管理、门店管理、采购订货管理、线上商城搭建、供应链管理一体化管理系统,快速提高门店管理效率,无论你的门店有多少,连锁总部都能通过系统随时洞察监管门店的所有运营数据。 连锁管理系统由:1个…

【线性代数】期末速通!

1. 行列式的性质 1.1 求一个行列式的值 特殊地,对角线左下全为0,结果为对角线乘积。行 r 列 c 1.2 性质 某行(列)加上或减去另一行(列)的几倍,行列式不变某行(列)乘 …

使用Jemeter对HTTP接口压测

我们不应该仅仅局限于某一种工具,性能测试能使用的工具非常多,选择适合的就是最好的。笔者已经使用Loadrunner进行多年的项目性能测试实战经验,也算略有小成,任何性能测试(如压力测试、负载测试、疲劳强度测试等&#…

常见Appium相关问题及解决方案

问题1:adb检测不到设备 解决: 1.检查手机驱动是否安装(win10系统不需要),去官网下载手机驱动或者电脑下载手机助手来辅助安装手机驱动,安装完成后卸载手机助手(防止接入手机时抢adb端口造成干…

【FPGA】Verilog:编码器 | 实现 4 到 2 编码器

0x00 编码器(Encoder) 编码器与解码器相反。当多台设备向计算机提供输入时,编码器会为每一个输入生成一个与设备相对应的信号,因此有多少比特就有多少输出,以数字形式表示输入的数量。 例如,如果有四个输…

基于junit4搭建自定义的接口自动化测试框架

随着业务的逐步稳定,对于接口的改动也会逐渐变少。更多的是对业务逻辑的优化,功能实现的完善。对于测试来说,重复繁琐的功能测试不仅效率低下,而且耗费一定的人力资源。笔者支持的信息流业务下的一个图文管理平台就是一个功能较为…

Java解决不同路径问题

Java解决不同路径问题 01 题目 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。 问总共有多少…