在数据帧上循环并绘制每列

2024-04-26 07:48:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我想创建一个函数或for循环,它将为数据帧的每一列显示一个排序的水平条形图。下面可以看到一列的代码示例。savefig()是一个很好的工具,但不是必需的

frame['Population-current year']是数据框中的一列。就语法而言,我似乎无法为循环制定必要的结构

数据帧头:

本年地名人口 圣达菲82980.0
纳什维尔戴维森654187.0
桑迪亚公园72.0
石山6209.0
阿什维尔89318.0

2010年本年度地名人口百分比变化\ 圣达菲0.2277
纳什维尔戴维森0.1130
桑迪亚公园0.0286
石山0.0362
阿什维尔0.0896

地名人口年龄中位数住房年龄中位数\ 圣达菲42.8 34.0
纳什维尔戴维森34.138.0
桑迪亚公园60.2 24.0
石山38.8 38.0
阿什维尔38.6 44.0

提前谢谢

ax = (frame['Population-current year']/1000).sort_values().plot(kind='barh', figsize=(8, 10), color='#86bf91', zorder=2, width=0.85)
ax.spines['right'].set_visible(False)
ax.spines['top'].set_visible(False)
ax.spines['left'].set_visible(False)
ax.spines['bottom'].set_visible(False)

ax.tick_params(axis="both", which="both", bottom="off", top="off", labelbottom="on", left="off", right="off", labelleft="on")

vals = ax.get_xticks()
for tick in vals:
    ax.axvline(x=tick, linestyle='dashed', alpha=0.4, color='#eeeeee', zorder=1)
ax.set_title("Population - 2017 (1000s)", weight='bold', size=12)
ax.set_xlabel("Population - 2017 (1000s)", labelpad=20, weight='bold', size=12)
ax.set_ylabel("City", labelpad=20, weight='bold', size=12)
ax.xaxis.set_major_formatter(StrMethodFormatter('{x:,g}'))

plt.savefig('pop_chart.png')

Tags: 数据falsesizeax人口populationweightbold