pandas - 如何使用熊猫查找给定范围内的计数
问题描述
我在excel中的数据表:
HC No. Domain Education mark -Q1 Education mark -Q2 \
0 1 Domain A 1.469754 1.969754
1 2 Domain A 0.428562 0.928562
2 3 Domain A 1.130643 1.630643
3 4 Domain A 1.296837 1.796837
4 5 Domain A 1.180092 1.680092
5 6 Domain B 1.990000 2.490000
6 7 Domain B 0.731105 1.231105
7 8 Domain B 1.087374 1.587374
8 9 Domain B 1.726001 2.226001
9 10 Domain B 0.353576 0.853576
10 11 Domain B 0.195931 0.695931
11 12 Domain C 1.967909 2.467909
12 13 Domain C 1.022164 1.522164
13 14 Domain C 1.924649 2.424649
14 15 Domain C 1.571244 2.071244
15 16 Domain C 1.658053 2.158053
16 17 Domain D 0.195931 0.695931
17 18 Domain D 0.000000 0.500000
18 19 Domain D 0.938607 1.438607
19 20 Domain D 0.414434 0.914434
20 21 Domain D 0.904212 1.404212
21 22 Others 1.540628 2.040628
22 23 Others 1.336798 1.836797
23 24 Others 0.419771 0.919771
24 25 Others 1.990000 2.490000
25 26 Others 1.990000 2.490000
我想根据范围过滤并使用熊猫找到计数,即
教育标志的预期 O/P -Q1:
下表中的数据仅供参考
Domains 0-0.5 0.5-1.0 1.0-1.5 1.5-2.5 2.5-3.5
0 Domain A 2 11 46 0 0
1 Domain B 5 6 22 0 66
2 Domain C 6 22 8 5 5
3 Domain D 11 7 5 8 8
非常感谢您对此的任何帮助。最终我需要找出,在 (0-0.5) 范围内的每个域中,“教育标记 Q1”列有多少,然后是 1 到 1.5,依此类推直到 5。
PS:我对熊猫非常陌生,两周前我就开始了。我能够分析绘图的其他选项,例如查找均值、正常计数等,但我不确定这个范围概念。
我需要使用 plotly 在表格/图表中绘制结果数据。
经过大量的谷歌搜索和反复试验,我求助于stackoverflow。谢谢 !
解决方案
使用pd.cut
bins = [0, 0.5, 1, 1.5, 2, 2.5, 3, 3.5]
df['Q1Bin'] = pd.cut(df['Education_mark_Q1'],
bins,right=False)
df['Q2Bin'] = pd.cut(df['Education_mark_Q2'],
bins,right=False)
new_df = (
pd.melt(df, id_vars=["Domain"], value_vars=["Q1Bin", "Q2Bin"])
.groupby(["Domain", "value"])["value"]
.count()
.unstack()
)
print(new_df)
value [0.0, 0.5) [0.5, 1.0) [1.0, 1.5) [1.5, 2.0) [2.0, 2.5)
Domain
Others 1.0 1.0 1.0 4.0 3.0
Domain A 1.0 1.0 4.0 4.0 NaN
Domain B 2.0 3.0 2.0 3.0 2.0
Domain C NaN NaN 1.0 5.0 4.0
Domain D 3.0 5.0 2.0 NaN NaN
推荐阅读
- java - 使用 HTTP 调用启动 Spring 状态机
- node.js - MERN 堆栈:值“NaN”的数字转换失败
- reactjs - 使单元测试等待异步获取填充的数据
- bootstrap-4 - Bootstrap / Vue.js - 折叠
- bi-publisher - 如何使用 BI/XML Publisher 以 Excel 会计格式显示金额?
- angular - 我无法集成 paymetric iframe、支付网关。我面临一个错误“位置 0 的 json 意外令牌 u”
- javascript - 为什么这个 scrollLeft JS 函数不能在我的本地 wordpress 网站上运行?
- factory - 我们可以删除以下工厂类中的条件吗?
- linux - 是否有跨平台的方法来设置使用 cmake 生成的项目的构建类型?
- c# - 如何使用 Entity Framework Core 数据迁移将种子数据添加到现有种子数据