利用python进行excel数据清洗

该代码段主要展示了如何使用Python的pandas库对多个Excel表格中的数据进行处理。首先,它读取原始数据,筛选特定设计编号的数据,转换时间格式,然后按照年份进行数据筛选。接着,对数据进行去重、分组求和,填充缺失日期,并将结果保存到新的Excel文件中。此过程分别针对振弦、扬压力、温度、位移、沉降和LE数值等不同类型的监测数据执行。
摘要由CSDN通过智能技术生成

# 导入数据包
import pandas as pd
import datetime
import os
import shutil
# ------------------以下部分是原始数据输入配置区域------------------------------
# 导入原始数据,这里需要配置原始数据文件绝对路径及Sheet名称
df = pd.read_excel("C:\\Users\\Thinkpad\\Desktop\\A.xls", "振弦")

df1 = pd.read_excel("C:\\Users\\Thinkpad\\Desktop\\B.xls", "GDA1105")

# 配置起始时间
s_date = datetime.datetime.strptime('2022/01/01', '%Y/%m/%d').date()

#配置结束时间
e_date = datetime.datetime.strptime('2022/12/31', '%Y/%m/%d').date()

# ------------------以上部分是原始数据输入配置区域------------------------------
# 创建保存临时表格的文件夹----------------------------------------------------
if not os.path.exists('C:\\Users\\Thinkpad\\Desktop\\临时数据表格'):
    os.makedirs('C:\\Users\\Thinkpad\\Desktop\\临时数据表格')
else:
    #清理历史遗留处理过的文件夹内容
    shutil.rmtree('C:\\Users\\Thinkpad\\Desktop\\临时数据表格')
    os.makedirs('C:\\Users\\Thinkpad\\Desktop\\临时数据表格')

# 创建保存临时表格的文件夹
if not os.path.exists('C:\\Users\\Thinkpad\\Desktop\\数据最终处理结果'):
    os.makedirs('C:\\Users\\Thinkpad\\Desktop\\数据最终处理结果')
else:
    #清理历史遗留处理过的文件夹内容
    shutil.rmtree('C:\\Users\\Thinkpad\\Desktop\\数据最终处理结果')
    os.makedirs('C:\\Users\\Thinkpad\\Desktop\\数据最终处理结果')

#第一个表原始数据初始化处理-----------------------------------------------------------
#把时间列转化成日期格式并写入到新的test.xls表中
df['时间'] = pd.to_datetime(df['时间']).dt.date
df.to_excel('C:\\Users\\Thinkpad\\Desktop\\临时数据表格\\test.xls')

#获取新的test.xls表中Sheet1的数据
stock = pd.read_excel("C:\\Users\\Thinkpad\\Desktop\\临时数据表格\\test.xls", "Sheet1")
# 显示导入的数据
print(stock['时间'])

# 选取2022年数据
stock_2022 = stock[(stock['时间'].dt.date >= s_date) & (stock['时间'].dt.date <= e_date)]

# 查看选取2022年数据并重新写入test.xls表中
print(stock_2022)
stock_2022.to_excel('C:\\Users\\Thinkpad\\Desktop\\临时数据表格\\test.xls')

#第二个表原始数据初始化处理-----------------------------------------------------------
#把时间列转化成日期格式并写入到新的test.xls表中
df1['时间'] = pd.to_datetime(df1['时间']).dt.date
df1.to_excel('C:\\Users\\Thinkpad\\Desktop\\临时数据表格\\test1.xls')

#获取新的test.xls表中Sheet1的数据
stock1 = pd.read_excel("C:\\Users\\Thinkpad\\Desktop\\临时数据表格\\test1.xls", "Sheet1")
# 显示导入的数据
#print(stock['时间'])
# 选取2022年数据
stock1_2022 = stock1[(stock1['时间'].dt.date >= s_date) & (stock1['时间'].dt.date <= e_date)]

# 查看选取2022年数据并重新写入test.xls表中
#print(stock1_2022)
stock1_2022.to_excel('C:\\Users\\Thinkpad\\Desktop\\临时数据表格\\test1.xls')
#以上部分是原始数据初始化处理---------------------------------------------------------------------------

print("-----------开始进行处理第一个表格数据----------------------")
#获取2022年伸缩缝数据-----------------------------------------------------------
data = pd.read_excel('C:\\Users\\Thinkpad\\Desktop\\临时数据表格\\test.xls')
# 搜索设计编号中等于J开头的值
FF = data.loc[data['设计编号'].str.startswith('J')]

FF['时间'] = pd.to_datetime(FF['时间']).dt.date

print(FF)
FF.to_excel('C:\\Users\\Thinkpad\\Desktop\\临时数据表格\\B.xls')

# 读取Excel中Sheet1中的数据
data = pd.DataFrame(pd.read_excel("C:\\Users\\Thinkpad\\Desktop\\临时数据表格\\B.xls", 'Sheet1'))

# 查看去除重复行的数据,保留最后出现的值
no_re_row = data.drop_duplicates(subset=['时间','设计编号'], keep='last')
no_re_row['时间'] = pd.to_datetime(no_re_row['时间']).dt.date
#删除未命名列
no_re_row = no_re_row[no_re_row.columns.drop(list(no_re_row.filter(regex='Unnamed')))]
# 将去除重复行的数据输出到excel表中
no_re_row.to_excel("C:\\Users\\Thinkpad\\Desktop\\临时数据表格\\伸缩缝.xls")


