Przejdź do treści

Power Query & Excel – zliczanie wystąpień liter polskiego alfabetu w każdym słowie

Policzymy wystąpienia wszystkich liter polskiego alfabetu w każdym wyrazie. Wynik przedstawimy w postaci złożonej tabeli. Kolumnami będą litery alfabetu, a wartościami liczby wystąpień każdego znaku.

Dane źródłowe

Potrzebne będą dwie tabele:

tabela – baza miast

tabela – alfabet polski

Zamiana wszystkich liter na małe

Na samym początku należy zamienić wszystkie litery na małe. Power Query jest key sensitve i dla niego litery „A” i „a” nie są sobie równe. Należy ujednolicić format zapisu, aby poprawnie zliczyć znaki.

Dane w zapytaniu „alfabet polski” mają już odpowiedni format tekstu. Przejdź do zapytania „zliczanie liter”.

  1. Zamień wszystkie litery na małe w kolumnie [miasto]
    • Zaznacz kolumnę [miasto]
    • Zakładka „Przekształć
    • Polecenie „Format
    • Opcja „Małe litery

Wydzielenie każdej litery

Stworzymy nową kolumną o strukturze List, w której będą wyodrębnione wszystkie znaki do osobnych komórek.

  1. Dodaj kolumnę niestandardową i nazwij ją [lista znaków]
    • Zakładka „Dodaj kolumnę
    • Opcja „Kolumna niestandardowa
    • Nazwij kolumnę „lista znaków

W pasku formuły wpisz funkcję:

Text.ToList([miasto])
Text.ToList([wskaż kolumnę z danymi])

Funkcja Text.ToList() rozdziela każdy znak. Zostaje w ten sposób utworzona nowa kolumna [lista znaków] z danymi typu List wewnątrz której są odseparowane wszystkie znaki (litera, spacja, liczba).

Dodawanie indeksu

W ten sposób nadamy unikalny numer każdemu rekordowi. W późniejszym etapie będziemy wyodrębniać każdy znak z kolumny [lista znaków] do osobnego wiersza. Dzięki numeracji będziemy wiedzieć jaka grupa liter należy do słowa np. wszystkie litery pod numerem 1 będą należeć do „Jelenia Góra”

  1. Dodaj kolumnę indeks
    • Zakładka „Dodaj kolumnę
    • Opcja „Kolumna Indeksu
    • Polecenie „Od 1

Rozwijanie danych

Po rozwinięciu danych z kolumny [lista znaków] otrzymamy w każdym wierszu odseparowany znak każdego wyrazu.

  1. Rozwiń dane typu List w kolumnie [lista znaków]
    • Kliknij w ikonę strzałek, która znajduję się obok nazwy kolumny [lista znaków]
    • Z rozwijanej listy wybierz opcję „Rozwiń do nowych wierszy

Dane prezentują się następująco:

Każdy znak został odseparowany. Po odpowiednim odfiltrowaniu znaków rozdzielających wyrazy w kolumnie [lista znaków] będzie można policzyć liczbę wystąpień liter w każdym słowie.

  • Pod numerem 1 w kolumnie [indeks] mamy wszystkie znaki dla miasta „Jelenia Góra”
  • Pod numerem 2 w kolumnie [indeks] mamy wszystkie znaki dla miasta „Legnica”

Odfiltrowywanie zbędnych znaków

Aby policzyć tylko litery należy wyfiltrować zbędne znaki np. spację

  1. Odfiltruj niepotrzebne znaki z kolumny [lista znaków]
    • Kliknij w strzałkę znajdującą się obok nazwy kolumny [lista znaków]
    • Odznacz znaki, które nie występują w polskim alfabecie

Grupowanie danych – zliczanie liter

Poprzez grupowanie nadamy nowy kształt danym, dzięki czemu zliczymy znaki dla każdego wyrazu

  1. Pogrupuj dane
    • Zakładka „Przekształć
    • Opcja „Grupowanie według

Ustaw kryteria tak jak poniżej:

Grupowanie według kolumn [indeks] i [lista znaków] nada odpowiedni kształt danym i wykona poniższe operacje

  • Kolumna [liczność] z operacją „Zlicz wiersze” – zliczy wystąpienia każdego znaku.
  • Kolumna [w] z operacją „Wszystkie wiersze” –  zwróci minitabelki z wszystkimi danymi.

