как найти счет в заданном диапазоне, используя pandas - PullRequest
0 голосов
/ 10 февраля 2020

Моя таблица данных в 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   

Я хочу отфильтровать по диапазону и найти счет, используя pandas ie

Ожидаемая отметка 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: я очень плохо знаком с pandas, я начал две недели назад. Мне удалось проанализировать другие варианты построения графика, например, найти среднее значение, нормальное число и т. Д. c, но я не уверен в этой концепции диапазона.

Мне нужно отобразить полученные данные в виде таблицы / графика, используя plotly.

После долгих поисков, проб и ошибок я прибегнул к stackoverflow. Спасибо!

1 Ответ

1 голос
/ 10 февраля 2020

с использованием 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...