从数据帧绘制图形


import pandas as pd
import seaborn as sns
regions = ['Eastern Asia','Eastern Asia','Eastern Asia', 'South Asia','South Asia','South Asia']
country=['a','b','c','d','e','f']
total_vaccine =[12, 15, 16, 18,20,50] 
df = pd.DataFrame(list(zip(regions,country,total_vaccine)), 
columns=['region','country', 'Vaccine'])
df.head()
grp=df.groupby('region').apply(lambda x:x.nlargest(2,"Vaccine")).reset_index(drop=True)
grp.head()
df1=grp['region'].unique()
df1
df1=pd.DataFrame(df1)
df1
df1.rename(columns={0:'Regions'},inplace=True)
df1
def plot(region):
for region in df1["Regions"]:
df_100=grp[grp['region'] == region]
if not df_100.empty:
sns.barplot( df_100['country'], df_100['Vaccine'], palette ='coolwarm')
plot('South Asia')

使用上述函数绘制南亚和东亚的图形显示相同的国家和相同的图形。我在编写上述代码时犯了什么错误,我不能弄清楚?

输入图片描述

问题是你的功能。删除for循环,它应该可以工作了

def plot_graph(region):
df_100=grp[grp['region'] == region]
if not df_100.empty:
sns.barplot( df_100['country'], df_100['Vaccine'], palette ='coolwarm')

最新更新