data = pd.read_excel('C:\\Users\\Thinkpad\\Desktop\\临时数据表格\\伸缩缝.xls') #打开表格
#根据设计编号进行分组求和
a = data.groupby('设计编号').sum()
#根据设计编号进行分组求和数据写入临时表ls.xls中
a.to_excel("C:\\Users\\Thinkpad\\Desktop\\临时数据表格\\ls.xls")
#从临时表ls.xls中读取数据
data1 = pd.read_excel('C:\\Users\\Thinkpad\\Desktop\\临时数据表格\\ls.xls')
#从临时表ls.xls中读取设计编号列的数据并转化成list
sjbh = list(data1['设计编号'])
#获取设计编号筛选文本个数
i = len(sjbh)
#遍历获取设计编号文本
k = 0
dk = pd.DataFrame()
while k < i:
    #print(sjbh[k])
    FF = data.loc[data['设计编号'] == sjbh[k]]  # 搜索设计编号中等于sjbh[k]开头的数据
    FF.to_excel("C:\\Users\\Thinkpad\\Desktop\\临时数据表格\\FF.xls", index=False)
    k = k+1
    bb = pd.read_excel("C:\\Users\\Thinkpad\\Desktop\\临时数据表格\\FF.xls", 'Sheet1')
    #获取FF表格中需要获取的列数据
    df = pd.DataFrame({"时间": list(bb["时间"]), "设计编号": list(bb["设计编号"]), "模数值": list(bb["模数值"])})
    df["时间"] = df["时间"].astype("datetime64")  # 确保数据格式为日期
    date_range = pd.date_range(start=s_date, end=e_date, freq="D")  # freq="D"表示按天,可以按分钟,月,季度,年等
    df_date_new = df.set_index("时间").reindex(index=date_range)  # 使用pandas.reindex填充缺失的索引

    df_date_new.to_excel("C:\\Users\\Thinkpad\\Desktop\\临时数据表格\\FF.xls", index=True, index_label="时间")

    data_new = pd.read_excel('C:\\Users\\Thinkpad\\Desktop\\临时数据表格\\FF.xls')  # 打开表格

    df_all = pd.concat([dk, data_new], ignore_index=False)  # concat 合并有相同字段名的dataframe
    print(df_all)
    data_list = df_all.drop_duplicates(keep='first')  # 避免字段名重复写入,一般会做去重处理
    df_all.to_excel("C:\\Users\\Thinkpad\\Desktop\\数据最终处理结果\\伸缩缝new.xls")  # 写出数据
    # 读取温度new中Sheet1中的数据
    dk = pd.DataFrame(pd.read_excel("C:\\Users\\Thinkpad\\Desktop\\数据最终处理结果\\伸缩缝new.xls", 'Sheet1'))
    # 删除未命名列
    dk = dk[dk.columns.drop(list(dk.filter(regex='Unnamed')))]
    # 将去除重复行的数据输出到excel表中
    dk.to_excel("C:\\Users\\Thinkpad\\Desktop\\数据最终处理结果\\伸缩缝new.xls")
    # 读取温度new中Sheet1中的数据
    dk = pd.DataFrame(pd.read_excel("C:\\Users\\Thinkpad\\Desktop\\数据最终处理结果\\伸缩缝new.xls", 'Sheet1'))


# 时间列只保留年月日格式
dk = pd.read_excel('C:\\Users\\Thinkpad\\Desktop\\数据最终处理结果\\伸缩缝new.xls') #打开表格
dk['时间'] = pd.to_datetime(dk['时间']).dt.date
# 删除未命名列
dk = dk[dk.columns.drop(list(dk.filter(regex='Unnamed')))]
dk.to_excel('C:\\Users\\Thinkpad\\Desktop\\数据最终处理结果\\伸缩缝new.xls')

#---------------------------------------------------------------------------------
#获取2022年扬压力数据---------------------------------------------------------------------------------
data = pd.read_excel('C:\\Users\\Thinkpad\\Desktop\\临时数据表格\\test.xls')
# 搜索设计编号中等于P开头的值
FF = data.loc[data['设计编号'].str.startswith('P')]

FF['时间'] = pd.to_datetime(FF['时间']).dt.date

print(FF)
FF.to_excel('C:\\Users\\Thinkpad\\Desktop\\临时数据表格\\B.xls')

# 读取Excel中Sheet1中的数据
data = pd.DataFrame(pd.read_excel("C:\\Users\\Thinkpad\\Desktop\\临时数据表格\\B.xls", 'Sheet1'))

# 查看去除重复行的数据,保留最后出现的值
no_re_row = data.drop_duplicates(subset=['时间','设计编号'], keep='last')
no_re_row['时间'] = pd.to_datetime(no_re_row['时间']).dt.date
#删除未命名列
no_re_row = no_re_row[no_re_row.columns.drop(list(no_re_row.filter(regex='Unnamed')))]
# 将去除重复行的数据输出到excel表中
no_re_row.to_excel("C:\\Users\\Thinkpad\\Desktop\\临时数据表格\\扬压力.xls")


