Dane numeryczne na binarne

Pandas oferuje kilka sposobów na przekształcenie danych numerycznych na dane binarne.

Jednym ze sposobów jest użycie metody pandas.get_dummies(), która tworzy nowe kolumny dla każdej unikalnej wartości w kolumnie z danymi numerycznymi i wypełnia je zerami lub jedynkami w zależności od tego, czy dana wartość występuje w danym wierszu. Na przykład, jeśli mamy kolumnę zawierającą trzy unikalne wartości 1, 2 i 3, metoda get_dummies() utworzy trzy nowe kolumny o nazwach “kolumna_1”, “kolumna_2” i “kolumna_3”, a każdy wiersz będzie miał jedynkę w odpowiedniej kolumnie i zera we wszystkich pozostałych kolumnach.

Innym sposobem jest użycie metody pandas.cut(), która dzieli zakres wartości numerycznych na określoną liczbę przedziałów (binów) i przypisuje każdej wartości odpowiedni przedział. Można również skorzystać z metody pandas.qcut(), która dzieli zakres wartości na określoną liczbę przedziałów, ale tak, aby każdy przedział zawierał taką samą liczbę wartości. Obie metody zwracają obiekt typu “Categorical”, który można przekonwertować na dane binarne za pomocą metody pandas.get_dummies().

Na przykład, jeśli mamy kolumnę zawierającą wartości od 0 do 10 i chcemy podzielić je na trzy przedziały o równej liczbie wartości, możemy użyć następującego kodu:

import pandas as pd

# Utwórz serię z danymi numerycznymi
s = pd.Series([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10])

# Podziel dane na trzy przedziały o równej liczbie wartości
cats = pd.qcut(s, 3)

# Wyświetl obiekt typu "Categorical"
print(cats)

# Przekonwertuj obiekt typu "Categorical" na dane binarne
dummies = pd.get_dummies(cats)

# Wyświetl dane binarne
print(dummies)

0      [0.0, 3.333]
1      [0.0, 3.333]
2      [0.0, 3.333]
3      [0.0, 3.333]
4      [3.333, 6.0]
5      [3.333, 6.0]
6      [3.333, 6.0]
7      [3.333, 6.0]
8      [6.0, 10.0]
9      [6.0, 10.0]
10     [6.0, 10.0]
dtype: category
Categories (3, interval[float64]): [[0.0, 3.333] < [3.333, 6.0] < [6.0, 10.0]]
   (0.0, 3.333]  (3.333, 6.0]  (6.0, 10.0]
0              1              0              0
1              1              0              0
2              1              0              0
3              1              0              0
4              0              1              0
5              0              1              0
6              0              1              0
7              0              1              0
8              0              0              1
9              0              0              1
10             0              0              1