首页 > 解决方案 > 在python中创建柱状图/饼图

问题描述

我有一个带有年龄括号的熊猫数据框:

new_id                            18-24  25-34  35-44  45-54  55-64  65-74  75-84  85-89  89+
001722E206AD9FB2F1F92C5FD8596DB0    0      1      0      0      0      0      0      0     0
003C2920AB9521CA6D1CDDDBB85E4772    0      0      0      0      0      1      0      0     0
0066C5FD1F7FE804049C508C026F0E59    0      0      0      0      1      1      0      0     0
006B78D4236C00D2D8C8F31035B2A480    0      0      0      1      0      0      0      0     0
0077D1B650F50D8E32974C12C3765CF4    0      0      0      1      1      0      0      0     0
FFD6674A1F3B4FECC66E51E3789441A4    0      1      0      0      0      0      0      0     0
FFD9B3CB3B7FD6B8CAE595418918B178    0      1      0      0      0      0      0      0     0
FFDA6E8C77B3FD7ADA405ED9F5A88A86    0      0      0      0      1      1      0      0     0
FFE591AE9E3B1B9E69CBF0F035BDEEFE    0      1      1      0      0      0      0      0     0
FFE7FA11CE3E1540DE079B3768E9F7E0    0      1      0      0      0      0      0      0     0

我想做的是对每一列求和,并在 python 中使用条形图和/或饼图表示每个年龄段的总数。“new_id”将被忽略。我只想创建一个年龄分布。

标签: pythonpandasmatplotlibplot

解决方案


您可以对列求和并创建条形图。df[df.columns[1:]]将跳过该new_id列:

from matplotlib import pyplot as plt
import pandas as pd
from io import StringIO

str = '''new_id                   18-24  25-34  35-44  45-54  55-64  65-74  75-84  85-89  89+
001722E206AD9FB2F1F92C5FD8596DB0    0      1      0      0      0      0      0      0     0
003C2920AB9521CA6D1CDDDBB85E4772    0      0      0      0      0      1      0      0     0
0066C5FD1F7FE804049C508C026F0E59    0      0      0      0      1      1      0      0     0
006B78D4236C00D2D8C8F31035B2A480    0      0      0      1      0      0      0      0     0
0077D1B650F50D8E32974C12C3765CF4    0      0      0      1      1      0      0      0     0
FFD6674A1F3B4FECC66E51E3789441A4    0      1      0      0      0      0      0      0     0
FFD9B3CB3B7FD6B8CAE595418918B178    0      1      0      0      0      0      0      0     0
FFDA6E8C77B3FD7ADA405ED9F5A88A86    0      0      0      0      1      1      0      0     0
FFE591AE9E3B1B9E69CBF0F035BDEEFE    0      1      1      0      0      0      0      0     0
FFE7FA11CE3E1540DE079B3768E9F7E0    0      1      0      0      0      0      0      0     0'''
df = pd.read_csv(StringIO(str), delim_whitespace=True)
df[df.columns[1:]].sum().plot.bar(rot=0, color='DarkTurquoise')
plt.show()

条形图示例

对于饼图:df[df.columns[1:]].sum().plot.pie()


推荐阅读