帮媳妇用GPT跑excel数据分析--(一)
昨天媳妇给我提了个对比excel数据库需求,我发现自己的代码水准不好,于是问了一下GPT,给出了相应的解决方案,但是我不太懂其中的某个参数如何调整precision=0.01这个参数在对比字符串的时候我知道怎么调整比较好。
详细代码如下 ,大家可以拿去,我自己跑数据没问题,跑出来的数据还是不理想。
import openpyxl
def find_and_mark_data(filename, sheetname, column, start_row, end_row, fuzzy_match=False, precision=0.01, output_filename="output.xlsx"):
# 打开Excel文件
workbook = openpyxl.load_workbook(filename)
# 选择工作表
worksheet = workbook
# 获取指定列的数据
column_data = ]
# 创建用于排序的元组列表
data_tuples = []
for i, data in enumerate(column_data):
if data:
data_tuples.append((i, data))
# 根据相似性进行排序
sorted_data = sorted(data_tuples, key=lambda x: x, reverse=True)
# 重新排列数据
for i, (index, _) in enumerate(sorted_data):
if i != index:
# 获取当前行数据
row_data = ]
# 删除当前行
worksheet.delete_rows(index+start_row)
# 在指定位置插入当前行数据
worksheet.insert_rows(start_row+i, 1)
for j, cell_value in enumerate(row_data, start=1):
worksheet.cell(row=start_row+i, column=j).value = cell_value
# 保存修改后的Excel文件
workbook.save(output_filename)
# 示例用法
filename = 'g:/test1.xlsx'
sheetname = 'sheet1'
column = 'A'# 修改为要遍历的列的字母
start_row = 100# 指定起始行
end_row = 500# 指定结束行
fuzzy_match = True
precision = 0.01
output_filename = 'output.xlsx'# 输出文件名
find_and_mark_data(filename, sheetname, column, start_row, end_row, fuzzy_match, precision, output_filename)
好像你的代码没做什么呢, 你好像只是用了排序重组功能吧,这个表格不是自带吗?
你用表格把数据做成图形估计更直观点 这个是不是用Excel本身的功能方便一些 Excel连接数据库直接用vb也可以跑,py感觉有点多余了
Sub Query()
Dim Conn As Object, Rst As Object
Dim strConn As String, strSQL As String
Dim i As Integer, PathStr As String
Set Conn = CreateObject("ADODB.Connection")
Set Rst = CreateObject("ADODB.Recordset")
PathStr = "C:\Users\Desktop\销售表.xlsx" '设置工作簿的完整路径和名称
t = ActiveSheet.Name
Select Case Application.Version * 1 '设置连接字符串,根据版本创建连接
Case Is <= 11
strConn = "Provider=Microsoft.Jet.Oledb.4.0;Extended Properties=excel 8.0;Data source=" & PathStr
Case Is >= 12
strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & PathStr & ";Extended Properties=""Excel 12.0;HDR=YES"";"""
End Select
'设置SQL查询语句
strSQL = "select * from [销售表$]"
Conn.Open strConn '打开数据库链接
Set Rst = Conn.Execute(strSQL) '执行查询,并将结果输出到记录集对象
'ThisWorkbook.Sheets.Add after:=Worksheets("数据源") '添加一个新工作表在第一工作后
For Each ws In Worksheets
If ws.Name = "提数结果" Then ws.Delete
Next
Sheets.Add.Name = "提数结果"
With Sheets("提数结果")
.Cells.Clear
.Tab.Color = 255
For i = 0 To Rst.Fields.Count - 1 '填写标题
.Cells(1, i + 1) = Rst.Fields(i).Name
Next i
.Range("A2").CopyFromRecordset Rst
' .Cells.EntireColumn.AutoFit'自动调整列宽
End With
Rst.Close '关闭数据库连接
Conn.Close
Set Conn = Nothing
Set Rst = Nothing
End Sub 直接VB跑不就完事了,这么简单的玩意…… 整的好啊 如果只是对比,excel本身就能满足要求,而且很方便,写这一堆代码,我都搞好了吧! 挺有创意的,支持原创!