data = pd.read_excel('C:\\Users\\Thinkpad\\Desktop\\临时数据表格\\扬压力.xls') #打开表格
#根据设计编号进行分组求和
a = data.groupby('设计编号').sum()
#根据设计编号进行分组求和数据写入临时表ls.xls中
a.to_excel("C:\\Users\\Thinkpad\\Desktop\\临时数据表格\\ls.xls")
#从临时表ls.xls中读取数据
data1 = pd.read_excel('C:\\Users\\Thinkpad\\Desktop\\临时数据表格\\ls.xls')
#从临时表ls.xls中读取设计编号列的数据并转化成list
sjbh = list(data1['设计编号'])
#获取设计编号筛选文本个数
i = len(sjbh)
#遍历获取设计编号文本
k = 0
dk = pd.DataFrame()
while k < i:
    #print(sjbh[k])
    FF = data.loc[data['设计编号'] == sjbh[k]]  # 搜索设计编号中等于sjbh[k]开头的数据
    FF.to_excel("C:\\Users\\Thinkpad\\Desktop\\临时数据表格\\FF.xls", index=False)
    k = k+1
    bb = pd.read_excel("C:\\Users\\Thinkpad\\Desktop\\临时数据表格\\FF.xls", 'Sheet1')
    #获取FF表格中需要获取的列数据
    df = pd.DataFrame({"时间": list(bb["时间"]), "设计编号": list(bb["设计编号"]), "扬压力值": list(bb["模数值"])})
    df["时间"] = df["时间"].astype("datetime64")  # 确保数据格式为日期
    date_range = pd.date_range(start=s_date, end=e_date, freq="D")  # freq="D"表示按天,可以按分钟,月,季度,年等
    df_date_new = df.set_index("时间").reindex(index=date_range)  # 使用pandas.reindex填充缺失的索引

    df_date_new.to_excel("C:\\Users\\Thinkpad\\Desktop\\临时数据表格\\FF.xls", index=True, index_label="时间")

    data_new = pd.read_excel('C:\\Users\\Thinkpad\\Desktop\\临时数据表格\\FF.xls')  # 打开表格

    df_all = pd.concat([dk, data_new], ignore_index=False)  # concat 合并有相同字段名的dataframe
    print(df_all)
    data_list = df_all.drop_duplicates(keep='first')  # 避免字段名重复写入,一般会做去重处理
    df_all.to_excel("C:\\Users\\Thinkpad\\Desktop\\数据最终处理结果\\扬压力new.xls")  # 写出数据
    # 读取扬压力new中Sheet1中的数据
    dk = pd.DataFrame(pd.read_excel("C:\\Users\\Thinkpad\\Desktop\\数据最终处理结果\\扬压力new.xls", 'Sheet1'))
    # 删除未命名列
    dk = dk[dk.columns.drop(list(dk.filter(regex='Unnamed')))]
    # 将去除重复行的数据输出到excel表中
    dk.to_excel("C:\\Users\\Thinkpad\\Desktop\\数据最终处理结果\\扬压力new.xls")
    # 读取扬压力new中Sheet1中的数据
    dk = pd.DataFrame(pd.read_excel("C:\\Users\\Thinkpad\\Desktop\\数据最终处理结果\\扬压力new.xls", 'Sheet1'))


# 时间列只保留年月日格式
dk = pd.read_excel('C:\\Users\\Thinkpad\\Desktop\\数据最终处理结果\\扬压力new.xls') #打开表格
dk['时间'] = pd.to_datetime(dk['时间']).dt.date
# 删除未命名列
dk = dk[dk.columns.drop(list(dk.filter(regex='Unnamed')))]
dk.to_excel('C:\\Users\\Thinkpad\\Desktop\\数据最终处理结果\\扬压力new.xls')


#---------------------------------------------------------------------------------
#获取2022年温度数据---------------------------------------------------------------------------------
data = pd.read_excel('C:\\Users\\Thinkpad\\Desktop\\临时数据表格\\test.xls')
# 搜索设计编号中等于T开头的值
FF = data.loc[data['设计编号'].str.startswith('T')]

FF['时间'] = pd.to_datetime(FF['时间']).dt.date

print(FF)
FF.to_excel('C:\\Users\\Thinkpad\\Desktop\\临时数据表格\\B.xls')

# 读取Excel中Sheet1中的数据
data = pd.DataFrame(pd.read_excel("C:\\Users\\Thinkpad\\Desktop\\临时数据表格\\B.xls", 'Sheet1'))

# 查看去除重复行的数据,保留最后出现的值
no_re_row = data.drop_duplicates(subset=['时间','设计编号'], keep='last')
no_re_row['时间'] = pd.to_datetime(no_re_row['时间']).dt.date
#删除未命名列
no_re_row = no_re_row[no_re_row.columns.drop(list(no_re_row.filter(regex='Unnamed')))]
# 将去除重复行的数据输出到excel表中
no_re_row.to_excel("C:\\Users\\Thinkpad\\Desktop\\临时数据表格\\温度.xls")

data = pd.read_excel('C:\\Users\\Thinkpad\\Desktop\\临时数据表格\\温度.xls') #打开表格
#根据设计编号进行分组求和
a = data.groupby('设计编号').sum()
#根据设计编号进行分组求和数据写入临时表ls.xls中
a.to_excel("C:\\Users\\Thinkpad\\Desktop\\临时数据表格\\ls.xls")
#从临时表ls.xls中读取数据
data1 = pd.read_excel('C:\\Users\\Thinkpad\\Desktop\\临时数据表格\\ls.xls')
#从临时表ls.xls中读取设计编号列的数据并转化成list
sjbh = list(data1['设计编号'])
#获取设计编号筛选文本个数
i = len(sjbh)
#遍历获取设计编号文本
k = 0
dk = pd.DataFrame()
while k < i:
    #print(sjbh[k])
    FF = data.loc[data['设计编号'] == sjbh[k]]  # 搜索设计编号中等于sjbh[k]开头的数据
    FF.to_excel("C:\\Users\\Thinkpad\\Desktop\\临时数据表格\\FF.xls", index=False)
    k = k+1
    bb = pd.read_excel("C:\\Users\\Thinkpad\\Desktop\\临时数据表格\\FF.xls", 'Sheet1')
    #获取FF表格中需要获取的列数据
    df = pd.DataFrame({"时间": list(bb["时间"]), "设计编号": list(bb["设计编号"]), "温度值": list(bb["温度值"])})
    df["时间"] = df["时间"].astype("datetime64")  # 确保数据格式为日期
    date_range = pd.date_range(start=s_date, end=e_date, freq="D")  # freq="D"表示按天,可以按分钟,月,季度,年等
    df_date_new = df.set_index("时间").reindex(index=date_range)  # 使用pandas.reindex填充缺失的索引

    df_date_new.to_excel("C:\\Users\\Thinkpad\\Desktop\\临时数据表格\\FF.xls", index=True, index_label="时间")

    data_new = pd.read_excel('C:\\Users\\Thinkpad\\Desktop\\临时数据表格\\FF.xls')  # 打开表格

    df_all = pd.concat([dk, data_new], ignore_index=False)  # concat 合并有相同字段名的dataframe
    print(df_all)
    data_list = df_all.drop_duplicates(keep='first')  # 避免字段名重复写入,一般会做去重处理
    df_all.to_excel("C:\\Users\\Thinkpad\\Desktop\\数据最终处理结果\\温度new.xls")  # 写出数据
    # 读取温度new中Sheet1中的数据
    dk = pd.DataFrame(pd.read_excel("C:\\Users\\Thinkpad\\Desktop\\数据最终处理结果\\温度new.xls", 'Sheet1'))
    # 删除未命名列
    dk = dk[dk.columns.drop(list(dk.filter(regex='Unnamed')))]
    # 将去除重复行的数据输出到excel表中
    dk.to_excel("C:\\Users\\Thinkpad\\Desktop\\数据最终处理结果\\温度new.xls")
    # 读取温度new中Sheet1中的数据
    dk = pd.DataFrame(pd.read_excel("C:\\Users\\Thinkpad\\Desktop\\数据最终处理结果\\温度new.xls", 'Sheet1'))