Zaznaczanie pierwszego wiersza

Po samym numerze [indeks] nie jesteśmy w stanie stwierdzić dla jakiego miasta są zliczane litery. Ta informacja zawarta jest w minitabelkach w kolumnie [w].

  1. Dodaj „kolumnę niestandardową
    • Zakładka „Dodaj kolumnę
    • Opcja „Kolumna niestandardowa
    • Nazwij kolumnę „miasto

W pasku formuły wpisz funkcję:

Table.FirstN([w], 1)[miasto]

Funkcja Table.FirstN() zaznacza w każdej minitabelce z kolumny [w] pierwszy wiersz. Następnie zostaje wyodrębniania kolumna [miasto] w formacie typu List. W skrócie funkcja Table.FirstN() mówi: Zaznacz pierwszy wiersz i pozostaw tylko dane z kolumny [miasto]

Dane prezentują się następująco:

Wyodrębnianie wartości

Nazwa miasta jest zagnieżdżona w kolumnie [miasto]. Rozwiniemy dane z tej kolumny, aby pozyskać nazwy miast

  1. Kliknij w ikonę strzałek obok nazwy kolumny [miasto]
    • następnie wybierz polecenie „Wyodrębnij wartości..”
  • Następnie wyskoczy okienko z ustawieniami. Ustaw parametry tak jak na obrazku poniżej

W polu wyboru ogranicznika łączącego elementy na listach pozostawiamy opcję „brak”, ponieważ każda komórka z danymi typu List w kolumnie [miasto] zawiera tylko jeden element.

Edytor Power Query prezentuje się następująco:

Dodawanie do tabeli brakujących liter alfabetu

Musimy teraz dodać te litery, które nie występuje w nazwach miast. Wykorzystamy do tego funkcję „scalanie zapytań”.

  1. Scal zapytania: „zliczanie liter” z zapytaniem „alfabet
    • Zakładka „Narzędzia główne
    • Opcja „Scal zapytania

Ustaw kryteria tak jak na obrazku poniżej:

W pierwszej tabeli zaznaczamy kolumnę z polskimi znakami – „lista znaków”, a w drugiej kolumnę [alfabet]. Po wyborze sprzężenia „Prawe zewnętrzne” litery, które nie zostaną znalezione w zapytaniu „zliczanie liter” zostaną dodane na końcu tej tabeli. Na poniższym zrzucie zaznaczyłem mintabelkę zawierającą brakujące litery alfabetu.

  1. Rozwiń dane z kolumny [alfabet]
    • Kliknij w ikonę strzałek, która znajduję się obok nazwy kolumny [alfabet]
    • Z rozwijanej listy wybierz opcję „Rozwiń do nowych wierszy

Dane prezentują się następująco:

Przestawianie kolumn

Obecna struktura tabeli jest mało przyjazna dla oka. Zmienimy jej schemat w taki sposób:

  • nazwami kolumn będą litery alfabetu w prawidłowej kolejności
  • w wierszach będą nazwy miast
  • wartościami liczba wystąpień każdej litery
  1. Posortuj dane od A do Z w kolumnie [alfabet.1]
  2. Usuń kolumny: [w] i [lista znaków]
  3. Przestaw kolumny:
    • Zaznacz kolumnę [alfabet.1]
    • Zakładka „Przekształć
    • Polecenie „Kolumna przestawna

Ustaw kryteria tak jak na obrazku poniżej:

Polecenie „kolumna przestawna” tworzy nowe nazwy kolumny z zaznaczonej kolumny [alfabet.1], a jako wartości przypisuje dane z kolumny [liczność].

  • pole kolumna wartość – z listy dostępnych kolumn wybieramy kolumnę [Liczność]
  • w polu agreguj funkcję wartości – wybieramy opcję „Nie agreguj”, bo nie chcemy, aby w nowo powstałych kolumnach zostały wykonane jakiekolwiek operacje arytmetyczne na wartościach z kolumny [Liczność]

Dane prezentują się następująco:

Litery diakrytyczne przez Power Query nie są poprawnie sortowane i dlatego nazwy kolumn z takimi znakami są jako ostatnie. Teraz wystarczy odfiltrować niepotrzebne puste wartości w kolumnie [Indeks].