123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380 |
- # -*- coding: utf-8 -*-
- """
- Spyder 编辑器
- 这是一个临时脚本文件。
- """
- import os
- import pandas as pd
- pd.set_option('chained_assignment', None)
- select_cols = ['遥测ID号', '风场', '风场几期', '风机号', '测点', '标准化中文', '转发顺序号', 'en_name']
- origin_col_map = {
- 'wind_turbine_number': '风机编号', 'wind_turbine_name': '风机原始名称', 'time_stamp': '时间戳',
- 'active_power': '有功功率', 'rotor_speed': '风轮转速', 'generator_speed': '发电机转速', 'wind_velocity': '风速',
- 'pitch_angle_blade_1': '桨距角1', 'pitch_angle_blade_2': '桨距角2', 'pitch_angle_blade_3': '桨距角3',
- 'cabin_position': '机舱位置', 'true_wind_direction': '绝对风向', 'yaw_error1': '对风角度',
- 'set_value_of_active_power': '有功功率设定值', 'gearbox_oil_temperature': '齿轮箱油温',
- 'generatordrive_end_bearing_temperature': '发电机驱动端轴承温度',
- 'generatornon_drive_end_bearing_temperature': '发电机非驱动端轴承温度', 'cabin_temperature': '机舱内温度',
- 'twisted_cable_angle': '扭缆角度', 'front_back_vibration_of_the_cabin': '机舱前后振动',
- 'side_to_side_vibration_of_the_cabin': '机舱左右振动', 'actual_torque': '实际力矩', 'given_torque': '给定力矩',
- 'clockwise_yaw_count': '顺时针偏航次数', 'counterclockwise_yaw_count': '逆时针偏航次数', 'unusable': '不可利用',
- 'power_curve_available': '功率曲线可用', 'required_gearbox_speed': '齿轮箱转速',
- 'inverter_speed_master_control': '变频器转速(主控)', 'outside_cabin_temperature': '环境温度',
- 'main_bearing_temperature': '主轴承轴承温度',
- 'gearbox_high_speed_shaft_bearing_temperature': '齿轮箱高速轴轴承温度',
- 'gearboxmedium_speed_shaftbearing_temperature': '齿轮箱中速轴轴承温度',
- 'gearbox_low_speed_shaft_bearing_temperature': '齿轮箱低速轴轴承温度',
- 'generator_winding1_temperature': '发电机绕组1温度', 'generator_winding2_temperature': '发电机绕组2温度',
- 'generator_winding3_temperature': '发电机绕组3温度', 'wind_turbine_status': '风机状态1',
- 'wind_turbine_status2': '风机状态2', 'turbulence_intensity': '湍流强度'
- }
- def youyu_measurepoint(df, name):
- df['风场几期'] = df['遥测ID号'].apply(lambda x: x.split(' ')[1].split('_')[1].split('-')[0][0:4])
- df['风场'] = df['风场几期'].apply(lambda x: x[0:len(name)])
- df['风机号'] = df['遥测ID号'].apply(lambda x: x.split(' ')[1].split('_')[1].split('-')[1][0:3])
- df['测点'] = df['遥测ID号'].apply(
- lambda x: ''.join(x.replace('遥测值', '').strip().split(' ')[1:]).split('_')[1].split('-')[1][3:])
- show_measurepoint(df, name + '测点')
- col_mapping = {
- "3#桨叶片角度": "pitch_angle_blade_3",
- "机舱侧向振动(已滤波)": "side_to_side_vibration_of_the_cabin",
- "机舱轴向振动(已滤波)": "front_back_vibration_of_the_cabin",
- "机舱角度": "cabin_position",
- "扭缆角度": "twisted_cable_angle",
- "发电机有功功率": "active_power",
- "发电机驱动端轴承温度": "generatordrive_end_bearing_temperature",
- "发电机非驱动端轴承温度": "generatornon_drive_end_bearing_temperature",
- "发电机定子U相线圈温度": "generator_winding1_temperature",
- "发电机定子V相线圈温度": "generator_winding2_temperature",
- "发电机定子W相线圈温度": "generator_winding3_temperature",
- "绕组温度1": "generator_winding1_temperature",
- "绕组温度2": "generator_winding2_temperature",
- "绕组温度3": "generator_winding3_temperature",
- "舱内温度": "cabin_temperature",
- "舱外温度": "outside_cabin_temperature",
- "风向": "true_wind_direction",
- "风速": "wind_velocity",
- "机舱中轴线与风向夹角": "yaw_error1",
- "1#桨叶片角度": "pitch_angle_blade_1",
- "2#桨叶片角度": "pitch_angle_blade_2",
- "发电机转速": "generator_speed",
- "主轴转速": "rotor_speed",
- "齿轮箱高速轴非驱动端轴承温度": "gearbox_high_speed_shaft_bearing_temperature",
- "齿轮箱油池温度": "gearbox_oil_temperature",
- "齿轮箱中速轴非驱动端轴承温度": "gearboxmedium_speed_shaftbearing_temperature",
- "主轴承外圈温度": "main_bearing_temperature",
- }
- df['en_name'] = df['测点'].map(col_mapping)
- print(df.groupby('en_name').count())
- df.sort_values(by='转发顺序号', inplace=True)
- save_df(df, name + '测点')
- return df
- def pinglu_measurepoint(df, name):
- df['风场几期'] = df['遥测ID号'].apply(lambda x: x.split(' ')[1].split('_')[1].split('-')[0])
- df['风场'] = df['风场几期'].apply(lambda x: x[0:len(name)])
- df['风机号'] = df['遥测ID号'].apply(lambda x: x.split(' ')[2].split('-')[1][0:2])
- df['测点'] = df['遥测ID号'].apply(
- lambda x: ''.join(x.replace('遥测值', '').strip().split(' ')[1:]).split('_')[1].split('-')[1][2:])
- show_measurepoint(df, name + '测点')
- col_mapping = {
- "发电机非驱动端轴承温度": "generatornon_drive_end_bearing_temperature",
- "发电机定子U相线圈温度": "generator_winding1_temperature",
- "发电机定子V相线圈温度": "generator_winding2_temperature",
- "发电机转速": "generator_speed",
- "发电机驱动端轴承温度": "generatordrive_end_bearing_temperature",
- "2#桨叶片角度": "pitch_angle_blade_2",
- "主轴承外圈温度": "main_bearing_temperature",
- "发电机定子W相线圈温度": "generator_winding3_temperature",
- "发电机有功功率": "active_power",
- "主轴转速": "rotor_speed",
- "齿轮箱高速轴非驱动端轴承温度": "gearbox_high_speed_shaft_bearing_temperature",
- "1#桨叶片角度": "pitch_angle_blade_1",
- "舱外温度": "outside_cabin_temperature",
- "舱内温度": "cabin_temperature",
- "风向": "true_wind_direction",
- "机舱中轴线与风向夹角": "yaw_error1",
- "机舱角度": "cabin_position",
- "扭缆角度": "twisted_cable_angle",
- "3#桨叶片角度": "pitch_angle_blade_3",
- "机舱轴向振动(已滤波)": "front_back_vibration_of_the_cabin",
- "风速": "wind_velocity",
- "机舱侧向振动(已滤波)": "side_to_side_vibration_of_the_cabin",
- "齿轮箱高速轴费非驱动端轴承温度": "gearbox_high_speed_shaft_bearing_temperature", # 与“齿轮箱高速轴非驱动端轴承温度”相同
- "机舱角度(位置)": "cabin_position",
- "机舱侧向振动值(已滤波)": "side_to_side_vibration_of_the_cabin",
- "机舱轴向振动值(已滤波)": "front_back_vibration_of_the_cabin",
- "机舱与风向夹角": "yaw_error1",
- "1#桨叶片角度(桨距角)": "pitch_angle_blade_1",
- "2#桨叶片角度(桨距角)": "pitch_angle_blade_2",
- "3#桨叶片角度(桨距角)": "pitch_angle_blade_3",
- "齿轮箱高速轴驱动端轴承温度": "gearbox_high_speed_shaft_bearing_temperature", # 根据规则,齿轮箱高速轴不区分驱动端和非驱动端
- "齿轮箱中间轴非驱动端轴承温度": "gearboxmedium_speed_shaftbearing_temperature",
- }
- df['en_name'] = df['测点'].map(col_mapping)
- print(df.groupby('en_name').count())
- df.sort_values(by='转发顺序号', inplace=True)
- save_df(df, name + '测点')
- return df
- def ruicheng_measurepoint(df, name):
- # 根据芮城数据格式调整字段提取逻辑
- df['风场几期'] = df['遥测ID号'].apply(lambda x: x.split(' ')[1].split('_')[1][0:4])
- df['风场'] = df['风场几期'].apply(lambda x: x[0:len(name)])
- # 假设风机号在第三个分割段中
- df['风机号'] = df['遥测ID号'].apply(lambda x: x.split(' ')[1].split('_')[1][6:9])
- # 测点提取可能需要调整切片位置
- df['测点'] = df['遥测ID号'].apply(
- lambda x: ''.join(x.replace('遥测值', '').strip().split(' ')[1:]).split('_')[1].split('-')[1][3:])
- show_measurepoint(df, name + '测点')
- col_mapping = {
- "1#桨叶片角度": "pitch_angle_blade_1",
- "2#桨叶片角度": "pitch_angle_blade_2",
- "3#桨叶片角度": "pitch_angle_blade_3",
- "舱内温度": "cabin_temperature",
- "舱外温度": "outside_cabin_temperature",
- "齿轮箱高速轴非驱动端轴承温度": "gearbox_high_speed_shaft_bearing_temperature",
- "齿轮箱油池温度": "gearbox_oil_temperature",
- "发电机定子U相线圈温度": "generator_winding1_temperature",
- "发电机定子V相线圈温度": "generator_winding2_temperature",
- "发电机定子W相线圈温度": "generator_winding3_temperature",
- "发电机非驱动端轴承温度": "generatornon_drive_end_bearing_temperature",
- "发电机驱动端轴承温度": "generatordrive_end_bearing_temperature",
- "发电机有功功率": "active_power",
- "发电机转速": "generator_speed",
- "风速": "wind_velocity",
- "风向": "true_wind_direction",
- "机舱侧向振动(已滤波)": "side_to_side_vibration_of_the_cabin",
- "机舱角度": "cabin_position",
- "机舱中轴线与风向夹角": "yaw_error1",
- "机舱轴向振动(已滤波)": "front_back_vibration_of_the_cabin",
- "扭缆角度": "twisted_cable_angle",
- "主轴承外圈温度": "main_bearing_temperature",
- "主轴转速": "rotor_speed",
- "机舱与风向夹角": "yaw_error1",
- "机舱角度(位置)": "cabin_position",
- "1#桨叶片角度(桨距角)": "pitch_angle_blade_1",
- "2#桨叶片角度(桨距角)": "pitch_angle_blade_2",
- "3#桨叶片角度(桨距角)": "pitch_angle_blade_3",
- }
- df['en_name'] = df['测点'].map(col_mapping)
- print(df.groupby('en_name').count())
- df.sort_values(by='转发顺序号', inplace=True)
- save_df(df, name + '测点')
- return df
- def yuxian_measurepoint(df, name):
- # 根据孟县数据格式调整字段提取逻辑
- df['风场几期'] = df['遥测ID号'].apply(lambda x: x.split(' ')[1].split('_')[1].split('-')[0][0:4])
- df['风场'] = df['风场几期'].apply(lambda x: x[0:len(name)])
- # 假设风机号在第三个分割段中
- df['风机号'] = df['遥测ID号'].apply(lambda x: x.split(' ')[1].split('-')[1][0:3])
- # 测点提取可能需要调整切片位置
- df['测点'] = df['遥测ID号'].apply(
- lambda x: ''.join(x.replace('遥测值', '').strip().split(' ')[1:]).split('-')[1][3:])
- show_measurepoint(df, name + '测点')
- col_mapping = {
- "发电机定子W相线圈温度": "generator_winding3_temperature",
- "发电机非驱动端轴承温度": "generatornon_drive_end_bearing_temperature",
- "机舱侧向振动(已滤波)": "side_to_side_vibration_of_the_cabin",
- "风速": "wind_velocity",
- "机舱中轴线与风向夹角": "yaw_error1",
- "1#桨叶片角度": "pitch_angle_blade_1",
- "2#桨叶片角度": "pitch_angle_blade_2",
- "发电机有功功率": "active_power",
- "发电机转速": "generator_speed",
- "风向": "true_wind_direction",
- "发电机驱动端轴承温度": "generatordrive_end_bearing_temperature",
- "机舱轴向振动(已滤波)": "front_back_vibration_of_the_cabin",
- "机舱角度": "cabin_position",
- "扭揽角度": "twisted_cable_angle",
- "发电机定子U相线圈温度": "generator_winding1_temperature",
- "发电机定子V相线圈温度": "generator_winding2_temperature",
- "主轴转速": "rotor_speed",
- "齿轮箱中速轴非驱动端轴承温度": "gearboxmedium_speed_shaftbearing_temperature",
- "齿轮箱高速轴非驱动端轴承温度": "gearbox_high_speed_shaft_bearing_temperature",
- "齿轮箱油池温度": "gearbox_oil_temperature",
- "主轴承外圈温度": "main_bearing_temperature",
- "舱内温度": "cabin_temperature",
- "舱外温度": "outside_cabin_temperature",
- "3#桨叶片角度": "pitch_angle_blade_3",
- "扭缆角度": "twisted_cable_angle",
- "齿轮箱中间轴非驱动端轴承温度": "gearbox_high_speed_shaft_bearing_temperature", # 与“齿轮箱中速轴非驱动端轴承温度”相同
- "主轴(风轮)转速": "rotor_speed",
- "1#桨叶片角度(桨距角)": "pitch_angle_blade_1",
- "2#桨叶片角度(桨距角)": "pitch_angle_blade_2",
- "3#桨叶片角度(桨距角)": "pitch_angle_blade_3",
- "机舱角度(位置)": "cabin_position",
- "机舱侧向振动值(已滤波)": "side_to_side_vibration_of_the_cabin",
- "机舱轴向振动值(已滤波)": "front_back_vibration_of_the_cabin",
- }
- df['en_name'] = df['测点'].map(col_mapping)
- print(df.groupby('en_name').count())
- df.sort_values(by='转发顺序号', inplace=True)
- save_df(df, name + '测点')
- return df
- def gujiao_measurepoint(df, name):
- # 古交数据格式处理
- df['风场几期'] = df['遥测ID号'].apply(lambda x: x.split(' ')[1].split('_')[1].split('-')[0][0:4])
- df['风场'] = df['风场几期'].apply(lambda x: x[0:len(name)])
- # 假设风机号在第三个分割段中
- df['风机号'] = df['遥测ID号'].apply(lambda x: x.split(' ')[1].split('-')[1][0:3])
- # 测点提取可能需要调整切片位置
- df['测点'] = df['遥测ID号'].apply(
- lambda x: ''.join(x.replace('遥测值', '').strip().split(' ')[1:]).split('-')[1][3:])
- show_measurepoint(df, name + '测点')
- col_mapping = {
- "机舱与风向夹角": "yaw_error1",
- "1#桨叶片角度(桨距角)": "pitch_angle_blade_1",
- "2#桨叶片角度(桨距角)": "pitch_angle_blade_2",
- "3#桨叶片角度(桨距角)": "pitch_angle_blade_3",
- "主轴转速": "rotor_speed",
- "齿轮箱高速轴非驱动端轴承温度": "gearbox_high_speed_shaft_bearing_temperature",
- "齿轮箱油池温度": "gearbox_oil_temperature",
- "主轴承外圈温度": "main_bearing_temperature",
- "发电机转速": "generator_speed",
- "发电机驱动端轴承温度": "generatordrive_end_bearing_temperature",
- "发电机非驱动端轴承温度": "generatornon_drive_end_bearing_temperature",
- "发电机定子U相线圈温度": "generator_winding1_temperature",
- "发电机定子V相线圈温度": "generator_winding2_temperature",
- "发电机定子W相线圈温度": "generator_winding3_temperature",
- "舱内温度": "cabin_temperature",
- "舱外温度": "outside_cabin_temperature",
- "风向": "true_wind_direction",
- "机舱角度(位置)": "cabin_position",
- "偏航角度(扭缆角度)": "twisted_cable_angle",
- # "桨叶片角度(桨距角)": ["pitch_angle_blade_1", "pitch_angle_blade_2", "pitch_angle_blade_3"], # 根据具体桨叶选择
- "机舱侧向振动值(已滤波)": "side_to_side_vibration_of_the_cabin",
- "机舱轴向振动值(已滤波)": "front_back_vibration_of_the_cabin",
- "风速": "wind_velocity",
- "发电机有功功率": "active_power",
- }
- df['en_name'] = df['测点'].map(col_mapping)
- print(df.groupby('en_name').count())
- df.sort_values(by='转发顺序号', inplace=True)
- save_df(df, name + '测点')
- return df
- def shilou_measurepoint(df, name):
- # 石楼数据格式处理
- df['风场几期'] = df['遥测ID号'].apply(lambda x: x.split(' ')[1].split('_')[1].split('-')[0][0:4])
- df['风场'] = df['风场几期'].apply(lambda x: x[0:len(name)])
- # 假设风机号在第三个分割段中
- df['风机号'] = df['遥测ID号'].apply(lambda x: x.split(' ')[1].split('-')[1][0:3])
- # 测点提取可能需要调整切片位置
- df['测点'] = df['遥测ID号'].apply(
- lambda x: ''.join(x.replace('遥测值', '').strip().split(' ')[1:]).split('-')[1][3:])
- show_measurepoint(df, name + '测点')
- col_mapping = {
- "舱内温度": "cabin_temperature",
- "舱外温度": "outside_cabin_temperature",
- "偏航角度(扭缆角度)": "twisted_cable_angle",
- "风向": "true_wind_direction",
- "风速": "wind_velocity",
- "机舱中轴线与风向夹角": "yaw_error1",
- "1#桨叶片角度": "pitch_angle_blade_1",
- "2#桨叶片角度": "pitch_angle_blade_2",
- "3#桨叶片角度": "pitch_angle_blade_3",
- "主轴转速": "rotor_speed",
- "机舱轴向振动(已滤波)": "front_back_vibration_of_the_cabin",
- "发电机有功功率": "active_power",
- "发电机转速": "generator_speed",
- "机舱与风向夹角": "yaw_error1",
- "1#桨叶片角度(桨距角)": "pitch_angle_blade_1",
- "2#桨叶片角度(桨距角)": "pitch_angle_blade_2",
- "3#桨叶片角度(桨距角)": "pitch_angle_blade_3",
- "齿轮箱油池温度": "gearbox_oil_temperature",
- "主轴后轴承温度": "main_bearing_temperature", # 根据规则,主轴后轴承温度对应 main_bearing_temperature
- "发电机驱动端轴承温度": "generatordrive_end_bearing_temperature",
- "发电机非驱动端轴承温度": "generatornon_drive_end_bearing_temperature",
- "齿轮箱高速轴非驱动端轴承温度": "gearbox_high_speed_shaft_bearing_temperature",
- "发电机定子U相线圈温度": "generator_winding1_temperature",
- "发电机定子V相线圈温度": "generator_winding2_temperature",
- "发电机定子W相线圈温度": "generator_winding3_temperature",
- "机舱侧向振动值(已滤波)": "side_to_side_vibration_of_the_cabin",
- "机舱轴向振动值(已滤波)": "front_back_vibration_of_the_cabin",
- "齿轮箱中速轴非驱动端轴承温度": "gearboxmedium_speed_shaftbearing_temperature",
- "机舱角度(位置)": "cabin_position",
- }
- df['en_name'] = df['测点'].map(col_mapping)
- print(df.groupby('en_name').count())
- df.sort_values(by='转发顺序号', inplace=True)
- save_df(df, name + '测点')
- return df
- def show_measurepoint(df, name):
- print(f'--------{name}-----------')
- for cn_name in df['测点'].unique():
- print(f"{cn_name}:'',")
- print('-------------------')
- def save_df(df, name):
- df['遥测ID号'] = df['遥测ID号'].apply(lambda x: x.replace('遥测定义表 ', '').replace('遥测值', '').strip())
- df['标准化中文'] = df['en_name'].map(origin_col_map)
- df.to_csv(r'C:\Users\wzl\Desktop\中广核104测点\2404' + os.sep + str(name) + '.csv',
- columns=select_cols,
- index=False, encoding='utf8')
- if __name__ == '__main__':
- df = pd.read_csv(r"D:\data\tmp\2404ZF.csv", encoding='gbk')
- # 添加右玉处理
- youyu_df = youyu_measurepoint(df[df['遥测ID号'].str.contains('右玉')], '右玉')
- # 添加平陆处理
- pinglu_df = pinglu_measurepoint(df[df['遥测ID号'].str.contains('平陆')], '平陆')
- # 添加芮城处理
- ruicheng_df = ruicheng_measurepoint(df[df['遥测ID号'].str.contains('芮城')], '芮城')
- # 添加盂县处理
- yuxian_df = yuxian_measurepoint(df[df['遥测ID号'].str.contains('盂县')], '盂县')
- # 添加古交处理
- gujiao_df = gujiao_measurepoint(df[df['遥测ID号'].str.contains('古交')], '古交')
- # 添加石楼处理
- shilou_df = shilou_measurepoint(df[df['遥测ID号'].str.contains('石楼')], '石楼')
- result_df = pd.concat([youyu_df, pinglu_df, ruicheng_df, yuxian_df, gujiao_df, shilou_df])
- save_df(result_df, '2404测点')
|