我可能会遗漏一些非常简单的东西,但我有一个函数可以在某些时间范围内绘制Pandas数据帧中某列的直方图。在我的函数中,我想将列名作为参数传递。这是我到目前为止所做的。
def make_hist(data,column_name):
start=datetime(2013,11,1)
end=datetime(2013,11,30)
rng=pd.date_range(start,end)
start2=datetime(2013,10,1)
end2=datetime(2013,10,30)
rng2=pd.date_range(start2,end2)
start3=datetime(2013,9,1)
end3=datetime(2013,9,30)
rng3=pd.date_range(start3,end3)
start4=datetime(2013,8,1)
end4=datetime(2013,8,30)
rng4=pd.date_range(start4,end4)
start5=datetime(2013,7,1)
end5=datetime(2013,7,30)
rng5=pd.date_range(start5,end5)
start6=datetime(2013,12,1)
end6=datetime(2013,12,30)
rng6=pd.date_range(start6,end6)
plt.subplot(611)
data.ix[rng6].column_name.hist(bins=[0,30,60,90,120,150,180,210,240,270,300]).plot()
plt.title('December')
plt.ylim(0,300)
plt.xlim(0,300)
plt.subplot(612)
data.ix[rng].column_name.hist(bins=[0,30,60,90,120,150,180,210,240,270,300]).plot()
plt.title('November')
plt.ylim(0,300)
plt.xlim(0,300)
plt.subplot(613)
data.ix[rng2].column_name.hist(bins=[0,30,60,90,120,150,180,210,240,270,300]).plot()
plt.title('October')
plt.ylim(0,300)
plt.xlim(0,300)
plt.subplot(614)
data.ix[rng3].column_name.hist(bins=[0,30,60,90,120,150,180,210,240,270,300]).plot()
plt.title('September')
plt.ylim(0,300)
plt.xlim(0,300)
plt.subplot(615)
data.ix[rng4].column_name.hist(bins=[0,30,60,90,120,150,180,210,240,270,300]).plot()
plt.title('August')
plt.ylim(0,300)
plt.xlim(0,300)
plt.subplot(616)
data.ix[rng5].column_name.hist(bins=[0,30,60,90,120,150,180,210,240,270,300]).plot()
plt.title('July')
plt.ylim(0,300)
plt.xlim(0,300)
plt.show()
问题是我不知道参数column_name
应该是什么数据类型。它不能是一个字符串,它不能只是一个变量,因为我不知道如何定义它。我觉得有一种简单的方法可以做到这一点,我只是没有看到。
编辑:添加数据帧的描述。 data.dtypes
的输出是
account int64
first_active object
datelatest_inactive datetime64[ns]
days_active int64
dtype: object
我的索引位于datelatest_inactive
列
答案 0 :(得分:1)
你应该这样做:
data[column_name][rng6]
data.column_name
会转换为data[ "column_name" ]
,这不是您想要的