Мой фрейм данных состоит из 59 столбцов с +2000 строк данных (данных, собираемых в секунду). Мне нужно суммировать / сложить все данные в отдельных столбцах с 29 по 60, чтобы получить 31 общее количество бинов. Затем мне нужно построить итоги 31 бина в гистограмме с номером бина в качестве оси x и числом отсчетов на оси y.
Примечание: я работаю в функции внутри класса, вызванного из другого места.
Я суммировал / добавил каждый указанный столбец с помощью функции sum (). Затем вызывается функция гистограммы, и она доходит до создания пустой фигуры, а затем выдает длинный список ошибок, который завершается ошибкой datetime (я не уверен, как datetime участвует в этом ...). Пожалуйста, кто-нибудь может указать мне правильное направление и помочь заставить мою гистограмму работать?
В примерах показан предыдущий код и только первые 5 бинов.
import pandas as pd
import datetime as dt
import matplotlib.pyplot as plt
class Pops(object):
def __init__(self, popsfile): #, pops_hdr_lines):
'''
...
'''
#________________________________________________
# # READ IN FILES AND CONCATENATE FILES
if not isinstance(popsfile, list):
self.POPSfile = [popsfile]
else:
self.POPSfile = popsfile
# read in multiple POPS datafiles into a list
dfs = []
for file in self.POPSfile:
df = pd.read_csv(file, sep=',', header=0) # PANDAS!
dfs.append(df)
# concatenate all dataframes together
data = pd.concat(dfs)
# ------------------------------------------------------------
# create new time stamp
# determine date
date_string = self.POPSfile[0][-16:-8] # extracts YYYYMMDD.
popsdate = dt.datetime.strptime(date_string, '%Y%m%d')
# Convert from date and time in sam since 1/1/1970
data.DateTime = pd.to_datetime(data.DateTime, errors='coerce', unit='s')
# Rename columns to remove whitespaces
data = data.rename(columns={' Status': 'Status', ' PartCt': 'PartCt', ' PartCon': 'PartCon',' BL': 'BL',
' P': 'P', ' POPS_Flow': 'POPS_Flow', ' LDTemp': 'LDTemp', ' Temp': 'Temp',
' Laser_Current': 'Laser_Current'})
self.data = data
def plot_housekeeping(self, path, show_save):
'''plot some of the basic data
'''
# histogram attempt
bins = self.data[['b0', 'b1', 'b2', 'b3', 'b4']].sum() # sums the bins of interest
print(bins) # check output
plt.hist(bins)
plt.show()
return None
if __name__ == '__main__':
main()
Вот что я получаю:
b0 12965454
b1 9168956
b2 4178861
b3 2878718
b4 2699768
dtype: int64
Traceback (most recent call last):
File "/opt/scitools/environments/default/current/lib/python3.6/site-packages/matplotlib/backends/backend_qt5.py", line 519, in _draw_idle
self.draw()
File "/opt/scitools/environments/default/current/lib/python3.6/site-packages/matplotlib/backends/backend_agg.py", line 437, in draw
self.figure.draw(self.renderer)
File "/opt/scitools/environments/default/current/lib/python3.6/site-packages/matplotlib/artist.py", line 55, in draw_wrapper
return draw(artist, renderer, *args, **kwargs)
File "/opt/scitools/environments/default/current/lib/python3.6/site-packages/matplotlib/figure.py", line 1493, in draw
renderer, self, artists, self.suppressComposite)
File "/opt/scitools/environments/default/current/lib/python3.6/site-packages/matplotlib/image.py", line 141, in _draw_list_compositing_images
a.draw(renderer)
File "/opt/scitools/environments/default/current/lib/python3.6/site-packages/matplotlib/artist.py", line 55, in draw_wrapper
return draw(artist, renderer, *args, **kwargs)
File "/opt/scitools/environments/default/current/lib/python3.6/site-packages/matplotlib/axes/_base.py", line 2635, in draw
mimage._draw_list_compositing_images(renderer, self, artists)
File "/opt/scitools/environments/default/current/lib/python3.6/site-packages/matplotlib/image.py", line 141, in _draw_list_compositing_images
a.draw(renderer)
File "/opt/scitools/environments/default/current/lib/python3.6/site-packages/matplotlib/artist.py", line 55, in draw_wrapper
return draw(artist, renderer, *args, **kwargs)
File "/opt/scitools/environments/default/current/lib/python3.6/site-packages/matplotlib/axis.py", line 1190, in draw
ticks_to_draw = self._update_ticks(renderer)
File "/opt/scitools/environments/default/current/lib/python3.6/site-packages/matplotlib/axis.py", line 1028, in _update_ticks
tick_tups = list(self.iter_ticks()) # iter_ticks calls the locator
File "/opt/scitools/environments/default/current/lib/python3.6/site-packages/matplotlib/axis.py", line 971, in iter_ticks
majorLocs = self.major.locator()
File "/opt/scitools/environments/default/current/lib/python3.6/site-packages/matplotlib/dates.py", line 1249, in __call__
self.refresh()
File "/opt/scitools/environments/default/current/lib/python3.6/site-packages/matplotlib/dates.py", line 1269, in refresh
dmin, dmax = self.viewlim_to_dt()
File "/opt/scitools/environments/default/current/lib/python3.6/site-packages/matplotlib/dates.py", line 1027, in viewlim_to_dt
return num2date(vmin, self.tz), num2date(vmax, self.tz)
File "/opt/scitools/environments/default/current/lib/python3.6/site-packages/matplotlib/dates.py", line 522, in num2date
return _from_ordinalf(x, tz)
File "/opt/scitools/environments/default/current/lib/python3.6/site-packages/matplotlib/dates.py", line 322, in _from_ordinalf
dt = datetime.datetime.fromordinal(ix).replace(tzinfo=UTC)
ValueError: year 37173 is out of range