import os import sys import pandas as pd from pandas import Series from datetime import datetime pd.options.mode.chained_assignment = None # default='warn' pd.set_option('display.precision', 1) pd.set_option('display.max_rows', None) YearStart=sys.argv[1] YearEnd=sys.argv[2] #InMonth=sys.argv[3] def lat_lon_to_float(v): # Convert strings from NHC file (Lat Lon with N/S and W/E to floats) if (v[-1] == 'S') or (v[-1] =='W'): multiplier = -1 else: multiplier = 1 return float(v[:-1]) * multiplier AnnualList = [['YEAR','NAME','Lat','Lon','Reg']] SummaryList = [] SummDFCols = ['YEAR', 'MDR', 'GMX', 'EXT','Total', 'MDRFrac','GMXFrac','EXTFrac'] data = [] data2= [] with open('atl_hurdat.csv','r') as f: for line in f.readlines(): if line.startswith('AL'): storm_id =line.split(',') storm_id.pop() # storm_id_str=','.join([str(elem) for elem in storm_id]) storm_numberFull = storm_id[0].strip() storm_name = storm_id[1].strip() basin = storm_numberFull[0:2] storm_number = int(storm_numberFull[2:4]) storm_year = int(storm_numberFull[4:]) else: location_line = line.split(',') location_line.pop() # location_line_str=','.join([str(elem) for elem in location_line]) #print(location_line) dt = datetime.strptime(location_line[0]+ location_line[1], '%Y%m%d %H%M') dy = datetime.strptime(location_line[0], '%Y%m%d') mody= int(location_line[0][4:8]) hr = int(location_line[1][1:3]) mns = int(location_line[1][3:5]) lfall = location_line[2].strip() storm_status = location_line[3].strip() storm_lat = lat_lon_to_float(location_line[4].strip()) storm_lon = lat_lon_to_float(location_line[5].strip()) max_wind = int(location_line[6].strip()) data.append([basin, storm_number, storm_year, storm_name,storm_status, storm_lat, storm_lon, lfall, dt, dy, mody, hr, mns, max_wind]) # data2.append([storm_id_str,location_line_str]) #bigdf=pd.DataFrame(data2,columns=['id','locline']) #s=bigdf['id'] #p=s.str.split(pat=",",expand=True) #s=bigdf['locline'] #t=s.str.split(pat=",",expand=True) #newBigdf=pd.concat([p,t],axis=1,join="inner") #print(newBigdf) #newBigdf.to_csv('./atl_hurdat.csv') df = pd.DataFrame(data, columns=['Basin','StormNumber', 'StormYear', 'StormName', 'StormStatus', 'Lat', 'Lon', 'LandFall','Date_Time', 'Day', 'MODY','Hour', 'Minutes','MaxWind']) df['MaxWSqd']=df['MaxWind']*df['MaxWind'] df.drop(df[df['StormYear']95].index[0] MHLat= dfName.loc[[IndexFirstMH],['Lat']].loc[IndexFirstMH][0] MHLon= dfName.loc[[IndexFirstMH],['Lon']].loc[IndexFirstMH][0] MHDay= datetime.strftime(dfName.loc[[IndexFirstMH],['Date_Time']].loc[IndexFirstMH][0],"%m%d%H%M") except: pass # print(StormName + " didn't find HU and > 95") IndexMaxWnd=dfName['MaxWind'].idxmax() MW=dfName.loc[[IndexMaxWnd],['MaxWind']].loc[IndexMaxWnd][0] MWLat= dfName.loc[[IndexMaxWnd],['Lat']].loc[IndexMaxWnd][0] MWLon= dfName.loc[[IndexMaxWnd],['Lon']].loc[IndexMaxWnd][0] MWDay= datetime.strftime(dfName.loc[[IndexMaxWnd],['Date_Time']].loc[IndexMaxWnd][0],"%m%d%H%M") # print(yr,num,StormName,MW, MWLat, MWLon, MWDay, TDLat,TDLon,TDDay,TSLat,TSLon,TSDay,HULat,HULon,HUDay,MHLat,MHLon,MHDay) SummaryList.append([yr,num,StormName,MW, MWLat, MWLon, MWDay, TDLat,TDLon,TDDay,TSLat,TSLon,TSDay,HULat,HULon,HUDay,MHLat,MHLon,MHDay]) #print(AnnualList) #print(SummaryList) SummDFCols=['Year','StmNum','Name','MaxWnd','MxWndMODATIME','MxWndLat','MxWndLon','DepMODATIME', 'DepLat','DepLon','NSMODATIME','NSLat','NSLon','HRMODATIME','HRLat','HRLON','MHMODATIME','MHLat','MHLON'] SummaryDF=pd.DataFrame(SummaryList, columns=SummDFCols) #SummaryDF.loc['mean']=SummaryDF.mean() #SummaryDF.loc['median']=SummaryDF.median() print(SummaryDF) SummaryDF.to_csv("./StatsForStan.csv", index=False) #os.system('more ./ATL_1950_Present_Stats.csv')