如何使用Plotly绘制基于多列数据的婚姻状态统计柱状图
解决方案
该需求可直接实现,无需复杂数据转换。
核心思路
你的婚姻状态字段为独热编码格式,每列取值只有0和1,直接对4个婚姻状态对应列做纵向求和,得到的结果就是对应状态的总人数,统计过程完全不需要涉及性别相关列。求和后将结果整理为「状态名称-计数」的二维结构,即可直接传入Plotly绘制柱状图。
具体实现步骤
- 加载数据集后,筛选出
Single、Married、Cohabit、OthSing四个婚姻状态列 - 对筛选出的列按列方向求和,得到每个婚姻状态的总人数
- 将求和结果转换为两列结构:第一列为婚姻状态名称,第二列为对应总人数
- 调用Plotly柱状图接口,指定x轴映射婚姻状态字段、y轴映射总人数字段,完成绘图
可运行代码示例
import pandas as pd import plotly.express as px # 读取或构造你的数据集 df = pd.DataFrame({ "Female": [1, 0, 0, 1, 0, 1], "Male": [0, 1, 1, 0, 1, 0], "Single": [1, 0, 0, 0, 1, 0], "Married": [0, 1, 0, 0, 0, 0], "Cohabit": [0, 0, 0, 1, 0, 1], "OthSing": [0, 0, 1, 0, 0, 0] }) # 统计各婚姻状态人数 marriage_columns = ["Single", "Married", "Cohabit", "OthSing"] stat_result = df[marriage_columns].sum().reset_index() stat_result.columns = ["婚姻状态", "人数"] # 绘制柱状图 fig = px.bar(stat_result, x="婚姻状态", y="人数", title="各婚姻状态人数统计") fig.show()
基于你提供的样例数据,运行后得到的统计结果为:Single共2人、Married共1人、Cohabit共2人、OthSing共1人,和预期输出效果完全匹配。
内容的提问来源于stack exchange,提问作者srtklein
相关产品推荐
相关产品推荐

