jiexi.zip

  • 飞飞@123
    了解作者
  • Python
    开发工具
  • 4KB
    文件大小
  • zip
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 0
    下载次数
  • 2021-03-28 14:57
    上传日期
解析数据,对采集到的数据进行解析,可以直接更换数据,采集。
jiexi.zip
  • data777_huatu.py
    2KB
  • data_select_777.py
    15.4KB
内容介绍
# -*- coding: utf-8 -*- """ Created on Wed May 29 09:26:15 2019 @author: reoyan """ ''' libpq pkgs/main/osx-64::libpq-11.2-h051b688_0 psycopg2 pkgs/main/osx-64::psycopg2-2.8.4-py37ha12b0ac_0 ''' import matplotlib.pyplot as plt plt.rcParams["font.sans-serif"] = ["Microsoft YaHei"] # plt.rcParams['axes.unicode_minus'] = False # 查看转速与液位关系 from juhang777_extract_data_sql import pd, plt # 读取表 df1_sort = pd.read_excel('E:/jh777_data/JH777-jiexi/data777/data_777_10.xlsx') # 对所有数据根据表中“create_at”时间进行排序,True为升序,False为降序 sort_values()的作用是根据某个字段进行排序 df1_sort = df1_sort.sort_values(by="create_at", ascending=True) # 获取表中“create_at”中的所有数据 df1_sort.index = pd.to_datetime(df1_sort['create_at']) ''' # 显示变量的趋势变化 df1_sort.ch_102_dt.plot() # 图片的标题使用“ch_102_dt”,字体大小为24 plt.title('ch_102_dt', fontsize=24) # 显示图像 plt.show() df1_sort.ch_110_dt.plot() plt.title('ch_110_dt', fontsize=24) plt.show() df1_sort.loc[df1_sort.ch_6_dt >= 0].ch_6_dt.plot() plt.title('ch_6_dt', fontsize=24) plt.show() df1_sort.loc[df1_sort.ch_7_dt >= 0].ch_7_dt.plot() plt.title('ch_7_dt', fontsize=24) plt.show() ''' # 其他表格带来的 # 复制以下字段的数据 # data_98_we_need = df1_sort[['create_at', 'ch_6_dt', 'ch_7_dt', 'gps_latitude', 'gps_longitude', # 'ch_102_dt', 'ch_110_dt']].copy() data_98_we_need = df1_sort[['create_at', 'ch_6_dt', 'ch_7_dt', 'gps_latitude', 'gps_longitude', 'ch_102_dt', 'ch_103_dt', 'ch_104_dt', 'ch_110_dt', 'ch_111_dt']].copy() # 重新赋值给df1_sort df1_sort = data_98_we_need.copy() # 获取表里的全部项目栏 data_98_we_need.columns # 规避不正常的GPS数据,并复制,然后赋值给df1_sort df1_sort = df1_sort.loc[(df1_sort.gps_latitude > -90) & (df1_sort.gps_longitude > -90)].copy() # 保留转速,计算位移 # 创建一个表格 summary_data = pd.DataFrame() # 获取df1_sort指向的表里的全部项目栏 df1_sort.columns # 增加地址编码库 from geopy.distance import geodesic # 获取df1_sort指向的表里以下数据 displacement_temp = df1_sort[['ch_6_dt', 'ch_7_dt', 'gps_latitude', 'gps_longitude']] # 规避不正常的GPS数据,并赋值给displacement_temp displacement_temp = displacement_temp.loc[(displacement_temp.gps_latitude > -90) & (displacement_temp.gps_longitude > -90)] # shift函数是对数据进行移动的操作 如果axis是0或者’index’表示上下移动,如果是1或者’columns’,则会左右移动 # fillna函数 pad/ffill:用前一个非缺失值去填充该缺失值 backfill/bfill:用下一个非缺失值填充该缺失值 displacement_temp['gps_latitude_1'] = displacement_temp['gps_latitude'].shift(axis=0).fillna(method='bfill') displacement_temp['gps_longitude_1'] = displacement_temp['gps_longitude'].shift(axis=0).fillna(method='bfill') # 计算船舶位移 def calculate_displacement(gps_latitude, gps_longitude, gps_latitude_shift, gps_longitude_shift): return geodesic((gps_latitude, gps_longitude), (gps_latitude_shift, gps_longitude_shift)).m displacement_temp['displacement'] = displacement_temp.apply(lambda row: calculate_displacement(row['gps_latitude'], row['gps_longitude'], row['gps_latitude_1'], row['gps_longitude_1']), axis=1) # 判断转速 def clean_displacement(displacement, ch_6_dt, ch_7_dt): if ch_6_dt+ch_7_dt > 0: return displacement if ch_6_dt+ch_7_dt == 0: return 0 displacement_temp['displacement'] = displacement_temp.apply(lambda row: clean_displacement(row['displacement'], row['ch_6_dt'], row['ch_7_dt']), axis=1) # 左发动机总运行时间 def calculate_fadongji_6(ch_6_dt, ch_7_dt): if ch_6_dt > 0: return 1.0 else: return 0 # 右发动机总运行时间 def calculate_fadongji_7(ch_6_dt, ch_7_dt): if ch_7_dt > 0: return 1.0 else: return 0 # 双转时间 def calculate_fadongji_6_7(ch_6_dt, ch_7_dt): if (ch_6_dt > 0)&(ch_7_dt > 0): return 1.0 else: return 0 # 左单时间 def calculate_fadongji_6_one(ch_6_dt, ch_7_dt): if (ch_6_dt > 0)&(ch_7_dt <= 0): return 1.0 else: return 0 # 右单时间 def calculate_fadongji_7_one(ch_6_dt, ch_7_dt): if (ch_7_dt > 0) & (ch_6_dt <= 0): return 1.0 else: return 0 # 发动机平均转速 def calculate_fadianji_single(ch_6_dt, ch_7_dt): if ch_6_dt+ch_7_dt >= 0: return ch_6_dt+ch_7_dt else: return 0 def calculate_fadianji_double(ch_6_dt,ch_7_dt): if ch_6_dt+ch_7_dt >= 0: return (ch_6_dt+ch_7_dt)/2 else: return 0 #风速 def calculate_fengsu_one(ch_104_dt): if ch_104_dt > 0.1: return 1.0 else: return 0 def calculate_fengsu_single(ch_104_dt): if ch_104_dt > 0.1: return ch_104_dt else: return 0 #风向 def calculate_fangsu_one(ch_103_dt): if ch_103_dt > 0.1: return 1.0 else: return 0 def calculate_fangsu_single(ch_103_dt): if ch_103_dt > 0.1: return ch_103_dt else: return 0 # 用函数快速计算输出数据 # 1 电子江图数据 long_river_data = pd.read_excel('E:/jh777_data/JH777-jiexi/long_river_electronic_map.xlsx') long_river_data['channel_mark'] = long_river_data['channel'] + '_' + long_river_data['mark'].apply(str) long_river_data['longitude'] = (long_river_data ['longitude_0'] + long_river_data ['longitude_1'])/2 long_river_data['latitude'] = (long_river_data ['latitude_0'] + long_river_data ['latitude_1'])/2 long_river_test = long_river_data[['longitude', 'latitude', 'channel_mark']] list_data = list(eval(long_river_test.to_json(orient='index')).values()) from math import cos, asin, sqrt def distance(lat1, lon1, lat2, lon2): p = 0.017453292519943295 a = 0.5 - cos((lat2-lat1)*p)/2 + cos(lat1*p)*cos(lat2*p) * (1-cos((lon2-lon1)*p)) / 2 return 12742 * asin(sqrt(a)) def closest_geodesi_1(data, longitude_input, latitude_input): return min(data, key=lambda p: distance(longitude_input, latitude_input, p['longitude'], p['latitude'])) print(closest_geodesi_1(list_data, 114.560337, 30.626410)['channel_mark']) df1_sort['displacement'] = displacement_temp.displacement.copy() df1_sort['mark_labels'] = df1_sort.apply(lambda row: closest_geodesi_1(list_data, row['gps_longitude'], row['gps_latitude'])['channel_mark'], axis=1) # 计算发动机转速情况 df1_sort['fadongji_run_6'] = df1_sort.apply(lambda row: calculate_fadongji_6(row['ch_6_dt'], row['ch_7_dt']), axis=1) df1_sort['fadongji_run_7'] = df1_sort.apply(lambda row: calculate_fadongji_7(row['ch_6_dt'], row['ch_7_dt']), axis=1) df1_sort['fadongji_run_6_7_double'] = df1_sort.apply(lambda row: calculate_fadongji_6_7(row['ch_6_dt'], row['ch_7_dt']), axis=1) df1_sort['fadongji_run_6_single'] = df1_sort.apply(lambda row: calculate_fadong
评论
    相关推荐
    • iOS 数据解析
      本代码案列主要是对XML和JSON的解析做一个演示,希望对大家有用
    • 数据解析xml
      数据解析xml
    • jQuery数据解析
      包括XML、JSON、DOM三种主流数据格式
    • json数据解析
      一个复杂的json数据解析的例子,新手写的,比较渣
    • Json数据解析
      NULL 博文链接:https://676744379-qq-com.iteye.com/blog/1122159
    • cad数据解析
      不过不要紧,不影响整个数据解析),不带有任何第三方库,可移植性好,可用于windows,linux编译后即可直接使用。代码查看后如有问题的,或需要改进的,麻烦请联系我,我们可以共同讨论【握手】。
    • json数据解析
      随时检测json数据格式,自动格式化,方便查找错误
    • URLConnection 数据解析
      URLConnection 数据解析 数据的同步请求 数据的异步请求 #pragma mark -- 异步Block - (void)buttonBlock:(UIButton *)sender { NSLog(@"异步Block"); // 1. 创建网址 NSString *string = kTtpodHomPageURL; ...
    • Json数据解析
      Android json 解析
    • json数据解析
      json数据读取,代码写一个json数据文件,json文件在asset下