# 时间列只保留年月日格式
dk = pd.read_excel('C:\\Users\\Thinkpad\\Desktop\\数据最终处理结果\\温度new.xls') #打开表格
dk['时间'] = pd.to_datetime(dk['时间']).dt.date
# 删除未命名列
dk = dk[dk.columns.drop(list(dk.filter(regex='Unnamed')))]
dk.to_excel('C:\\Users\\Thinkpad\\Desktop\\数据最终处理结果\\温度new.xls')

#---------------------------------------------------------------------------------
#获取2022年绕坝数据---------------------------------------------------------------------------------
data = pd.read_excel('C:\\Users\\Thinkpad\\Desktop\\临时数据表格\\test.xls')
# 搜索设计编号中等于L1、L2、R1、R2开头的值
FF = data.loc[(data['设计编号'] == "L1") | (data['设计编号'] == "L2") | (data['设计编号'] == "R1") | (data['设计编号'] == "R2")]

FF['时间'] = pd.to_datetime(FF['时间']).dt.date

print(FF)
FF.to_excel('C:\\Users\\Thinkpad\\Desktop\\临时数据表格\\B.xls')

# 读取Excel中Sheet1中的数据
data = pd.DataFrame(pd.read_excel("C:\\Users\\Thinkpad\\Desktop\\临时数据表格\\B.xls", 'Sheet1'))

# 查看去除重复行的数据,保留最后出现的值
no_re_row = data.drop_duplicates(subset=['时间','设计编号'], keep='last')
no_re_row['时间'] = pd.to_datetime(no_re_row['时间']).dt.date
#删除未命名列
no_re_row = no_re_row[no_re_row.columns.drop(list(no_re_row.filter(regex='Unnamed')))]
# 将去除重复行的数据输出到excel表中
no_re_row.to_excel("C:\\Users\\Thinkpad\\Desktop\\临时数据表格\\绕坝.xls")
#---------------------------------------------------------------------------------
data = pd.read_excel('C:\\Users\\Thinkpad\\Desktop\\临时数据表格\\绕坝.xls') #打开表格
#根据设计编号进行分组求和
a = data.groupby('设计编号').sum()
#根据设计编号进行分组求和数据写入临时表ls.xls中
a.to_excel("C:\\Users\\Thinkpad\\Desktop\\临时数据表格\\ls.xls")
#从临时表ls.xls中读取数据
data1 = pd.read_excel('C:\\Users\\Thinkpad\\Desktop\\临时数据表格\\ls.xls')
#从临时表ls.xls中读取设计编号列的数据并转化成list
sjbh = list(data1['设计编号'])
#获取设计编号筛选文本个数
i = len(sjbh)
#遍历获取设计编号文本
k = 0
dk = pd.DataFrame()
while k < i:
    #print(sjbh[k])
    FF = data.loc[data['设计编号'] == sjbh[k]]  # 搜索设计编号中等于sjbh[k]开头的数据
    FF.to_excel("C:\\Users\\Thinkpad\\Desktop\\临时数据表格\\FF.xls", index=False)
    k = k+1
    bb = pd.read_excel("C:\\Users\\Thinkpad\\Desktop\\临时数据表格\\FF.xls", 'Sheet1')
    #获取FF表格中需要获取的列数据
    df = pd.DataFrame({"时间": list(bb["时间"]), "设计编号": list(bb["设计编号"]), "绕坝值": list(bb["模数值"])})
    df["时间"] = df["时间"].astype("datetime64")  # 确保数据格式为日期
    date_range = pd.date_range(start=s_date, end=e_date, freq="D")  # freq="D"表示按天,可以按分钟,月,季度,年等
    df_date_new = df.set_index("时间").reindex(index=date_range)  # 使用pandas.reindex填充缺失的索引

    df_date_new.to_excel("C:\\Users\\Thinkpad\\Desktop\\临时数据表格\\FF.xls", index=True, index_label="时间")

    data_new = pd.read_excel('C:\\Users\\Thinkpad\\Desktop\\临时数据表格\\FF.xls')  # 打开表格

    df_all = pd.concat([dk, data_new], ignore_index=False)  # concat 合并有相同字段名的dataframe
    print(df_all)
    data_list = df_all.drop_duplicates(keep='first')  # 避免字段名重复写入,一般会做去重处理
    df_all.to_excel("C:\\Users\\Thinkpad\\Desktop\\数据最终处理结果\\绕坝new.xls")  # 写出数据
    # 读取绕坝new中Sheet1中的数据
    dk = pd.DataFrame(pd.read_excel("C:\\Users\\Thinkpad\\Desktop\\数据最终处理结果\\绕坝new.xls", 'Sheet1'))
    # 删除未命名列
    dk = dk[dk.columns.drop(list(dk.filter(regex='Unnamed')))]
    # 将去除重复行的数据输出到excel表中
    dk.to_excel("C:\\Users\\Thinkpad\\Desktop\\数据最终处理结果\\绕坝new.xls")
    # 读取绕坝new中Sheet1中的数据
    dk = pd.DataFrame(pd.read_excel("C:\\Users\\Thinkpad\\Desktop\\数据最终处理结果\\绕坝new.xls", 'Sheet1'))


