【发布时间】:2019-03-21 20:51:04
【问题描述】:
我正在尝试每月对一组分类变量进行分组,过滤它们的值并绘制这些变量和值,但我对如何做到这一点有些疑问。我的问题如下:
这是我的原始数据框(我称之为 df16):
Fecha inicio Delito No delitos
0 2016-01-31 ABANDONO DE PERSONA 19
1 2016-01-31 ABORTO 8
2 2016-01-31 ABUSO DE AUTORIDAD 112
3 2016-01-31 ABUSO DE CONFIANZA 241
.
.
.
2262 2016-12-31 VIOLACION 40
2263 2016-12-31 VIOLACION EQUIPARADA 4
2264 2016-12-31 VIOLACION TUMULTUARIA 1
2265 2016-12-31 VIOLENCIA FAMILIAR 1397
2266 rows × 1 columns
问题 1)
我按月有 276 个分类变量。我的目标是按月对列分类变量进行分组,并以类似于 (2016/01,2016/02,... 或 Jan/2016,Feb/2016,...) 的格式显示日期列不显示每个分类变量的重复日期。我尝试通过下一段代码来做到这一点:
df16.groupby(['Fecha inicio','Delito'])['No delitos'].sum().rename('No
delitos').to_frame()
和输出
No delitos
Fecha inicio Delito
2016-01-31 ABANDONO DE PERSONA 19
ABORTO 8
ABUSO DE AUTORIDAD 112
.
.
.
2016-12-31 VIOLACION EQUIPARADA 4
VIOLACION TUMULTUARIA 1
VIOLENCIA FAMILIAR 1397
但我想尝试另一种替代方法。
问题 2)
我想每月绘制分类变量,但由于它们是 276 个变量,这对我来说是不可行的,所以我想过滤更高的变量或建立一个值,比如“没有熟食”> = 1000。因为好吧,已经尝试过使用
df16.groupby('Fecha
inicio').nlargest(3).reset_index(level=0,drop=True).to_frame()
结果是
No delitos
Fecha inicio Delito
2016-01-31 VIOLENCIA FAMILIAR 1326
ROBO DE OBJETOS 1095
DENUNCIA DE HECHOS 1064
.
.
.
2016-12-31 VIOLENCIA FAMILIAR 1397
ROBO A NEGOCIO SIN VIOLENCIA 1209
DENUNCIA DE HECHOS 1082
但是当我尝试使用图表时
df16.pivot(index="Fecha inicio", columns="Delito",
values="No delitos").plot()
plt.show()
我收到一条错误消息:KeyError: 'Fecha inicio'。所以,我想知道如何从数据框中绘制三列。希望您能帮帮我,谢谢。
【问题讨论】:
标签: pandas date dataframe filter group-by