I have a dataframe which is structured as:
Date ticker adj_close 0 2016-11-21 AAPL 111.730 1 2016-11-22 AAPL 111.800 2 2016-11-23 AAPL 111.230 3 2016-11-25 AAPL 111.790 4 2016-11-28 AAPL 111.570 ... 8 2016-11-21 ACN 119.680 9 2016-11-22 ACN 119.480 10 2016-11-23 ACN 119.820 11 2016-11-25 ACN 120.740 ...
How can I plot based on the ticker the adj_close
versus Date
?
1) Using pandas groupby size() method The most simple method for pandas groupby count is by using the in-built pandas method named size(). It returns a pandas series that possess the total number of row count for each group.
The Hello, World! of pandas GroupBy You call . groupby() and pass the name of the column that you want to group on, which is "state" . Then, you use ["last_name"] to specify the columns on which you want to perform the actual aggregation. You can pass a lot more than just a single column name to .
You can also reset_index() on your groupby result to get back a dataframe with the name column now accessible. If you perform an operation on a single column the return will be a series with multiindex and you can simply apply pd. DataFrame to it and then reset_index. Show activity on this post.
you can use:
df.plot(x='Date',y='adj_close')
Or you can set the index to be Date
beforehand, then it's easy to plot the column you want:
df.set_index('Date', inplace=True) df['adj_close'].plot()
ticker
on itYou need to groupby before:
df.set_index('Date', inplace=True) df.groupby('ticker')['adj_close'].plot(legend=True)
grouped = df.groupby('ticker') ncols=2 nrows = int(np.ceil(grouped.ngroups/ncols)) fig, axes = plt.subplots(nrows=nrows, ncols=ncols, figsize=(12,4), sharey=True) for (key, ax) in zip(grouped.groups.keys(), axes.flatten()): grouped.get_group(key).plot(ax=ax) ax.legend() plt.show()
Similar to Julien's answer above, I had success with the following:
fig, ax = plt.subplots(figsize=(10,4)) for key, grp in df.groupby(['ticker']): ax.plot(grp['Date'], grp['adj_close'], label=key) ax.legend() plt.show()
This solution might be more relevant if you want more control in matlab.
Solution inspired by: https://stackoverflow.com/a/52526454/10521959
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With