Intro to Pandas¶
Pandas is a Python library that provides a sophisticated data structure for organization and analysis. It excels at categorizing data and at time series operations.
Check out: https://pandas.pydata.org/pandas-docs/stable/10min.html https://www.youtube.com/watch?v=F6kmIpWWEdU
Advantages of Pandas
- Can read many files: .xls, .csv, any delimited text file, as well as JSON and SQL.
- Very smart with identifying data types, e.g. text, integer, float, or even dates.
- Allows data indexing along row, column or subrow or subcolumn.
- Contains many built-in analysis functions for operating on DataFrames and Series.
- Handles missing or empty data.
(c)dataquest.io
The Pandas DataFrame allows us to load a complicated file into Python and perform multiple data manipulations efficiently, and without having to recast the data.
pd.Series() is analogous to a 1D array, pd.DataFrame() is analogous to a 2D array.
By using indexes to help categorize data and provide a hierarchy of categories. Index applies to row categories.
The column categories are just columns.
In [1]:
import pandas as pd
In [2]:
freight = pd.read_excel('ScienceInventory_Ioffe.xlsx')
#freight = pd.read_excel('ScienceInventory_Ioffe.xlsx',index_col='Institution')
In [3]:
freight.head() # Plot the first five rows of the dataframe
Out[3]:
Number | Name/Description | Institution | Weight (lbs) | LxWxH (in) | Last Location | |
---|---|---|---|---|---|---|
0 | 1.0 | Jelly | URI Geotracerkitchen | 111.0 | 33x27x16 | Geophysical Lab |
1 | 2.0 | Narwhal superhero | URI Geotracerkitchen | 74.0 | 28x19x16 | Geophysical Lab |
2 | 3.0 | Lancaster | URI Geotracerkitchen | 100.0 | 28x19x16 | Geophysical Lab |
3 | 4.0 | Guante | URI Geotracerkitchen | 70.0 | 28x19x16 | Geophysical Lab |
4 | 5.0 | Cooler 2 | URI Geotracerkitchen | 42.0 | 26x17x12 | Geophysical Lab |
In [4]:
# Pandas automatically fills in empty data with NaNs.
freight.tail() # Plot the last five rows of the dataframe
Out[4]:
Number | Name/Description | Institution | Weight (lbs) | LxWxH (in) | Last Location | |
---|---|---|---|---|---|---|
61 | NaN | NaN | NaN | NaN | NaN | NaN |
62 | NaN | Contact: | NaN | NaN | NaN | NaN |
63 | NaN | Brice Loose, U. of Rhode Island | NaN | NaN | NaN | NaN |
64 | NaN | Email: bloose@uri.edu | NaN | NaN | NaN | NaN |
65 | NaN | Tel: +1 401.874.6676 | NaN | NaN | NaN | NaN |
In [5]:
# Pandas is fairly clever about determining the right data type for each column.
# If it can't determine, the default is text and the dtype is "object".
freight.info()
RangeIndex: 66 entries, 0 to 65 Data columns (total 6 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 Number 57 non-null float64 1 Name/Description 60 non-null object 2 Institution 56 non-null object 3 Weight (lbs) 53 non-null float64 4 LxWxH (in) 53 non-null object 5 Last Location 56 non-null object dtypes: float64(2), object(4) memory usage: 3.2+ KB
In [6]:
freight.values # You can extract a generic array from the Pandas dataframe, using the .values attribute.
Out[6]:
array([[1.0, 'Jelly', 'URI Geotracerkitchen', 111.0, '33x27x16', 'Geophysical Lab'], [2.0, 'Narwhal superhero', 'URI Geotracerkitchen', 74.0, '28x19x16', 'Geophysical Lab'], [3.0, 'Lancaster', 'URI Geotracerkitchen', 100.0, '28x19x16', 'Geophysical Lab'], [4.0, 'Guante', 'URI Geotracerkitchen', 70.0, '28x19x16', 'Geophysical Lab'], [5.0, 'Cooler 2', 'URI Geotracerkitchen', 42.0, '26x17x12', 'Geophysical Lab'], [6.0, 'Earl', 'URI Geotracerkitchen', 112.0, '26x17x12', 'Geophysical Lab'], [7.0, 'Barton1', 'Florida Intl. U', 80.0, '26x26x24', 'Geophysical Lab'], [8.0, 'Barton2', 'Florida Intl. U', 60.0, '26x26x16', 'Geophysical Lab'], [9.0, 'Yellow Pellican Case, VIMS WM', 'Virginia Inst. Marine Science', 53.0, '32x21x12', 'Geophysical Lab'], [10.0, 'VIMS- Tan shipping crate containing Slocum electric glider containing lithium batteries and toolbox- FRAGILE', 'Virginia Inst. Marine Science', 500.0, '95 x 29 x 35', 'Stern Hold'], [11.0, 'Tall cardboard box with Patagonia Gear', 'URI Inner Space Center', 25.0, '36x15x15', 'Mud Room'], [12.0, 'Blue Bin Ziptied, Office Supplies label', 'URI Inner Space Center', 25.0, '30x18x12', 'Mud Room'], [13.0, 'Blue Bin labeled Brice Loose', 'URI Inner Space Center', 25.0, '30x18x12', 'Mud Room'], [14.0, '4 Imprint cardboard box', 'URI Inner Space Center', 25.0, '30x20x15', 'Mud Room'], [15.0, 'Hot hands box from Kobayashi Industries', 'URI Inner Space Center', 10.0, '24x12x10', 'Geophysical Lab'], [16.0, 'Box with "Delta Luggage tape" contains Hot Hands', 'URI Inner Space Center', 15.0, '8x10x18', 'Geophysical Lab'], [17.0, 'Zarges case, C511, UIC Crary Lab', 'U. Illinois Chicago', 80.0, '22x22x16', 'Geophysical Lab'], [18.0, 'Zarges case, C511, UIC Crary Lab', 'U. Illinois Chicago', 80.0, '30x22x16', 'Geophysical Lab'], [19.0, 'Picarro H2O case, cardboard', 'U. Illinois Chicago', 53.0, '23.5x25x12', 'Geophysical Lab'], [20.0, 'Picarro Analyzer, cardboard (box in a box in a box)', 'U. Illinois Chicago', 78.0, '30x36x17', 'Geophysical Lab'], [21.0, 'ISC - Mobile Telepresence Unit Transmission Rack(1/2) (labeled with white X)', 'URI Inner Space Center', 60.0, '22x27x24', '06 Deck, Communications Room'], [22.0, 'ISC - Mobile Telepresence Unit Production Rack (2/2) (labeled with white X))', 'URI Inner Space Center', 40.0, '12x22x19', '06 Deck, Communications Room'], [23.0, 'ISC - Dark Grey Camera Bag (1/2) (labeled with white X)', 'URI Inner Space Center', 10.0, '13x9x25', '06 Deck, Communications Room'], [24.0, 'ISC - Dark Grey Camera Bag (2/2) (labeled with white X)', 'URI Inner Space Center', 10.0, '13x9x25', '06 Deck, Communications Room'], [25.0, 'ISC - Black Pelican Case (audio/video cabling) (labeled with white X)', 'URI Inner Space Center', 80.0, '25x20x13', '06 Deck, Communications Room'], [26.0, 'ISC - Black Pelican Case - Blackmagic video production switcher and router (labeled with white X)', 'URI Inner Space Center', 80.0, '25x20x13', '06 Deck, Communications Room'], [27.0, 'ISC - Black Pelican Case Production accessories i.e batteries, hard drives, audio accessories, a/v signal converters (labeled with white X)', 'URI Inner Space Center', 70.0, '16x26x24', '06 Deck, Communications Room'], [28.0, 'ISC - Black Pelican Case (audio/video/telepresence accessories) (labeled with white X)', 'URI Inner Space Center', 70.0, '16x26x24', '06 Deck, Communications Room'], [29.0, 'ISC - Tripod Case (labeled with white X)', 'URI Inner Space Center', 15.0, '36x8x8', '06 Deck, Communications Room'], [30.0, 'ISC - Black Tote Grey Lid (labeled with white X)', 'URI Inner Space Center', 40.0, '15x16x26', '06 Deck, Communications Room'], [31.0, 'ISC - Olive Green Pelican - RF Communications gear, iridium sat phone, Electric Tool kit (labeled with white X)', 'URI Inner Space Center', 80.0, '16x26x24', '06 Deck, Communications Room'], [32.0, 'ISC - Cardboard box with Monitor (1/2) (labeled with white X)', 'URI Inner Space Center', 10.0, '14x24x6', '06 Deck, Communications Room'], [33.0, 'ISC - Cardboard box with Monitor (2/2) (labeled with white X)', 'URI Inner Space Center', 10.0, '14x24x6', '06 Deck, Communications Room'], [34.0, 'Behringer audio mixer (1/2) (labeled with white X)', 'URI Inner Space Center', 10.0, '12x20x4', '06 Deck, Communications Room'], [35.0, 'Behringer audio mixer (1/2) (labeled with white X)', 'URI Inner Space Center', 10.0, '12x20x4', '06 Deck, Communications Room'], [39.0, 'Dive tank w/ Air', 'U. Illinois Chicago', 30.0, '10dia x 34', 'Expedition Room'], [40.0, 'Green Tank of Compressed Gases', 'URI Geotracerkitchen', 40.0, '10dia x 48"', 'Expedition Room'], [41.0, 'Silver Tank of Compressed Gases', 'URI Geotracerkitchen', 40.0, '10dia x 48"', 'Expedition Room'], [42.0, 'Green Tank of Compressed Air', 'Airgas', 95.0, '12dia x 60"', 'Expedition Room'], [43.0, 'Green Tank of Compressed Air', 'Airgas', 95.0, '12dia x 60"', 'Expedition Room'], [44.0, 'Greend Tank of Ultra-High Purity N2', 'Airgas', 95.0, '12dia x 60"', 'Back Deck'], [45.0, 'Two ladders in the area of the back deck.', 'Virginia Inst. Marine Science', 15.0, '12dia x 60"', 'Back Deck'], [46.0, 'Shakleton, Aluminum Case', 'URI Geotracerkitchen', 65.0, '28x19x16', 'Geophysical Lab'], [47.0, 'Franklin, Aluminum Case', 'URI Geotracerkitchen', 65.0, '28x19x16', 'Geophysical Lab'], [48.0, 'Chaquita, Gray plastic case', 'URI Geotracerkitchen', 50.0, '24x18x15', 'Stern Hold'], [49.0, 'Cradle, Gray plastic case', 'URI Geotracerkitchen', 50.0, '24x18x15', 'Stern Hold'], [50.0, 'Kovacs, Gray plastic case', 'URI Geotracerkitchen', 30.0, '40x8x8', 'Stern Hold'], [51.0, 'Hose Reel (yellow) on pallet with submersible pump, by smoking area', 'URI Geotracerkitchen', 85.0, '20x20x36', 'By Smoking Area'], [52.0, 'Aluminum Zarges Case with spare Goulds Bruiser Pump, 4 flow meters, 2 cotends.', 'URI Geotracerkitchen', 45.0, '24x18x15', 'unknown location, arrived on pallet with Niskin bottles and immersion suits'], [53.0, 'Qty 4 General Oceanics 10 L Niskin Water Bottles for water sampling', 'URI Geotracerkitchen', 10.0, '40"', 'Stern Hold behind cage.'], [55.0, 'Gray Plastic Box with U. Laval label', 'U. of Laval', 40.0, '24x18x15', 'Geophysical Lab'], [56.0, 'Gray Plastic Box with U. Laval label', 'U. of Laval', 45.0, '24x18x15', 'Geophysical Lab'], [57.0, 'Cooler with U. Laval label', 'U. of Laval', 45.0, '30x18x15', 'Geophysical Lab'], [58.0, 'Qty 20 immersion suits, most of which were in their own dry bags.\xa0', 'URI Inner Space Center', nan, nan, 'unknown location, arrived on pallet with Niskin bottles and immersion suits'], [59.0, '4 mustang suits, packed into a cardboard box.', 'URI Inner Space Center', nan, nan, 'unknown location, arrived on pallet with Niskin bottles and immersion suits'], [60.0, '2 plankton nets in"paper wrapping"', 'URI Inner Space Center', nan, nan, 'unknown location, arrived on pallet with Niskin bottles and immersion suits'], [61.0, nan, nan, nan, nan, nan], [nan, nan, nan, nan, nan, nan], [nan, nan, nan, nan, nan, nan], [nan, nan, nan, nan, nan, nan], [nan, nan, nan, nan, nan, nan], [nan, nan, nan, nan, nan, nan], [nan, 'Contact:', nan, nan, nan, nan], [nan, 'Brice Loose, U. of Rhode Island', nan, nan, nan, nan], [nan, 'Email: bloose@uri.edu', nan, nan, nan, nan], [nan, 'Tel: +1 401.874.6676', nan, nan, nan, nan]], dtype=object)
In [7]:
# Change the row index to the 'Institution', instead of the numeric row number.
# This provides another level of organization and data access, a little bit like an SQL relational database.
freight = freight.set_index('Institution')
In [8]:
freight.head()
Out[8]:
Number | Name/Description | Weight (lbs) | LxWxH (in) | Last Location | |
---|---|---|---|---|---|
Institution | |||||
URI Geotracerkitchen | 1.0 | Jelly | 111.0 | 33x27x16 | Geophysical Lab |
URI Geotracerkitchen | 2.0 | Narwhal superhero | 74.0 | 28x19x16 | Geophysical Lab |
URI Geotracerkitchen | 3.0 | Lancaster | 100.0 | 28x19x16 | Geophysical Lab |
URI Geotracerkitchen | 4.0 | Guante | 70.0 | 28x19x16 | Geophysical Lab |
URI Geotracerkitchen | 5.0 | Cooler 2 | 42.0 | 26x17x12 | Geophysical Lab |
In [9]:
freight['Weight (lbs)']['U. Illinois Chicago'] # Report the weights column for UIC freight.
Out[9]:
Institution U. Illinois Chicago 80.0 U. Illinois Chicago 80.0 U. Illinois Chicago 53.0 U. Illinois Chicago 78.0 U. Illinois Chicago 30.0 Name: Weight (lbs), dtype: float64
In [11]:
freight['Weight (lbs)']['U. Illinois Chicago'].sum() # Do arithmetic on on the UIC freight.
Out[11]:
321.0
In [12]:
freight['U. Illinois Chicago']['Weight (lbs)'].sum() # Pandas specifies column indices first, then row indices.
--------------------------------------------------------------------------- KeyError Traceback (most recent call last) File ~/opt/anaconda3/lib/python3.9/site-packages/pandas/core/indexes/base.py:3621, in Index.get_loc(self, key, method, tolerance) 3620 try: -> 3621 return self._engine.get_loc(casted_key) 3622 except KeyError as err: File ~/opt/anaconda3/lib/python3.9/site-packages/pandas/_libs/index.pyx:136, in pandas._libs.index.IndexEngine.get_loc() File ~/opt/anaconda3/lib/python3.9/site-packages/pandas/_libs/index.pyx:163, in pandas._libs.index.IndexEngine.get_loc() File pandas/_libs/hashtable_class_helper.pxi:5198, in pandas._libs.hashtable.PyObjectHashTable.get_item() File pandas/_libs/hashtable_class_helper.pxi:5206, in pandas._libs.hashtable.PyObjectHashTable.get_item() KeyError: 'U. Illinois Chicago' The above exception was the direct cause of the following exception: KeyError Traceback (most recent call last) Input In [12], in() ----> 1 freight['U. Illinois Chicago']['Weight (lbs)'].sum() File ~/opt/anaconda3/lib/python3.9/site-packages/pandas/core/frame.py:3505, in DataFrame.__getitem__(self, key) 3503 if self.columns.nlevels > 1: 3504 return self._getitem_multilevel(key) -> 3505 indexer = self.columns.get_loc(key) 3506 if is_integer(indexer): 3507 indexer = [indexer] File ~/opt/anaconda3/lib/python3.9/site-packages/pandas/core/indexes/base.py:3623, in Index.get_loc(self, key, method, tolerance) 3621 return self._engine.get_loc(casted_key) 3622 except KeyError as err: -> 3623 raise KeyError(key) from err 3624 except TypeError: 3625 # If we have a listlike key, _check_indexing_error will raise 3626 # InvalidIndexError. Otherwise we fall through and re-raise 3627 # the TypeError. 3628 self._check_indexing_error(key) KeyError: 'U. Illinois Chicago' |
In [19]:
# Read in a text file that is delimited by whitespace. '\s+' allows multiple whitespace characters to exist
# between each entry.
# If file has a header, you need to tell read_csv() how many rows to skip, or it will misinterpret the shape of the
# dataframe.
ts = pd.read_csv('20151028 blank test.asc',sep='\t',skiprows=7,parse_dates=[0,3])
print(ts.info())
ts.head()
RangeIndex: 167 entries, 0 to 166 Data columns (total 10 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 Time 167 non-null datetime64[ns] 1 Time Relative [s] 167 non-null float64 2 Ion Current [A] 167 non-null float64 3 Time.1 166 non-null datetime64[ns] 4 Time Relative [s].1 166 non-null float64 5 Ion Current [A].1 166 non-null float64 6 Time.2 166 non-null object 7 Time Relative [s].2 166 non-null float64 8 Ion Current [A].2 166 non-null float64 9 Unnamed: 9 0 non-null float64 dtypes: datetime64[ns](2), float64(7), object(1) memory usage: 13.2+ KB None
Out[19]:
Time | Time Relative [s] | Ion Current [A] | Time.1 | Time Relative [s].1 | Ion Current [A].1 | Time.2 | Time Relative [s].2 | Ion Current [A].2 | Unnamed: 9 | |
---|---|---|---|---|---|---|---|---|---|---|
0 | 2015-10-28 17:19:52 | 1.163 | 1.168035e-11 | 2015-10-28 17:19:52 | 1.754 | 5.023514e-12 | 10/28/2015 5:19:53 PM | 2.348 | 2.577793e-13 | NaN |
1 | 2015-10-28 17:19:56 | 5.148 | 1.072952e-11 | 2015-10-28 17:19:56 | 5.687 | 4.438980e-12 | 10/28/2015 5:19:57 PM | 6.227 | 2.177833e-13 | NaN |
2 | 2015-10-28 17:19:59 | 8.924 | 1.005405e-11 | 2015-10-28 17:20:00 | 9.463 | 4.030143e-12 | 10/28/2015 5:20:01 PM | 10.001 | 2.158301e-13 | NaN |
3 | 2015-10-28 17:20:03 | 12.697 | 9.548497e-12 | 2015-10-28 17:20:04 | 13.235 | 3.707905e-12 | 10/28/2015 5:20:04 PM | 13.775 | 2.172714e-13 | NaN |
4 | 2015-10-28 17:20:07 | 16.470 | 9.157520e-12 | 2015-10-28 17:20:08 | 17.008 | 3.443559e-12 | 10/28/2015 5:20:08 PM | 17.548 | 2.248096e-13 | NaN |
In [23]:
# This is timeseries data, so we should utilize a datetime data type as the row index.
# First, we have to create datetime.
fname = 'timeseries2.txt'
# Read in the data and specify columns 3 and 4 - date and time as string data type.
ts = pd.read_csv(fname,sep=',',skiprows=1,header=None,dtype={4:'str',5:'str'})
# Add the strings together, convert them to a datetime and save the result in column 3.
ts[4] = pd.to_datetime(ts[4]+' '+ts[5])
ts.info()
RangeIndex: 1000 entries, 0 to 999 Data columns (total 24 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 0 1000 non-null int64 1 1 1000 non-null int64 2 2 1000 non-null int64 3 3 1000 non-null int64 4 4 1000 non-null datetime64[ns] 5 5 1000 non-null object 6 6 1000 non-null int64 7 7 1000 non-null float64 8 8 1000 non-null float64 9 9 1000 non-null float64 10 10 1000 non-null float64 11 11 1000 non-null int64 12 12 1000 non-null int64 13 13 1000 non-null float64 14 14 1000 non-null object 15 15 1000 non-null int64 16 16 1000 non-null int64 17 17 1000 non-null int64 18 18 1000 non-null float64 19 19 1000 non-null float64 20 20 1000 non-null int64 21 21 1000 non-null int64 22 22 1000 non-null float64 23 23 1000 non-null int64 dtypes: datetime64[ns](1), float64(8), int64(13), object(2) memory usage: 187.6+ KB
In [24]:
# Set the index to be the datetime column.
ts.set_index(ts[4],inplace=True)
ts.head()
Out[24]:
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | ... | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
4 | |||||||||||||||||||||
2019-12-31 19:05:00 | 0 | 54796 | 20200101 | 5 | 2019-12-31 19:05:00 | 1905 | 3 | -71.54 | 41.49 | 2.4 | ... | C | 0 | 90 | 0 | -99.0 | -9999.0 | 1257 | 0 | 1.21 | 0 |
2019-12-31 19:10:00 | 1 | 54796 | 20200101 | 10 | 2019-12-31 19:10:00 | 1910 | 3 | -71.54 | 41.49 | 2.3 | ... | C | 0 | 90 | 0 | -99.0 | -9999.0 | 1260 | 0 | 0.85 | 0 |
2019-12-31 19:15:00 | 2 | 54796 | 20200101 | 15 | 2019-12-31 19:15:00 | 1915 | 3 | -71.54 | 41.49 | 2.2 | ... | C | 0 | 90 | 0 | -99.0 | -9999.0 | 1261 | 0 | 0.92 | 0 |
2019-12-31 19:20:00 | 3 | 54796 | 20200101 | 20 | 2019-12-31 19:20:00 | 1920 | 3 | -71.54 | 41.49 | 2.0 | ... | C | 0 | 90 | 0 | -99.0 | -9999.0 | 1261 | 0 | 0.60 | 0 |
2019-12-31 19:25:00 | 4 | 54796 | 20200101 | 25 | 2019-12-31 19:25:00 | 1925 | 3 | -71.54 | 41.49 | 1.9 | ... | C | 0 | 90 | 0 | -99.0 | -9999.0 | 1261 | 0 | 0.60 | 0 |
5 rows × 24 columns
In [27]:
# Pandas provides capabilities to manipulate the time base in your timeseries dataframe. These are possible, once
# you specify a datetime or time column as the row index, as we did above.
# Upsample, but don't replace the values by any interpolation method.
#ts.resample('1min').asfreq()
# Upsample, but replace the values by the constant forward fill method.
#ts.resample('1min').pad()
# Upsample, but replace the values by a linear interpolation.
# ts.resample('1min').interpolate()
Out[27]:
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | ... | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
4 | |||||||||||||||||||||
2019-12-31 19:05:00 | 0.0 | 54796.0 | 20200101.0 | 5.0 | 2019-12-31 19:05:00 | 1905 | 3.0 | -71.54 | 41.49 | 2.40 | ... | C | 0.0 | 90.0 | 0.0 | -99.0 | -9999.0 | 1257.0 | 0.0 | 1.210 | 0.0 |
2019-12-31 19:06:00 | 0.2 | 54796.0 | 20200101.0 | 6.0 | NaT | NaN | 3.0 | -71.54 | 41.49 | 2.38 | ... | NaN | 0.0 | 90.0 | 0.0 | -99.0 | -9999.0 | 1257.6 | 0.0 | 1.138 | 0.0 |
2019-12-31 19:07:00 | 0.4 | 54796.0 | 20200101.0 | 7.0 | NaT | NaN | 3.0 | -71.54 | 41.49 | 2.36 | ... | NaN | 0.0 | 90.0 | 0.0 | -99.0 | -9999.0 | 1258.2 | 0.0 | 1.066 | 0.0 |
2019-12-31 19:08:00 | 0.6 | 54796.0 | 20200101.0 | 8.0 | NaT | NaN | 3.0 | -71.54 | 41.49 | 2.34 | ... | NaN | 0.0 | 90.0 | 0.0 | -99.0 | -9999.0 | 1258.8 | 0.0 | 0.994 | 0.0 |
2019-12-31 19:09:00 | 0.8 | 54796.0 | 20200101.0 | 9.0 | NaT | NaN | 3.0 | -71.54 | 41.49 | 2.32 | ... | NaN | 0.0 | 90.0 | 0.0 | -99.0 | -9999.0 | 1259.4 | 0.0 | 0.922 | 0.0 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
2020-01-04 06:16:00 | 998.2 | 54796.0 | 20200104.0 | 1116.0 | NaT | NaN | 3.0 | -71.54 | 41.49 | 6.30 | ... | NaN | 0.0 | 97.0 | 0.0 | -99.0 | -9999.0 | 16.0 | 0.0 | 0.274 | 0.0 |
2020-01-04 06:17:00 | 998.4 | 54796.0 | 20200104.0 | 1117.0 | NaT | NaN | 3.0 | -71.54 | 41.49 | 6.30 | ... | NaN | 0.0 | 97.0 | 0.0 | -99.0 | -9999.0 | 16.0 | 0.0 | 0.318 | 0.0 |
2020-01-04 06:18:00 | 998.6 | 54796.0 | 20200104.0 | 1118.0 | NaT | NaN | 3.0 | -71.54 | 41.49 | 6.30 | ... | NaN | 0.0 | 97.0 | 0.0 | -99.0 | -9999.0 | 16.0 | 0.0 | 0.362 | 0.0 |
2020-01-04 06:19:00 | 998.8 | 54796.0 | 20200104.0 | 1119.0 | NaT | NaN | 3.0 | -71.54 | 41.49 | 6.30 | ... | NaN | 0.0 | 97.0 | 0.0 | -99.0 | -9999.0 | 16.0 | 0.0 | 0.406 | 0.0 |
2020-01-04 06:20:00 | 999.0 | 54796.0 | 20200104.0 | 1120.0 | 2020-01-04 06:20:00 | 0620 | 3.0 | -71.54 | 41.49 | 6.30 | ... | C | 0.0 | 97.0 | 0.0 | -99.0 | -9999.0 | 16.0 | 0.0 | 0.450 | 0.0 |
4996 rows × 24 columns
In [ ]: