1
我有一段代码,我需要在我的数据中为每个国家运行40次。我想写一个函数,让我输入国家名称作为参数,从而执行步骤,而不是用40个国家中每个国家的相同代码替换国家名称7次(实际上我已经完成了这已经)。 可再现码如下所示:函数来生成条形图
dict_usa={'NYC': 0.10,
'LA': -0.05,
'Chicago': -0.16,
'Miami': -0.04,
'Detroit': -0.19,
'Seattle': -0.2,
'Boston': -0.3}
df_usa=pd.DataFrame({'usa':dict_usa})
df_usa.columns=['grade']
df_usa['positive']=df_usa['grade']>0
##### Plot
plt.subplots_adjust(left=.35)
df_usa['grade'].plot(kind='barh',
color=df_usa.positive.map({True:'b',
False:'r'}),
title="usa")
pylab.savefig('C:\\filepath\\Visuals\\test\\usatest.png')
这产生数据帧df_usa与值的等级的柱,并产生一个列称为正,其值为True如果级的值是阳性和假阴性,如果。
df_usa.head.()
grade positive
Boston -0.30 False
Chicago -0.16 False
Detroit -0.19 False
LA -0.05 False
Miami -0.04 False
现在我想要做的正是这对其他40多个国家的,我有城市的字典中dict_country格式。 我试过如下:
def countryplot(df_country, country, dictname):
df_country=pd.DataFrame({country: dictname})
df_country.columns=['grade']
df_country['positive']=df_country['grade']>0
##### Plot
plt.subplots_adjust(left=.35)
df_country['disc'].plot(kind='barh',
color=df_country.positive.map({True:'b',
False:'r'),
title=country)
pylab.savefig('C:\\filepath\\Visuals\\'+country+'.png')
return
当我使用此功能:
countryplot(df_country='df_usa',country="'usa'",dictname='dict_usa')
我收到以下错误:
ValueError: If using all scalar values, you must pass an index
我是初学者 - 但非常专门学习Python进行数据分析。任何帮助将不胜感激。
你可以显示'df_country.head()'显示什么? –
你为什么在美国附近有双引号?此外,您不需要在该函数调用中具有变量。你不应该有df_country作为你传递给你的函数的变量,如果你在你的函数中创建它的话...... – mauve
Spandan - 我已经添加了更多信息来回答你的问题。谢谢淡紫色。好决定!我已经把它拿出来了。谢谢! –