簡體   English   中英

熊貓計算范圍之間每個值的出現次數

[英]Pandas count number of occurrences of each value between ranges

我有一個數據集,其中我將年齡作為連續變量,並且我想對多個年齡組范圍(例如 18-25、26-33 等)在“心理健康”中出現 1 和 0 的次數進行計數.

示例代碼如下:

df = pd.DataFrame([[18, 1], [45, 1], [56, 0], [26, 0], [35, 1]], columns=['Age', 'Mental_Health'])

什么是最簡單的方法來做到這一點? 如果我可以避免,我真的不想將年齡轉換為一個范圍,如果我必須這樣做,我會但我理想情況下正在尋找具有 18-25 痛苦 = 24,而不是痛苦 = 21 的東西,並且以此類推,適用於所有年齡段。

這樣做的最簡單方法是什么?

你想要pd.cut 您可以定義任意垃圾箱(我在下面使用了范圍)。 這將剪切傳遞的系列,您可以計算不同的“剪切”范圍以查看其中有多少行:

df["age_range"] = pd.cut(df.Age, bins=[0,18,25,33,99], right=False)
df2 = df.groupby("age_range").Mental_Health.sum().to_frame(name="suffering")
df2["not_suffering"] = df.groupby("age_range").Mental_Health.count() - df2.suffering
  

輸出:

           suffering  not_suffering
age_range
[0, 18)            0              0
[18, 25)           1              0
[25, 33)           0              1
[33, 99)           2              1

嘗試這個:

import pandas as pd
import numpy as np
df = pd.DataFrame([[18, 1], [45, 1], [56, 0], [26, 0], [35, 1]], columns=['Age', 'Mental_Health'])

df['cuts'] = pd.cut(df['Age'], np.arange(0,100,15))

df.pivot_table(index='cuts', columns='Mental_Health', values='Age', aggfunc='count').fillna(0).astype(int)

輸出:

Mental_Health  0  1
cuts               
(15, 30]       1  1
(30, 45]       0  2
(45, 60]       1  0

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM