如何对熊猫数据框的特定列求和,然后在直方图上绘制总计

时间:2019-07-03 08:45:20

标签: pandas plot pycharm histogram

我的数据框由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

0 个答案:

没有答案
相关问题