# 时间列只保留年月日格式
dk = pd.read_excel('C:\\Users\\Thinkpad\\Desktop\\数据最终处理结果\\绕坝new.xls') #打开表格
dk['时间'] = pd.to_datetime(dk['时间']).dt.date
# 删除未命名列
dk = dk[dk.columns.drop(list(dk.filter(regex='Unnamed')))]
dk.to_excel('C:\\Users\\Thinkpad\\Desktop\\数据最终处理结果\\绕坝new.xls')

print("-----------第一个表格数据结束----------------------")

print("-----------开始进行处理第二个表格数据----------------------")


#获取2022年位移数据---------------------------------------------------------------------------------
data = pd.read_excel('C:\\Users\\Thinkpad\\Desktop\\临时数据表格\\test1.xls')
# 搜索设计编号中等于J开头的值
FF = data.loc[data['设计编号'].str.startswith('TP') | data['设计编号'].str.startswith('DC')]

FF['时间'] = pd.to_datetime(FF['时间']).dt.date

print(FF)
FF.to_excel('C:\\Users\\Thinkpad\\Desktop\\临时数据表格\\B.xls')

# 读取Excel中Sheet1中的数据
data = pd.DataFrame(pd.read_excel("C:\\Users\\Thinkpad\\Desktop\\临时数据表格\\B.xls", 'Sheet1'))

# 查看去除重复行的数据,保留最后出现的值
no_re_row = data.drop_duplicates(subset=['时间','设计编号'], keep='last')
no_re_row['时间'] = pd.to_datetime(no_re_row['时间']).dt.date
#删除未命名列
no_re_row = no_re_row[no_re_row.columns.drop(list(no_re_row.filter(regex='Unnamed')))]
# 将去除重复行的数据输出到excel表中
no_re_row.to_excel("C:\\Users\\Thinkpad\\Desktop\\临时数据表格\\位移.xls")


data = pd.read_excel('C:\\Users\\Thinkpad\\Desktop\\临时数据表格\\位移.xls') #打开表格
#根据设计编号进行分组求和
a = data.groupby('设计编号').sum()
#根据设计编号进行分组求和数据写入临时表ls.xls中
a.to_excel("C:\\Users\\Thinkpad\\Desktop\\临时数据表格\\ls.xls")
#从临时表ls.xls中读取数据
data1 = pd.read_excel('C:\\Users\\Thinkpad\\Desktop\\临时数据表格\\ls.xls')
#从临时表ls.xls中读取设计编号列的数据并转化成list
sjbh = list(data1['设计编号'])
#获取设计编号筛选文本个数
i = len(sjbh)
#遍历获取设计编号文本
k = 0
dk = pd.DataFrame()
while k < i:
    #print(sjbh[k])
    FF = data.loc[data['设计编号'] == sjbh[k]]  # 搜索设计编号中等于sjbh[k]开头的数据
    FF.to_excel("C:\\Users\\Thinkpad\\Desktop\\临时数据表格\\FF.xls", index=False)
    k = k+1
    bb = pd.read_excel("C:\\Users\\Thinkpad\\Desktop\\临时数据表格\\FF.xls", 'Sheet1')
    #获取FF表格中需要获取的列数据
    df = pd.DataFrame({"时间": list(bb["时间"]), "设计编号": list(bb["设计编号"]), "模数值": list(bb["模数值"])})
    df["时间"] = df["时间"].astype("datetime64")  # 确保数据格式为日期
    date_range = pd.date_range(start=s_date, end=e_date, freq="D")  # freq="D"表示按天,可以按分钟,月,季度,年等
    df_date_new = df.set_index("时间").reindex(index=date_range)  # 使用pandas.reindex填充缺失的索引

    df_date_new.to_excel("C:\\Users\\Thinkpad\\Desktop\\临时数据表格\\FF.xls", index=True, index_label="时间")

    data_new = pd.read_excel('C:\\Users\\Thinkpad\\Desktop\\临时数据表格\\FF.xls')  # 打开表格

    df_all = pd.concat([dk, data_new], ignore_index=False)  # concat 合并有相同字段名的dataframe
    print(df_all)
    data_list = df_all.drop_duplicates(keep='first')  # 避免字段名重复写入,一般会做去重处理
    df_all.to_excel("C:\\Users\\Thinkpad\\Desktop\\数据最终处理结果\\位移new.xls")  # 写出数据
    # 读取温度new中Sheet1中的数据
    dk = pd.DataFrame(pd.read_excel("C:\\Users\\Thinkpad\\Desktop\\数据最终处理结果\\位移new.xls", 'Sheet1'))
    # 删除未命名列
    dk = dk[dk.columns.drop(list(dk.filter(regex='Unnamed')))]
    # 将去除重复行的数据输出到excel表中
    dk.to_excel("C:\\Users\\Thinkpad\\Desktop\\数据最终处理结果\\位移new.xls")
    # 读取温度new中Sheet1中的数据
    dk = pd.DataFrame(pd.read_excel("C:\\Users\\Thinkpad\\Desktop\\数据最终处理结果\\位移new.xls", 'Sheet1'))


