这两天在梳理2个设备采集的温度的时候,发现了数据采集时间不一致,但是需要对比温度数据,只能手动去筛选和清洗数据,比较麻烦, 就写了这个小程序来合并2个csv格式的数据,从而实现数据合并对比分析。
我比较喜欢可视化界面,所以还是用的PySimpleGUI 来做界面:
添加2个文件的路径, 然后点击查找即可获取合并数据, 在左下角添加了数据保存;
可以另存为想要的地址和命名;
上代码:
首先确认已经安装模块:
pip install pandas
pip install PySimpleGUI
import PySimpleGUI as sg
import pandas as pd
# 定义窗口布局
layout = [
[sg.Text('选择表格文件')],
[sg.Input(), sg.FileBrowse(key='file_1'), sg.Text('表格1')],
[sg.Input(), sg.FileBrowse(key='file_2'), sg.Text('表格2')],
[sg.Button('查找')],
[sg.Text('查找结果:')],
[sg.Multiline(size=(60, 10), key='result')],
[sg.Button('保存结果')]
]
# 创建窗口
window = sg.Window('查找表格数据', layout)
# 读取数据并查找相同时间段的数据
def find_data(file_1, file_2):
try:
# 读取表格数据
df_1 = pd.read_csv(file_1)
df_2 = pd.read_csv(file_2)
# 找到相同时间段的数据
df = pd.merge(df_1, df_2, on='Time', how='inner')
# 返回查找结果
return df.to_string(index=False)
except Exception as e:
return str(e)
# 事件循环
while True:
event, values = window.read()
if event == sg.WINDOW_CLOSED:
break
elif event == '查找':
# 获取用户选择的文件路径
file_1 = values['file_1']
file_2 = values['file_2']
# 查找数据
result = find_data(file_1, file_2)
# 在窗口中显示查找结果
window['result'].update(result)
elif event == '保存结果':
# 获取当前显示的数
file_1 = values['file_1']
file_2 = values['file_2']
merged = pd.merge(pd.read_csv(file_1), pd.read_csv(file_2), on='Time', how='inner')
result = merged.loc[(merged['Time'] >= '00:00:00') & (merged['Time'] <= '23:59:59')]
table_values = window['result'].get()
# 将数据保存到新的表格中
save_file = sg.popup_get_file('保存文件', save_as=True, default_extension='.csv')
if save_file:
from pandas import DataFrame
save_df = DataFrame(result)
#如果想要把数据全部合并成一列把以上一行的save_df替换成下面一行的内容;
# save_df = pd.DataFrame([line.split(',') for line in table_values.split('\n')], columns=table_values.split('\n')[0].split(','))
save_df.to_csv(save_file, index=False)
sg.popup('保存成功!')
# 关闭窗口
window.close()
强调下时间格式为:00:00:00,不带日期。