Python Tkinter 数据集 K 匿名化系统 - 实现数据泛化和精确值输出
使用 Tkinter 和 Python 建立数据集 K 匿名化系统
该系统允许用户选择数据文件,输入 K 值,并对数据进行 K 匿名化处理。最终输出处理后的数据,并提供原始数据的精确值范围。
步骤:
-
**导入必要的库:**pythonimport tkinter as tkfrom tkinter import filedialogimport pandas as pd
-
**创建 GUI 界面:**python# 创建主窗口root = tk.Tk()
文件路径file_path = ''
打开文件按钮def open_file(): global file_path file_path = filedialog.askopenfilename()
匿名化数据函数def anonymize_data(): global file_path k_value = k_value_entry.get() try: k = int(k_value) except ValueError: result_label.configure(text='k 值必须是整数!') return
# 检查文件是否存在 try: data = pd.read_csv(file_path) except FileNotFoundError: result_label.configure(text='文件不存在!') return
# K 匿名化处理 columns = list(data.columns) for column in columns: if column != 'ID': data[column] = data[column].apply(lambda x: round(x / k) * k)
# 输出处理后的数据 output_file_path = file_path.split('.')[0] + '_anonymized.csv' data.to_csv(output_file_path, index=False)
# 在界面中显示处理后的数据 result_label.configure(text=data.to_string())
# 将所有数据泛化处理并在处理后输出精确值 for column in columns: if column != 'ID': data[column] = data[column].apply(lambda x: str(round(x / k) * k) + '±' + str(k / 2))
# 在界面中显示处理后的数据和精确值 result_label.configure(text=data.to_string())
选择文件按钮file_button = tk.Button(root, text='选择文件', command=open_file)file_button.pack(pady=10)
输入 K 值的文本框k_value_label = tk.Label(root, text='输入 K 值:')k_value_label.pack()k_value_entry = tk.Entry(root)k_value_entry.pack()
确认按钮confirm_button = tk.Button(root, text='确认', command=anonymize_data)confirm_button.pack(pady=10)
处理后的数据和精确值result_label = tk.Label(root)result_label.pack()
运行 GUIroot.mainloop()
代码说明:
- GUI 界面: 使用 Tkinter 库创建按钮和文本框,方便用户选择文件和输入 K 值。* 文件读取: 使用
filedialog模块选择文件并使用pandas库读取数据。* K 匿名化处理: 遍历数据集中每个属性列,对非 ID 列进行 K 匿名化处理,将数据值四舍五入到最接近的 K 的倍数。* 数据输出: 将处理后的数据保存到新的 CSV 文件,并在 GUI 界面中显示。* 精确值输出: 对每个属性值进行泛化处理,添加 ± K/2 表示精度范围。* 错误处理: 对文件不存在、K 值不合法等情况进行处理,并提示用户。
使用说明:
- 运行 Python 代码。2. 点击 '选择文件' 按钮选择要处理的数据文件。3. 在 '输入 K 值' 文本框中输入 K 值。4. 点击 '确认' 按钮进行 K 匿名化处理。5. 处理后的数据将保存到一个名为
_anonymized.csv的文件中,并在 GUI 界面中显示。
注意: 该代码仅供参考,您可能需要根据实际情况进行修
原文地址: https://www.cveoy.top/t/topic/ojR5 著作权归作者所有。请勿转载和采集!