# 时间列只保留年月日格式
dk = pd.read_excel('C:\\Users\\Thinkpad\\Desktop\\数据最终处理结果\\位移new.xls') #打开表格
dk['时间'] = pd.to_datetime(dk['时间']).dt.date
# 删除未命名列
dk = dk[dk.columns.drop(list(dk.filter(regex='Unnamed')))]
dk.to_excel('C:\\Users\\Thinkpad\\Desktop\\数据最终处理结果\\位移new.xls')

#---------------------------------------------------------------------------------
#获取2022年沉降数据---------------------------------------------------------------------------------
data = pd.read_excel('C:\\Users\\Thinkpad\\Desktop\\临时数据表格\\test1.xls')
# 搜索设计编号中等于J开头的值
FF = data.loc[data['设计编号'].str.startswith('LD') ]

FF['时间'] = pd.to_datetime(FF['时间']).dt.date

print(FF)
FF.to_excel('C:\\Users\\Thinkpad\\Desktop\\临时数据表格\\B.xls')

# 读取Excel中Sheet1中的数据
data = pd.DataFrame(pd.read_excel("C:\\Users\\Thinkpad\\Desktop\\临时数据表格\\B.xls", 'Sheet1'))

# 查看去除重复行的数据,保留最后出现的值
no_re_row = data.drop_duplicates(subset=['时间','设计编号'], keep='last')
no_re_row['时间'] = pd.to_datetime(no_re_row['时间']).dt.date
#删除未命名列
no_re_row = no_re_row[no_re_row.columns.drop(list(no_re_row.filter(regex='Unnamed')))]
# 将去除重复行的数据输出到excel表中
no_re_row.to_excel("C:\\Users\\Thinkpad\\Desktop\\临时数据表格\\沉降.xls")


data = pd.read_excel('C:\\Users\\Thinkpad\\Desktop\\临时数据表格\\沉降.xls') #打开表格
#根据设计编号进行分组求和
a = data.groupby('设计编号').sum()
#根据设计编号进行分组求和数据写入临时表ls.xls中
a.to_excel("C:\\Users\\Thinkpad\\Desktop\\临时数据表格\\ls.xls")
#从临时表ls.xls中读取数据
data1 = pd.read_excel('C:\\Users\\Thinkpad\\Desktop\\临时数据表格\\ls.xls')
#从临时表ls.xls中读取设计编号列的数据并转化成list
sjbh = list(data1['设计编号'])
#获取设计编号筛选文本个数
i = len(sjbh)
#遍历获取设计编号文本
k = 0
dk = pd.DataFrame()
while k < i:
    #print(sjbh[k])
    FF = data.loc[data['设计编号'] == sjbh[k]]  # 搜索设计编号中等于sjbh[k]开头的数据
    FF.to_excel("C:\\Users\\Thinkpad\\Desktop\\临时数据表格\\FF.xls", index=False)
    k = k+1
    bb = pd.read_excel("C:\\Users\\Thinkpad\\Desktop\\临时数据表格\\FF.xls", 'Sheet1')
    #获取FF表格中需要获取的列数据
    df = pd.DataFrame({"时间": list(bb["时间"]), "设计编号": list(bb["设计编号"]), "模数值": list(bb["模数值"])})
    df["时间"] = df["时间"].astype("datetime64")  # 确保数据格式为日期
    date_range = pd.date_range(start=s_date, end=e_date, freq="D")  # freq="D"表示按天,可以按分钟,月,季度,年等
    df_date_new = df.set_index("时间").reindex(index=date_range)  # 使用pandas.reindex填充缺失的索引

    df_date_new.to_excel("C:\\Users\\Thinkpad\\Desktop\\临时数据表格\\FF.xls", index=True, index_label="时间")

    data_new = pd.read_excel('C:\\Users\\Thinkpad\\Desktop\\临时数据表格\\FF.xls')  # 打开表格

    df_all = pd.concat([dk, data_new], ignore_index=False)  # concat 合并有相同字段名的dataframe
    print(df_all)
    data_list = df_all.drop_duplicates(keep='first')  # 避免字段名重复写入,一般会做去重处理
    df_all.to_excel("C:\\Users\\Thinkpad\\Desktop\\数据最终处理结果\\沉降new.xls")  # 写出数据
    # 读取温度new中Sheet1中的数据
    dk = pd.DataFrame(pd.read_excel("C:\\Users\\Thinkpad\\Desktop\\数据最终处理结果\\沉降new.xls", 'Sheet1'))
    # 删除未命名列
    dk = dk[dk.columns.drop(list(dk.filter(regex='Unnamed')))]
    # 将去除重复行的数据输出到excel表中
    dk.to_excel("C:\\Users\\Thinkpad\\Desktop\\数据最终处理结果\\沉降new.xls")
    # 读取温度new中Sheet1中的数据
    dk = pd.DataFrame(pd.read_excel("C:\\Users\\Thinkpad\\Desktop\\数据最终处理结果\\沉降new.xls", 'Sheet1'))


# 时间列只保留年月日格式
dk = pd.read_excel('C:\\Users\\Thinkpad\\Desktop\\数据最终处理结果\\沉降new.xls') #打开表格
dk['时间'] = pd.to_datetime(dk['时间']).dt.date
# 删除未命名列
dk = dk[dk.columns.drop(list(dk.filter(regex='Unnamed')))]
dk.to_excel('C:\\Users\\Thinkpad\\Desktop\\数据最终处理结果\\沉降new.xls')
#---------------------------------------------------------------------------------
#获取2022年坝体渗流数据---------------------------------------------------------------------------------
data = pd.read_excel('C:\\Users\\Thinkpad\\Desktop\\临时数据表格\\test1.xls')
# 搜索设计编号中等于J开头的值
FF = data.loc[data['设计编号'].str.startswith('ZS') ]

FF['时间'] = pd.to_datetime(FF['时间']).dt.date

print(FF)
FF.to_excel('C:\\Users\\Thinkpad\\Desktop\\临时数据表格\\B.xls')

