Я очень новичок в программировании на питоне. Я не мог найти способ написать эту часть моего кода. Я был бы признателен, если кто-то может мне помочь.
У меня есть фрейм данных с 3 атрибутами (4000 записей). Атрибут x1,x2,класс(двоичный).
Сначала я сделал точечный график и понял, что диапазон x1
от 3 до 13, а диапазон x2
от 3 до 8.
Я хочу получить данные в некоторых диапазонах: например:
if 2.5< x1 < 3.5 and 3.5< x2 < 4.5 ---> df1
if 3.5 <=x1 < 4.5 and 4.5<=x2 < 5.5 ---> df2
if ....
ты умеешь пользоваться масками? df1 = df[(df.x1 > 2.5) & (df.x1 < 3.5) & (df.x2 > 3.5) & (df.x2 < 4.5) ]
Как указывает Мстайно, логические маски — это правильная стратегия для доступа к диапазону значений в одном или нескольких столбцах.
Поскольку вы новичок в программировании на Python (и, следовательно, в pandas), важно разбить это на два этапа.
Во-первых, создается логическая маска, а во-вторых, создается логическая и сгенерированная маска.
Вот Макви, который можно запускать и повторно запускать, чтобы увидеть, как получается выборка значений в зависимых маскированных столбцах.
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(200,3),columns=['x1', 'x2', 'Class'])
mask1 = (df.x1 > -.4) & (df.x1 < .6)
mask2 = (df.x2 > -.4) & (df.x2 < .5)
# What do the masks look like in context?
df['mask1'] = mask1
df['mask2'] = mask1
print(df.head())
# apply the boolean masks so ranges in mask1 and mask2 are obtained
df1 = df[mask1 & mask2]
# sample the result
print(df1.sample(n=4))
Я думаю, вы можете использовать
groupby
, где группы формируютсяpd.cut
.