python - 在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”将被忽略。我只想创建一个年龄分布。
解决方案
您可以对列求和并创建条形图。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()
推荐阅读
- angular - Angular - 导入 BrowserAnimationsModule 和 NoopAnimationsModule 并决定在运行时使用什么(使用 AOT)
- sql - 从 SQL Server 表中查找和删除重复行
- javascript - 来自响应数据的 javascript 映射
- python - 慢熊猫索引查找唯一索引
- python - 当我有“下一个”网址时,如何禁用网址重定向?- 姜戈
- spring - 如何在 Spring Security 中使用 .antMatchers("/").not() 方法,我正在使用 Spring MVC
- mysql - MySQL JOIN 使用一张表中的子字符串
- postgresql - 如何理解/调试从属实例上的错误索引结果
- r - 如何从 R 中每个包含 100 个文件的 4 个文件夹创建一个 .csv 文件?
- css - 在全球范围内减少 bootstrap 4 中所有内容的大小