# 读取Excel中Sheet1中的数据
data = pd.DataFrame(pd.read_excel("C:\\Users\\Thinkpad\\Desktop\\临时数据表格\\B.xls", 'Sheet1'))

# 查看去除重复行的数据,保留最后出现的值
no_re_row = data.drop_duplicates(subset=['时间','设计编号'], keep='last')
no_re_row['时间'] = pd.to_datetime(no_re_row['时间']).dt.date
#删除未命名列
no_re_row = no_re_row[no_re_row.columns.drop(list(no_re_row.filter(regex='Unnamed')))]
# 将去除重复行的数据输出到excel表中
no_re_row.to_excel("C:\\Users\\Thinkpad\\Desktop\\临时数据表格\\坝体渗流.xls")


data = pd.read_excel('C:\\Users\\Thinkpad\\Desktop\\临时数据表格\\坝体渗流.xls') #打开表格
#根据设计编号进行分组求和
a = data.groupby('设计编号').sum()
#根据设计编号进行分组求和数据写入临时表ls.xls中
a.to_excel("C:\\Users\\Thinkpad\\Desktop\\临时数据表格\\ls.xls")
#从临时表ls.xls中读取数据
data1 = pd.read_excel('C:\\Users\\Thinkpad\\Desktop\\临时数据表格\\ls.xls')
#从临时表ls.xls中读取设计编号列的数据并转化成list
sjbh = list(data1['设计编号'])
#获取设计编号筛选文本个数
i = len(sjbh)
#遍历获取设计编号文本
k = 0
dk = pd.DataFrame()
while k < i:
    #print(sjbh[k])
    FF = data.loc[data['设计编号'] == sjbh[k]]  # 搜索设计编号中等于sjbh[k]开头的数据
    FF.to_excel("C:\\Users\\Thinkpad\\Desktop\\临时数据表格\\FF.xls", index=False)
    k = k+1
    bb = pd.read_excel("C:\\Users\\Thinkpad\\Desktop\\临时数据表格\\FF.xls", 'Sheet1')
    #获取FF表格中需要获取的列数据
    df = pd.DataFrame({"时间": list(bb["时间"]), "设计编号": list(bb["设计编号"]), "模数值": list(bb["模数值"])})
    df["时间"] = df["时间"].astype("datetime64")  # 确保数据格式为日期
    date_range = pd.date_range(start=s_date, end=e_date, freq="D")  # freq="D"表示按天,可以按分钟,月,季度,年等
    df_date_new = df.set_index("时间").reindex(index=date_range)  # 使用pandas.reindex填充缺失的索引

    df_date_new.to_excel("C:\\Users\\Thinkpad\\Desktop\\临时数据表格\\FF.xls", index=True, index_label="时间")

    data_new = pd.read_excel('C:\\Users\\Thinkpad\\Desktop\\临时数据表格\\FF.xls')  # 打开表格

    df_all = pd.concat([dk, data_new], ignore_index=False)  # concat 合并有相同字段名的dataframe
    print(df_all)
    data_list = df_all.drop_duplicates(keep='first')  # 避免字段名重复写入,一般会做去重处理
    df_all.to_excel("C:\\Users\\Thinkpad\\Desktop\\数据最终处理结果\\坝体渗流new.xls")  # 写出数据
    # 读取温度new中Sheet1中的数据
    dk = pd.DataFrame(pd.read_excel("C:\\Users\\Thinkpad\\Desktop\\数据最终处理结果\\坝体渗流new.xls", 'Sheet1'))
    # 删除未命名列
    dk = dk[dk.columns.drop(list(dk.filter(regex='Unnamed')))]
    # 将去除重复行的数据输出到excel表中
    dk.to_excel("C:\\Users\\Thinkpad\\Desktop\\数据最终处理结果\\坝体渗流new.xls")
    # 读取温度new中Sheet1中的数据
    dk = pd.DataFrame(pd.read_excel("C:\\Users\\Thinkpad\\Desktop\\数据最终处理结果\\坝体渗流new.xls", 'Sheet1'))


# 时间列只保留年月日格式
dk = pd.read_excel('C:\\Users\\Thinkpad\\Desktop\\数据最终处理结果\\坝体渗流new.xls') #打开表格
dk['时间'] = pd.to_datetime(dk['时间']).dt.date
# 删除未命名列
dk = dk[dk.columns.drop(list(dk.filter(regex='Unnamed')))]
dk.to_excel('C:\\Users\\Thinkpad\\Desktop\\数据最终处理结果\\坝体渗流new.xls')
#----------------------------------------------------------------------------------------------------------
#获取2022年LE数值数据---------------------------------------------------------------------------------
data = pd.read_excel('C:\\Users\\Thinkpad\\Desktop\\临时数据表格\\test1.xls')
# 搜索设计编号中等于J开头的值
FF = data.loc[data['设计编号'].str.startswith('LE') ]

FF['时间'] = pd.to_datetime(FF['时间']).dt.date

print(FF)
FF.to_excel('C:\\Users\\Thinkpad\\Desktop\\临时数据表格\\B.xls')

# 读取Excel中Sheet1中的数据
data = pd.DataFrame(pd.read_excel("C:\\Users\\Thinkpad\\Desktop\\临时数据表格\\B.xls", 'Sheet1'))

# 查看去除重复行的数据,保留最后出现的值
no_re_row = data.drop_duplicates(subset=['时间','设计编号'], keep='last')
no_re_row['时间'] = pd.to_datetime(no_re_row['时间']).dt.date
#删除未命名列
no_re_row = no_re_row[no_re_row.columns.drop(list(no_re_row.filter(regex='Unnamed')))]
# 将去除重复行的数据输出到excel表中
no_re_row.to_excel("C:\\Users\\Thinkpad\\Desktop\\临时数据表格\\LE数值.xls")


