Plotting Pandas Dataframe From Pivot
I am trying to plot a line graph comparing the Murder Rates of particular States through the years 1960-1962 using Pandas in a Jupyter Notebook. A little context about where I am
Solution 1:
Given a dataframe in a long (tidy) format, pandas.DataFrame.pivot
is used to transform to a wide format, which can be plotted directly with pandas.DataFrame.plot
Tested in python 3.8.11
, pandas 1.3.3
, matplotlib 3.4.3
import numpy as np
import pandas as pd
control_1960_to_1962 = pd.DataFrame({
'State': np.repeat(['Alaska', 'Maine', 'Michigan', 'Minnesota', 'Wisconsin'], 3),
'Year': [1960, 1961, 1962]*5,
'Murder Rate': [10.2, 11.5, 4.5, 1.7, 1.6, 1.4, 4.5, 4.1, 3.4, 1.2, 1.0, .9, 1.3, 1.6, .9]
})
df = control_1960_to_1962.pivot(index='Year', columns='State', values='Murder Rate')
# display(df)
State Alaska Maine Michigan Minnesota Wisconsin
Year
196010.21.74.51.21.3196111.51.64.11.01.619624.51.43.40.90.9
The plots
You can tell Pandas (and through it the matplotlib
package that actually does the plotting) what xticks you want explicitly:
ax = df.plot(xticks=df.index, ylabel='Murder Rate')
Output:
ax
is a matplotlib.axes.Axes
object, and there are many, many customizations you can make to your plot through it.
Here's how to plot with the States
on the x axis:
ax = df.T.plot(kind='bar', ylabel='Murder Rate')
Output:
Solution 2:
try this you can explore more
pip install pivottablejs
import pandas as pd
import numpy as np
from pivottablejs import pivot_ui
df = pd.DataFrame({
'State': np.repeat(['Alaska', 'Maine', 'Michigan', 'Minnesota','Wisconsin'], 3),
'Year': [1960, 1961, 1962]*5,
'Murder Rate': [10.2, 11.5, 4.5, 1.7, 1.6, 1.4, 4.5, 4.1, 3.4, 1.2, 1.0, .9, 1.3, 1.6, .9]})
pivot_ui(df)
Post a Comment for "Plotting Pandas Dataframe From Pivot"