osdir.com


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

How to plot a data including date and time?


On 14 Aug 2019, Elliott Roper wrote
(in article<0001HW.23044901039E772C70000CA972EF at news.giganews.com>):

> On 14 Aug 2019, amirrezaheidarysbu at gmail.com wrote
> (in article<23d45668-fa47-4640-832a-5a5c64600b95 at googlegroups.com>):
>
> > On Tuesday, August 13, 2019 at 11:47:28 PM UTC+2, amirrezah... at gmail.com
> > wrote:

Oh Damn! Here is an attempt to stop the code running into a single line..
> >
> > > I have a .csv file, in first column I have date and hour, and in the second
> > > column I have energy use data. How can I make a bar chart with Date and
> > > time as the x axis and the energy use as the Y axis?
> > >
> > > Thanks
> >
> > Thank you for your guidance. I am already using matplotlib but I do not know
> > how to import a column of date and time and to use it properly as the x
> > axis.
> > can you tell me the code?
> >
> > Thanks

>
> If you don't mind using a steam hammer to crack a nut, it is amazing what you
> can do with pandas using just the "10 minute guide" chapter in the (shudder)
> 10,000 page manual. The chief benefit is how thoroughly it protects you from
> Numpy and Matplotlib.
> I solved a similar problem (tracking home blood pressure with exponentially
> weighted means) up and running in half a day from a completely cold start.
> The graphing bit is a delight. However, if you want to do something that the
> 10 minute guide does not cover, you can lose a man-month without really
> trying. Pandas is a beautiful monster!
>
> Here's the relevant bit
>
> import numpy as np
>
> import pandas as pd
>
> import matplotlib.pyplot as plt
>
>
> #preparing the csv from a text file elided as irrelevant
>
> #except that the .csv headings have to be Date Systolic Diastolic for this to
> work as designed
>
> # Plot the intermediate file with pandas after adding exponentially weighted
> means
>
> df = pd.read_csv('Blood pressure.csv')
>
> df['Date'] = pd.to_datetime(df['Date'])
>
> df['Syst EWM'] = df['Systolic'].ewm(span=200).mean()
>
> df['Diast EWM'] = df['Diastolic'].ewm(span=200).mean()
>
> plt.ioff()
>
> df.plot(x='Date')
>
> print(df.tail(60)) #a debug line I left in to watch the EWMs sink to more
> healthy levels
>
> plt.ylabel('mm Hg')
>
> plt.suptitle("Home BP record")
>
> plt.show()
>
> That should give you a start

-- 
To de-mung my e-mail address:- fsnospam$elliott$$ PGP Fingerprint: 1A96 3CF7 
637F 896B C810 E199 7E5C A9E4 8E59 E248