data = pd.read_excel('C:\\Users\\Thinkpad\\Desktop\\临时数据表格\\LE数值.xls') #打开表格
#根据设计编号进行分组求和
a = data.groupby('设计编号').sum()
#根据设计编号进行分组求和数据写入临时表ls.xls中
a.to_excel("C:\\Users\\Thinkpad\\Desktop\\临时数据表格\\ls.xls")
#从临时表ls.xls中读取数据
data1 = pd.read_excel('C:\\Users\\Thinkpad\\Desktop\\临时数据表格\\ls.xls')
#从临时表ls.xls中读取设计编号列的数据并转化成list
sjbh = list(data1['设计编号'])
#获取设计编号筛选文本个数
i = len(sjbh)
#遍历获取设计编号文本
k = 0
dk = pd.DataFrame()
while k < i:
    #print(sjbh[k])
    FF = data.loc[data['设计编号'] == sjbh[k]]  # 搜索设计编号中等于sjbh[k]开头的数据
    FF.to_excel("C:\\Users\\Thinkpad\\Desktop\\临时数据表格\\FF.xls", index=False)
    k = k+1
    bb = pd.read_excel("C:\\Users\\Thinkpad\\Desktop\\临时数据表格\\FF.xls", 'Sheet1')
    #获取FF表格中需要获取的列数据
    df = pd.DataFrame({"时间": list(bb["时间"]), "设计编号": list(bb["设计编号"]), "模数值": list(bb["模数值"])})
    df["时间"] = df["时间"].astype("datetime64")  # 确保数据格式为日期
    date_range = pd.date_range(start=s_date, end=e_date, freq="D")  # freq="D"表示按天,可以按分钟,月,季度,年等
    df_date_new = df.set_index("时间").reindex(index=date_range)  # 使用pandas.reindex填充缺失的索引

    df_date_new.to_excel("C:\\Users\\Thinkpad\\Desktop\\临时数据表格\\FF.xls", index=True, index_label="时间")

    data_new = pd.read_excel('C:\\Users\\Thinkpad\\Desktop\\临时数据表格\\FF.xls')  # 打开表格

    df_all = pd.concat([dk, data_new], ignore_index=False)  # concat 合并有相同字段名的dataframe
    print(df_all)
    data_list = df_all.drop_duplicates(keep='first')  # 避免字段名重复写入,一般会做去重处理
    df_all.to_excel("C:\\Users\\Thinkpad\\Desktop\\数据最终处理结果\\LE数值new.xls")  # 写出数据
    # 读取温度new中Sheet1中的数据
    dk = pd.DataFrame(pd.read_excel("C:\\Users\\Thinkpad\\Desktop\\数据最终处理结果\\LE数值new.xls", 'Sheet1'))
    # 删除未命名列
    dk = dk[dk.columns.drop(list(dk.filter(regex='Unnamed')))]
    # 将去除重复行的数据输出到excel表中
    dk.to_excel("C:\\Users\\Thinkpad\\Desktop\\数据最终处理结果\\LE数值new.xls")
    # 读取温度new中Sheet1中的数据
    dk = pd.DataFrame(pd.read_excel("C:\\Users\\Thinkpad\\Desktop\\数据最终处理结果\\LE数值new.xls", 'Sheet1'))


# 时间列只保留年月日格式
dk = pd.read_excel('C:\\Users\\Thinkpad\\Desktop\\数据最终处理结果\\LE数值new.xls') #打开表格
dk['时间'] = pd.to_datetime(dk['时间']).dt.date
# 删除未命名列
dk = dk[dk.columns.drop(list(dk.filter(regex='Unnamed')))]
dk.to_excel('C:\\Users\\Thinkpad\\Desktop\\数据最终处理结果\\LE数值new.xls')
#--------------------------------------------------------------------------------------------------------------------------

print("-----------第二个表格数据结束----------------------")

Python中有多种库可以用来清洗和预处理Excel数据集,最常用的是pandas库。以下是利用pandas进行Excel数据清洗和预处理的一些步骤: 1. **导入库**:首先,需要安装`pandas`库,通常使用`pip install pandas`命令。然后,在代码中导入`pandas`库,以及可能用于读取Excel文件的`openpyxl`或`xlrd`。 ```python import pandas as pd ``` 2. **加载数据**:使用`pd.read_excel()`函数读取Excel文件,传入文件名作为参数。 ```python df = pd.read_excel('example.xlsx') ``` 3. **检查和理解数据**:查看数据的基本信息,如列名、行数、缺失值等。 ```python print(df.head()) # 查看前几行 print(df.info()) # 显示数据描述统计 print(df.isnull().sum()) # 检查缺失值 ``` 4. **数据清洗**: - **处理缺失值**:可以选择删除含有缺失值的行或列(`dropna()`),填充缺失值(`fillna()`或`ffill/bfill()`)。 - **异常值检测**:通过统计分析识别离群值(outliers),并采取相应措施(例如替换为平均值或删除)。 - **标准化或编码**:对于分类变量,可以使用`get_dummies()`将类别转换为数值。 ```python df = df.dropna() # 删除缺失值 df['column_name'] = df['column_name'].fillna(value) # 填充缺失值 df = pd.get_dummies(df, columns=['category_column']) # 类别编码 ``` 5. **数据预处理**: - **转换数据类型**:如果需要,可以使用`astype()`函数改变数据类型。 - **分箱或归一化**:使用`pd.cut()`或sklearn库进行数据缩放。 ```python df['numeric_column'] = df['numeric_column'].astype('float64') # 转换数据类型 df[['bin_column']] = pd.cut(df['bin_column'], bins=5) # 分箱 ``` 6. **保存处理后的数据**:完成清洗和预处理后,可以使用`to_excel()`函数将结果保存回新的Excel文件。 ```python df.to_excel('preprocessed_data.xlsx', index=False) # 保存到新文件 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数字化信息化智能化解决方案

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值