我的数据框由59列组成,其中包含+2000行数据(每秒收集的数据)。我需要将第29至60列中的所有数据相加/相加,得出31 bin的总数。然后,我需要在直方图中绘制31个bin总数,其中bin数为x轴,y数为计数。
注意:我正在其他地方调用的类中的函数中工作。
我已经使用sum()函数对每个指定的列求和。然后调用直方图函数,它会产生一个空的数字,然后产生一长串错误,最终导致一个datetime错误(我不确定datetime如何参与其中……)。请有人能指出我正确的方向并帮助我的直方图正常工作吗?
示例显示了前面的代码,仅显示了前5个bin。
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