[英]How to make quadruple bar graph from this pandas dataframe?
我是一名新的编码员,对于我的班级,我们有一项作业,我们应该对外部数据集进行 API 调用,然后绘制有关数据的一些有趣内容。 我对纽约市树木普查数据集进行了 API 调用。 在数据中,它显示了树种和健康状况(好、一般、差、死)。 我想制作一个堆积条形图,显示每棵树的健康状况百分比。 例如,我想要一个枫树条,显示 56% 是好的,26% 是一般的,13% 是差的,5% 是死的。 我不确定如何完成所有这些。 这是一个屏幕截图,显示了我的数据集的外观。 感谢您的任何建议!
import kaggle.cli
import sys
import pandas as pd
from pathlib import Path
from zipfile import ZipFile
# search for data set
# sys.argv = [sys.argv[0]] + "datasets list -s \"2015-street-tree-census-tree-data.csv\"".split(" ")
# kaggle.cli.main()
# download data set
sys.argv = [sys.argv[0]] + "datasets download new-york-city/ny-2015-street-tree-census-tree-data".split(" ")
kaggle.cli.main()
zfile = ZipFile("ny-2015-street-tree-census-tree-data.zip")
zfile.infolist()
# use CSV
df = pd.read_csv(zfile.open(zfile.infolist()[0]))
plotly
准备数据和绘图import plotly.express as px
spc = 'spc_common'
# aggregate the data and shape it for plotting
dfa = (
df.groupby([spc, "health"])
.agg({"tree_id": "count"})
.groupby(level=spc)
.apply(lambda x: x / x.sum())
.unstack("health")
.droplevel(0, 1)
)
fig = px.bar(
dfa.reset_index(),
x=spc,
y=["Poor", "Fair", "Good"],
color_discrete_sequence=["red", "blue", "green"],
)
fig.update_layout(yaxis={"tickformat": "%"})
import matplotlib.pyplot as plt
fig, ax = plt.subplots(figsize=(14, 3))
dfa.plot(kind="bar", stacked=True, ax=ax)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.