我正在尝试绘制线条图,比较使用Jupyter笔记本中的熊猫在1960-1962年间特定国家的谋杀率。
关于我现在的位置以及如何到达这里的一些背景:
我目前只对3栏感兴趣:州,年份和谋杀率。具体来说,我只对5个州感兴趣-阿拉斯加,密歇根州,明尼苏达州,缅因州,威斯康星州。
因此,为了生成所需的表,我这样做了(仅显示前5行条目):
al_mi_mn_me_wi = crimes[(crimes['State'] == 'Alaska') | (crimes['State'] =='Michigan') | (crimes['State'] =='Minnesota') | (crimes['State'] =='Maine') | (crimes['State'] =='Wisconsin')]
control_df = al_mi_mn_me_wi[['State', 'Year', 'Murder Rate']]
在这里,我使用了数据透视功能
df = control_1960_to_1962.pivot(index = 'Year', columns = 'State',values= 'Murder Rate' )
这就是我被困住的地方。我在执行操作时收到KeyError(KeyError是Year):
df.plot(x='Year', y='Murder Rate', kind='line')
以及仅尝试
时df.plot()
我得到了这个古怪的图。
如何获取所需图形?
答案 0 :(得分:2)
{ "allData" : { "image" : [], "contents": {.., "box": {}, "text":[]} } }
您可以明确地告诉Pandas(并通过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')
软件包实际进行绘图)想要的xticks:
matplotlib
输出:
ax = df.plot(xticks=df.index)
ylab = ax.set_ylabel('Murder Rate')
是matplotlib.axes.Axes
object,您可以通过它对绘图进行很多很多定制。
以下是在x轴上使用ax
进行绘制的方法:
States
输出:
答案 1 :(得分:1)
尝试这个,您可以探索更多
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)