Wprowadzenie
Jako analityk danych naszym obowiązkiem jest zapewnienie integralności danych w celu uzyskania dokładnych i wiarygodnych spostrzeżeń. Czyszczenie danych odgrywa kluczową rolę w tym procesie, a zduplikowane wartości należą do najczęstszych problemów, z jakimi spotykają się analitycy danych. Zduplikowane wartości mogą potencjalnie błędnie przedstawiać spostrzeżenia. Dlatego tak ważne jest posiadanie skutecznych metod radzenia sobie ze zduplikowanymi wartościami. W tym artykule dowiemy się, jak identyfikować i obsługiwać zduplikowane wartości, a także najlepsze praktyki zarządzania duplikatami.
Identyfikowanie zduplikowanych wartości
Pierwszym krokiem w obsłudze zduplikowanych wartości jest ich identyfikacja. Identyfikacja zduplikowanych wartości jest ważnym krokiem w czyszczeniu danych. Pandas oferuje wiele metod identyfikacji zduplikowanych wartości w ramce danych. W tej części omówimy duplicated()
funkcja i value_counts()
funkcja do identyfikowania zduplikowanych wartości.
Usin zduplikowane()
Połączenia duplicated()
function to funkcja biblioteki Pandas, która sprawdza zduplikowane wiersze w DataFrame. Wyjście duplicated()
jest szeregiem boolowskim o tej samej długości co wejściowa ramka DataFrame, gdzie każdy element wskazuje, czy odpowiedni wiersz jest duplikatem.
Rozważmy prosty przykład tzw duplicated()
funkcjonować:
import pandas as pd data = { 'StudentName': ['Mark', 'Ali', 'Bob', 'John', 'Johny', 'Mark'], 'Score': [45, 65, 76, 44, 39, 45]
}
df = pd.DataFrame(data) df_duplicates = df.duplicated()
print(df_duplicates)
Wyjście:
0 False
1 False
2 False
3 False
4 False
5 True
dtype: bool
W powyższym przykładzie utworzyliśmy ramkę DataFrame zawierającą nazwiska uczniów i ich łączne wyniki. wezwaliśmy duplicated()
na DataFrame, która wygenerowała serię logiczną z False
reprezentujących unikalne wartości i True
reprezentujących zduplikowane wartości.
W tym przykładzie pierwsze wystąpienie wartości jest uważane za unikatowe. Co jednak, jeśli chcemy, aby ostatnia wartość była uważana za unikalną, a nie chcemy uwzględniać wszystkich kolumn podczas identyfikowania zduplikowanych wartości? Tutaj możemy zmodyfikować plik duplicated()
funkcję poprzez zmianę wartości parametrów.
Parametry: Podzbiór i Zachowaj
Połączenia duplicated()
Funkcja oferuje opcje dostosowywania za pomocą opcjonalnych parametrów. Ma dwa parametry, jak opisano poniżej:
-
subset
: Ten parametr umożliwia nam określenie podzbioru kolumn do uwzględnienia podczas wykrywania duplikatów. Podzbiór jest ustawiony naNone
domyślnie, co oznacza, że uwzględniana jest każda kolumna w DataFrame. Aby określić nazwy kolumn, możemy udostępnić podzbiór z listą nazw kolumn.Oto przykład użycia parametru podzbioru:
df_duplicates = df.duplicated(subset=['StudentName'])
Wyjście:
0 False 1 False 2 False 3 False 4 False 5 True dtype: bool
-
keep
: Ta opcja pozwala nam wybrać, które wystąpienie zduplikowanego wiersza ma być oznaczone jako duplikat. Możliwe wartości dla keep to:"first"
: Jest to domyślna wartość dlakeep
opcja. Identyfikuje wszystkie duplikaty z wyjątkiem pierwszego wystąpienia, uznając pierwszą wartość za unikalną."last"
: Ta opcja identyfikuje ostatnie wystąpienie jako unikalną wartość. Wszystkie inne wystąpienia będą traktowane jako duplikaty.False
: Ta opcja oznacza każdą instancję jako zduplikowaną wartość.
Oto przykład użycia keep
parametr:
df_duplicates = df.duplicated(keep='last')
print(df_duplicates)
Wyjście:
0 True
1 False
2 False
3 False
4 False
5 False
dtype: bool
Wizualizuj zduplikowane wartości
Połączenia value_counts()
funkcja to drugie podejście do identyfikowania duplikatów. The value_counts()
funkcja zlicza, ile razy każda unikatowa wartość pojawia się w kolumnie. Stosując ww value_counts()
funkcji do określonej kolumny, można zwizualizować częstotliwość każdej wartości.
Oto przykład użycia value_counts()
funkcjonować:
import matplotlib.pyplot as plt
import pandas as pd data = { 'StudentName': ['Mark', 'Ali', 'Bob', 'John', 'Johny', 'Mark'], 'Score': [45, 65, 76, 44, 39, 45]
}
df = pd.DataFrame(data) name_counts = df['StudentName'].value_counts()
print(name_counts)
Wyjście:
Mark 2
Ali 1
Bob 1
John 1
Johny 1
Name: StudentName, dtype: int64
Zwizualizujmy teraz zduplikowane wartości za pomocą wykresu słupkowego. Częstotliwość powielania się wartości możemy skutecznie zwizualizować za pomocą wykresu słupkowego.
name_counts.plot(kind='bar')
plt.xlabel('Student Name')
plt.ylabel('Frequency')
plt.title('Duplicate Name Frequencies')
plt.show()
Obsługa zduplikowanych wartości
Po zidentyfikowaniu zduplikowanych wartości nadszedł czas, aby się nimi zająć. W tej sekcji przyjrzymy się różnym strategiom usuwania i aktualizowania zduplikowanych wartości za pomocą pand drop_duplicates()
i replace()
Funkcje. Dodatkowo omówimy agregowanie danych ze zduplikowanymi wartościami przy użyciu metody groupby()
funkcja.
Usuwanie zduplikowanych wartości
Najczęstszym podejściem do obsługi duplikatów jest usunięcie ich z DataFrame. Aby wyeliminować zduplikowane rekordy z DataFrame, użyjemy drop_duplicates()
funkcjonować. Domyślnie ta funkcja zachowuje pierwsze wystąpienie każdego zduplikowanego wiersza i usuwa kolejne wystąpienia. Identyfikuje zduplikowane wartości na podstawie wartości wszystkich kolumn; możemy jednak określić kolumnę, która ma być brana pod uwagę, za pomocą parametrów podzbioru.
Składnia drop_duplicates()
z wartościami domyślnymi w parametrach wygląda następująco:
dataFrame.drop_duplicates(subset=None, keep='first', inplace=False)
Połączenia subset
i keep
parametry mają takie samo wyjaśnienie jak w duplicates()
. Jeśli ustawimy trzeci parametr inplace
do True
, wszystkie modyfikacje zostaną wykonane bezpośrednio na oryginalnej ramce DataFrame, co spowoduje zwrócenie metody None
a oryginalna ramka DataFrame jest modyfikowana. Domyślnie, inplace
is False
.
Oto przykład tzw drop_duplicates()
funkcjonować:
df.drop_duplicates(keep='last', inplace=True)
print(df)
Wyjście:
StudentName Score
1 Ali 65
2 Bob 76
3 John 44
4 Johny 39
5 Mark 45
Zapoznaj się z naszym praktycznym, praktycznym przewodnikiem dotyczącym nauki Git, zawierającym najlepsze praktyki, standardy przyjęte w branży i dołączoną ściągawkę. Zatrzymaj polecenia Google Git, a właściwie uczyć się to!
W powyższym przykładzie pierwszy wpis został usunięty, ponieważ był duplikatem.
Zastąp lub zaktualizuj zduplikowane wartości
Druga metoda obsługi duplikatów polega na zastąpieniu wartości przy użyciu metody Pandas replace()
funkcjonować. The replace()
Funkcja pozwala nam zastąpić określone wartości lub wzorce w DataFrame nowymi wartościami. Domyślnie zastępuje wszystkie wystąpienia wartości. Jednak za pomocą parametru limit możemy ograniczyć liczbę podmian.
Oto przykład użycia replace()
funkcjonować:
df['StudentName'].replace('Mark', 'Max', limit=1, inplace=True)
print(df)
Wyjście:
StudentName Score
0 Max 45
1 Ali 65
2 Bob 76
3 John 44
4 Johny 39
5 Mark 45
Tutaj limit został użyty do zastąpienia pierwszej wartości. Co jeśli chcemy zastąpić ostatnie wystąpienie? W takim przypadku połączymy duplicated()
i replace()
Funkcje. Za pomocą duplicated()
, wskażemy ostatnią instancję każdej zduplikowanej wartości, uzyskamy numer wiersza za pomocą loc
funkcję, a następnie zastąpić ją za pomocą replace()
funkcjonować. Oto przykład użycia duplicated()
i replace()
funkcje razem.
last_occurrences = df.duplicated(subset='StudentName', keep='first') last_occurrences_rows = df[last_occurrences] df.loc[last_occurrences, 'StudentName'] = df.loc[last_occurrences, 'StudentName'].replace('Mark', 'Max') print(df)
Wyjście:
StudentName Score
0 Mark 45
1 Ali 65
2 Bob 76
3 John 44
4 Johny 39
5 Max 45
Funkcje niestandardowe dla złożonych zamian
W niektórych przypadkach obsługa zduplikowanych wartości wymaga bardziej skomplikowanych zamian niż zwykłe ich usuwanie lub aktualizowanie. Niestandardowe funkcje umożliwiają nam tworzenie konkretnych reguł zastępczych dostosowanych do naszych potrzeb. Za pomocą pand apply()
funkcji, możemy zastosować funkcję niestandardową do naszych danych.
Załóżmy na przykład, że kolumna „StudentName” zawiera zduplikowane nazwiska. Naszym celem jest zastąpienie duplikatów za pomocą niestandardowej funkcji, która dodaje liczbę na końcu zduplikowanych wartości, czyniąc je niepowtarzalnymi.
def add_number(name, counts): if name in counts: counts[name] += 1 return f'{name}_{counts[name]}' else: counts[name] = 0 return name name_counts = {} df['is_duplicate'] = df.duplicated('StudentName', keep=False)
df['StudentName'] = df.apply(lambda x: add_number(x['StudentName'], name_counts) if x['is_duplicate'] else x['StudentName'], axis=1)
df.drop('is_duplicate', axis=1, inplace=True)
print(df)
Wyjście:
StudentName Score
0 Mark 45
1 Ali 65
2 Bob 76
3 John 44
4 Johny 39
5 Mark_1 45
Agreguj dane ze zduplikowanymi wartościami
Dane zawierające zduplikowane wartości można agregować w celu podsumowania i uzyskania wglądu w dane. Pandy groupby()
Funkcja umożliwia agregowanie danych ze zduplikowanymi wartościami. za pomocą groupby()
funkcji, możesz pogrupować jedną lub więcej kolumn i obliczyć średnią, medianę lub sumę innej kolumny dla każdej grupy.
Oto przykład użycia groupby()
metoda:
grouped = df.groupby(['StudentName']) df_aggregated = grouped.sum()
print(df_aggregated)
Wyjście:
Score
StudentName Ali 65
Bob 76
John 44
Johny 39
Mark 90
zaawansowane techniki
Aby obsłużyć bardziej złożone scenariusze i zapewnić dokładną analizę, istnieje kilka zaawansowanych technik, których możemy użyć. W tej sekcji omówiono postępowanie z rozmytymi duplikatami, duplikacjami w danych szeregów czasowych i zduplikowanymi wartościami indeksu.
rozmyte duplikatów
Duplikaty rozmyte to rekordy, które nie są dokładnymi dopasowaniami, ale są podobne i mogą wystąpić z różnych powodów, w tym błędów we wprowadzaniu danych, literówek i różnic w formatowaniu. Będziemy korzystać z fuzzywuzzy
Biblioteka Pythona do identyfikowania duplikatów za pomocą dopasowywania podobieństw ciągów.
Oto przykład obsługi wartości rozmytych:
import pandas as pd
from fuzzywuzzy import fuzz def find_fuzzy_duplicates(dataframe, column, threshold): duplicates = [] for i in range(len(dataframe)): for j in range(i+1, len(dataframe)): similarity = fuzz.ratio(dataframe[column][i], dataframe[column][j]) if similarity >= threshold: duplicates.append(dataframe.iloc[[i, j]]) if duplicates: duplicates_df = pd.concat(duplicates) return duplicates_df else: return pd.DataFrame() data = { 'StudentName': ['Mark', 'Ali', 'Bob', 'John', 'Johny', 'Mark'], 'Score': [45, 65, 76, 44, 39, 45]
}
df = pd.DataFrame(data) threshold = 70 fuzzy_duplicates = find_fuzzy_duplicates(df, 'StudentName', threshold)
print("Fuzzy duplicates:")
print(fuzzy_duplicates.to_string(index=False))
W tym przykładzie tworzymy funkcję niestandardową find_fuzzy_duplicates
który przyjmuje DataFrame, nazwę kolumny i próg podobieństwa jako dane wejściowe. Funkcja iteruje przez każdy wiersz w DataFrame i porównuje go z kolejnymi wierszami przy użyciu fuzz.ratio
metoda z fuzzywuzzy
biblioteka. Jeśli wynik podobieństwa jest większy lub równy wartości progowej, zduplikowane wiersze są dodawane do listy. Na koniec funkcja zwraca DataFrame zawierającą rozmyte duplikaty.
Wyjście:
Fuzzy duplicates:
StudentName Score Mark 45 Mark 45 John 44 Johny 39
W powyższym przykładzie rozmyte duplikaty są identyfikowane w kolumnie „StudentName”. Funkcja „find_fuzzy_duplicates” porównuje każdą parę łańcuchów przy użyciu metody fuzzywuzzy
biblioteki fuzz.ratio
funkcja, która oblicza wynik podobieństwa na podstawie odległości Levenshteina. Ustawiliśmy próg na 70, co oznacza, że każda nazwa ze współczynnikiem dopasowania większym niż 70 będzie uważana za wartość rozmytą. Po zidentyfikowaniu wartości rozmytych możemy nimi zarządzać, korzystając z metody opisanej w sekcji „Postępowanie z duplikatami”.
Obsługa duplikatów danych szeregów czasowych
Duplikaty mogą wystąpić, gdy wiele obserwacji jest rejestrowanych w tym samym znaczniku czasu. Te wartości mogą prowadzić do zniekształconych wyników, jeśli nie są odpowiednio obsługiwane. Oto kilka sposobów obsługi zduplikowanych wartości w danych szeregów czasowych.
- Upuszczanie dokładnych duplikatów: W tej metodzie usuwamy identyczne wiersze za pomocą
drop_duplicates
działa w Pandach. - Zduplikowane znaczniki czasu z różnymi wartościami: Jeśli mamy ten sam znacznik czasu, ale różne wartości, możemy zagregować dane i uzyskać lepszy wgląd za pomocą
groupby()
lub możemy wybrać najnowszą wartość i usunąć inne używającedrop_duplicates()
zkeep
parametr ustawiony na „ostatni”.
Obsługa zduplikowanych wartości indeksu
Zanim zajmiemy się zduplikowanymi wartościami indeksu, najpierw zdefiniujmy, czym jest indeks w Pandas. Indeks to unikalny identyfikator przypisany do każdego wiersza DataFrame. Pandas domyślnie przypisuje indeks numeryczny zaczynający się od zera. Jednak indeks można przypisać do dowolnej kolumny lub kombinacji kolumn. Aby zidentyfikować duplikaty w kolumnie Indeks, możemy użyć metody duplicated()
i drop_duplicates()
odpowiednio funkcje. W tej sekcji zbadamy, jak obsługiwać duplikaty w kolumnie Index za pomocą reset_index()
.
Jak sama nazwa wskazuje, plik reset_index()
funkcja w Pandas służy do resetowania indeksu DataFrame. Podczas stosowania reset_index()
funkcji bieżący indeks jest automatycznie odrzucany, co oznacza utratę początkowych wartości indeksu. Określając drop
parametr jako False
reset_index()
funkcji, możemy zachować pierwotną wartość indeksu podczas resetowania indeksu.
Oto przykład użycia reset_index()
:
import pandas as pd data = { 'Score': [45, 65, 76, 44, 39, 45]
}
df = pd.DataFrame(data, index=['Mark', 'Ali', 'Bob', 'John', 'Johny', 'Mark']) df.reset_index(inplace=True)
print(df)
Wyjście:
index Score
0 Mark 45
1 Ali 65
2 Bob 76
3 John 44
4 Johny 39
5 Mark 45
Najlepsze praktyki
-
Zrozum naturę zduplikowanych danych: Przed podjęciem jakichkolwiek działań należy zrozumieć, dlaczego istnieją zduplikowane wartości i co reprezentują. Zidentyfikuj pierwotną przyczynę, a następnie określ odpowiednie kroki, aby sobie z nimi poradzić.
-
Wybierz odpowiednią metodę obsługi duplikatów: Jak omówiono w poprzednich sekcjach, istnieje wiele sposobów obsługi duplikatów. Wybrana metoda zależy od charakteru danych i analizy, którą chcesz przeprowadzić.
-
Udokumentuj podejście: Niezbędne jest udokumentowanie procesu wykrywania zduplikowanych wartości i zajmowania się nimi, aby umożliwić innym zrozumienie procesu myślowego.
-
Należy zachować ostrożność: Za każdym razem, gdy usuwamy lub modyfikujemy dane, musimy upewnić się, że wyeliminowanie duplikatów nie spowoduje błędów ani stronniczości w analizie. Przeprowadzaj testy poczytalności i weryfikuj wyniki każdego działania.
-
Zachowaj oryginalne dane: Przed wykonaniem jakiejkolwiek operacji na danych utwórz kopię zapasową oryginalnych danych.
-
Zapobiegaj duplikatom w przyszłości: Wdrożenie środków zapobiegających powstawaniu duplikatów w przyszłości. Może to obejmować sprawdzanie poprawności danych podczas wprowadzania danych, procedury czyszczenia danych lub ograniczenia bazy danych w celu wymuszenia unikalności.
Final Thoughts
W analizie danych adresowanie zduplikowanych wartości jest kluczowym krokiem. Zduplikowane wartości mogą prowadzić do niedokładnych wyników. Skutecznie identyfikując zduplikowane wartości i zarządzając nimi, analitycy danych mogą uzyskiwać precyzyjne i istotne informacje. Wdrożenie wspomnianych technik i przestrzeganie najlepszych praktyk umożliwi analitykom zachowanie integralności danych i wydobycie z nich cennych spostrzeżeń.
- Dystrybucja treści i PR oparta na SEO. Uzyskaj wzmocnienie już dziś.
- EVM Finanse. Ujednolicony interfejs dla zdecentralizowanych finansów. Dostęp tutaj.
- Quantum Media Group. Wzmocnienie IR/PR. Dostęp tutaj.
- PlatoAiStream. Analiza danych Web3. Wiedza wzmocniona. Dostęp tutaj.
- Źródło: https://stackabuse.com/handling-duplicate-values-in-a-pandas-dataframe/
- :ma
- :Jest
- :nie
- :Gdzie
- 1
- 11
- 12
- 20
- 70
- 8
- 9
- a
- powyżej
- dokładny
- Działania
- faktycznie
- w dodatku
- do tego
- adres
- adresowanie
- zaawansowany
- Po
- agregacja
- zmierzać
- Wszystkie kategorie
- Pozwalać
- pozwala
- wśród
- an
- analiza
- analityk
- analitycy
- i
- Inne
- każdy
- pojawia się
- Aplikuj
- Stosowanie
- podejście
- właściwy
- SĄ
- artykuł
- AS
- przydzielony
- At
- automatycznie
- backup
- bar
- na podstawie
- BE
- zanim
- jest
- poniżej
- BEST
- Najlepsze praktyki
- stronniczość
- stronniczy
- bob
- granica
- ale
- by
- obliczać
- oblicza
- CAN
- walizka
- Etui
- Spowodować
- Wykres
- Wykrywanie urządzeń szpiegujących
- Dodaj
- Sprzątanie
- Kolumna
- kolumny
- połączenie
- połączyć
- wspólny
- kompleks
- zrozumieć
- Prowadzenie
- Rozważać
- za
- wobec
- Ograniczenia
- zawiera
- Odpowiedni
- Stwórz
- stworzony
- istotny
- Aktualny
- zwyczaj
- dostosowywanie
- dane
- analiza danych
- wprowadzanie danych
- Baza danych
- czynienia
- Domyślnie
- zależy
- opisane
- Wykrywanie
- Ustalać
- różne
- bezpośrednio
- dyskutować
- omówione
- dystans
- dokument
- robi
- darowizna
- duplikaty
- podczas
- każdy
- faktycznie
- wydajny
- skutecznie
- element
- wyeliminować
- eliminując
- umożliwiać
- Umożliwia
- zakończenia
- egzekwować
- zapewnić
- wejście
- równy
- Błędy
- przykład
- Z wyjątkiem
- istnieć
- wyjaśnienie
- odkryj
- wyciąg
- kilka
- W końcu
- i terminów, a
- Skupiać
- następujący
- następujący sposób
- W razie zamówieenia projektu
- Częstotliwość
- od
- funkcjonować
- Funkcje
- przyszłość
- Wzrost
- wygenerowane
- git
- cel
- wykres
- większy
- Zarządzanie
- poprowadzi
- uchwyt
- Prowadzenie
- hands-on
- Have
- tutaj
- unosić
- W jaki sposób
- How To
- Jednak
- HTTPS
- i
- identiques
- zidentyfikowane
- identyfikator
- identyfikuje
- zidentyfikować
- identyfikacja
- if
- wdrożenia
- wykonawczych
- ważny
- in
- niedokładny
- zawierać
- włączony
- Włącznie z
- wskaźnik
- wskazać
- wskazuje
- Informacja
- początkowy
- wkład
- wgląd
- spostrzeżenia
- przykład
- integralność
- najnowszych
- przedstawiać
- Wprowadzenie
- przywołany
- problemy
- IT
- JEGO
- John
- Trzymać
- Etykiety
- Nazwisko
- prowadzić
- UCZYĆ SIĘ
- nauka
- Długość
- niech
- LG
- Biblioteka
- LIMIT
- Lista
- stracił
- Dokonywanie
- zarządzanie
- zarządzający
- znak
- wyraźny
- Mecz
- dopasowywanie
- matplotlib
- max
- Może..
- oznaczać
- znaczenie
- znaczy
- środków
- wzmiankowany
- metoda
- metody
- błędy
- Modyfikacje
- zmodyfikowano
- modyfikować
- jeszcze
- większość
- wielokrotność
- musi
- Nazwa
- Nazwy
- Natura
- wymagania
- Nowości
- już dziś
- numer
- uzyskać
- występujący
- of
- Oferty
- on
- ONE
- działanie
- Option
- Opcje
- or
- oryginalny
- Inne
- Pozostałe
- ludzkiej,
- na zewnątrz
- opisane
- wydajność
- đôi
- pandy
- parametr
- parametry
- wzory
- wykonać
- wykonywane
- wykonywania
- plato
- Analiza danych Platona
- PlatoDane
- odgrywa
- możliwy
- potencjalnie
- Praktyczny
- praktyki
- precyzyjny
- zapobiec
- poprzedni
- wygląda tak
- prawidłowo
- zapewniać
- Python
- stosunek
- Przyczyny
- niedawny
- nagrany
- dokumentacja
- usunąć
- usuwanie
- obsługi produkcji rolnej, która zastąpiła
- wymiana
- reprezentować
- reprezentowanie
- Wymaga
- odpowiednio
- odpowiedzialność
- ograniczać
- wynikły
- Efekt
- zachować
- powrót
- powraca
- Pierścień
- Rola
- korzeń
- RZĄD
- reguły
- s
- taki sam
- scenariusze
- wynik
- druga
- Sekcja
- działy
- Serie
- zestaw
- Shadow
- arkusz
- powinien
- znaczący
- podobny
- Prosty
- po prostu
- ponieważ
- kilka
- specyficzny
- Nadużycie stosu
- standardy
- Startowy
- Ewolucja krok po kroku
- Cel
- Stop
- strategie
- sznur
- student
- Studenci
- kolejny
- streszczać
- dostosowane
- trwa
- biorąc
- Techniki
- Testy
- niż
- że
- Połączenia
- Przyszłość
- ich
- Im
- następnie
- Tam.
- w związku z tym
- Te
- one
- Trzeci
- to
- myśl
- próg
- Przez
- czas
- Szereg czasowy
- czasy
- znak czasu
- pod tytulem
- do
- razem
- Kwota produktów:
- przejście
- godny zaufania
- drugiej
- zrozumieć
- wyjątkowy
- wyjątkowość
- Aktualizacja
- aktualizowanie
- us
- posługiwać się
- używany
- za pomocą
- UPRAWOMOCNIĆ
- uprawomocnienie
- Cenny
- wartość
- Wartości
- różnorodny
- Ve
- istotny
- chcieć
- była
- sposoby
- we
- DOBRZE
- Co
- jeśli chodzi o komunikację i motywację
- ilekroć
- czy
- który
- Podczas
- dlaczego
- będzie
- w
- w ciągu
- X
- You
- zefirnet
- zero