Przetwarzanie danych w data science

Jednym z podstawowych wyzwań jakie stoją przed data scientistami jest odpowiednia analiza zbiorów danych. Czasami takimi rzeczami zajmują się data analyst, ale jednak dla obu specjalności wiedza o tym jak postępować ze zbiorami danych jest bardzo ważna.

Po pierwsze przydaje się wiedza biznesowa na temat danych z jakimi ma się do czynienia, po to by zrozumieć, co poszczególne kolumny tabeli, którą dostaliśmy reprezentują. Czasem może to wymagać jakiegoś rozeznania w temacie. Tutaj możę się przydać też cecha, którą każdy data scientist powinien posiadać – czyli ciekawość. Im lepiej poznamy dany temat tym lepiej będziemy w stanie przeanalizować dane i uzyskać z nich przydatne wyniki. Przyda się też komunikatywność – aby informacje na temat danych zdobyć od ludzi, którzy wiedzę biznesową posiadają.

Po drugie – ważne jest, by zastanowić się, które z posiadanych przez nas danych mogą mieć wpływ na wynik, którego szukamy oraz jakie te korelacje mogą być. Jeśli na przykład chcemy przewidzieć wzrost czytelnictwa w danej grupie wiekowej będzie nas interesował wiek oraz ilość przeczytanych książek w ciągu roku. Ale niekoniecznie będzie nas interesował region czy płeć czytelników. Dlatego też już na wstępie pewne dane możemy wyciąć, jeśli wiemy, że do wyniku nas nie przybliżą.

Trzecia rzecz – dane nie zawsze są uporządkowane i kompletne. Możemy się spotkać z tabelami w których brakuje danych dla jakiejś kolumny w pewnym procencie wierszy. Co wtedy? Podejścia są różne – jeśli procent takich danych jest mały można pokusić się o usunięcie tych wierszy. Jednak jeśli danych nie mamy dużo i nie chcemy niczego usuwać częstą praktyką jest wstawienie w puste miejsca mediany wartości z danej kolumny. Spotkałam się też z uzupełnianiem pustych miejsc wartością średnią.

Ostatnie – często by dane łatwiej się przetwarzało pozbywamy się wartości tekstowych i zamieniamy je na wartości liczbowe. I tak na przykład gdy mamy kolumnę przechowującą płeć w formacie F lub M, możemy ja zamienić na reprezentację za pomocą cyfr 1 i 0.

Pierwsze problemy:)

Kiedy zastanawiałam się nad tematem aplikacji na konkurs „Daj się poznać”, znalazłam stronę o której już tutaj wspominałam – kaggle.com. Jest tam wiele różnych zbiorów danych a także konkursów, gdzie można stawać w szranki z innymi. Przedmiotem jednego z takich konkursów był taki, który wybrałam na realizację w ramach „Daj się poznać” – „Partly Sunny with a Chance of Hashtags. What can a #machine learn from tweets about the #weather?”

Wczoraj pomyślałam sobie, że rzucę okiem jakoś bardziej na te dane, które tam są, bo może już coś zacznie mi się nasuwać jeśli chodzi o rozwiązanie tego problemu. Tymczasem okazało się, że jeszcze przede mną długa droga, bo podane pliki wejściowe nie mówią mi specjalnie dużo. Pewnie to przez to, że do tej pory zajmowałam się bardziej analizą danych niż machine learning. Ale przynajmniej wiem, czego nie wiem:)

Jednak poważniejszy nieco problem dla mnie pojawił się, gdy zaczęłam szukać zbiorów danych Twittera. Robiłam to już wcześniej, ale nie sprawdziłam tego do końca i okazuje się, że chyba wszystkie dane, które mogłyby mi się przydać zostały z internetu skasowane na prośbę Twittera:( Pozostaje tylko dostęp przez API, ale tam chyba nie wyciągnę zbyt wielu danych.

Jednak nie martwi mnie to zbytnio, ponieważ od początku zakładałam iż zgłoszony temat pracy może się zmienić i tak chyba będzie w tym przypadku.
Zdecyduję, gdy jeszcze troszkę się z tematu podszkolę.

Nadal w kosmicznym klimacie – Jupyter

Ostatnio w czasie kursu o którym wspomniałam w poprzednim wpisie – Dataquest miałam okazję zapoznać się narzędziem jakim jest Jupyter.
Jest to środowisko często używane w świecie data science. Mamy w nim do dyspozycji konsolę w której możemy wywoływać kolejne komendy, ale jest to dość rozbudowana konsola przypominając raczej rich text editor. W wersji online wygląda to mniej więcej tak:

Jupyter

W polu z zieloną obwódką możemy wywoływać polecenia. Przykład totalnie prosty:

Jupyter

Każde z tych pól to tzw komórka (cell). Aby po wpisaniu do niej dany kod się wywołał musimy nacisnąć Shift + Enter. W moim przypadku pokazanym powyżej wyglądało to tak:

Wpisałam a = 3, Shift + Enter, b = 4, Shift + Enter, c = a*b, Shift + Enter, print(c), Shift + Enter.

I tak dostałam wynik mnożenia liczb, które sobie zdefiniowałam. Oczywiście można by to wszystko umieścić w jednej komórce i wówczas wcisnąć Shift + Enter. Wyglądało by to wtedy tak:

Jupyter

Co jest fajne i ciekawe w tej konsoli, to że każdą komórkę w każdej chwili możemy zmienić. Czyli w tym pierwszym przykładzie mogłabym na przykład zmienić linijkę b = 4 na b = 5 i wywołać wszystko jeszcze raz. Jednak nie musiałabym przechodzić komórka po komórce i klikać Shift + Enter, ale mam w menu do dyspozycji coś takiego:

Jupyter

Wówczas możemy wybrać opcję „Run All” albo odpowiednio do potrzeb którąś z innych i zawartość komórek wywoła się hurtowo. Komórki na których pracujemy możemy również dowolnie przesuwać w górę i w dół, usuwać albo dodawać w dowolnym miejscu.

Jeśli chodzi o języki nie jesteśmy ograniczeni do Pythona. Jupiter pozwala nam korzystać z różnych języków:

Jupyter

Na zrzucie ekranu widać „Notebook” – o co chodzi? Otóż, jest to zbiór dokumentów, które mogą zawierać zarówno kod jak i wykresy czy tekst. Wybieramy język dla danego notesu aby Jupiter wiedział czego ma użyć do wywołania naszego kodu. Notesy możemy zapisywać na dysku:

Jupyter

By je później odczytać bądź komuś przesłać.

Wygląda na to, że Jupyter to całkiem fajne narzędzie i będę z niego jeszcze wiele razy korzystać podczas nauki:)

 

Data Science – nowe materiały

Niby druga notka nie musi być w temacie konkursowym, ale jakoś tak mi dziś wyszło. Koniecznie chciałam napisać o pewnym nowym znalezisku jakie odkryłam w zeszłym tygodniu. Mianowicie po pierwsze artykuł
„Building a data science portfolio: Storytelling with data”, który krok po krok opowiada jak zacząć przygodę z danymi i Pythonem. Genialny, tylko bardzo długi. Artykuł pochodzi z bardzo ciekawego bloga Dataquest. Jest to platforma do nauki pod hasłem „Become a Data Scientist – Learn by writing code, working with data, and building projects in your browser”. Są tam trzy ścieżki: Data Scientist, Data Analyst i Data Engineer. Jedną z nich wybiera się na początku i następnie realizuje kolejne misje. Logo portalu to rakieta, więc wszystko jest utrzymane w klimacie nieco kosmicznym, co chyba świetnie pasuje do Data Science.

Tryb nauki wygląda bardzo fajnie, bo jest troszkę tekstu do przeczytania, po czym instrukcje do zrealizowania w okienku z Pythonem. Jest to dużo bardziej dynamiczny tryb nauki niż Edx i chyba bardziej mi odpowiada. Nie wiem jeszcze jak dokładnie wygląda ewentualna certyfikacja, bo póki co korzystam z wersji darmowej, ale opłaty są miesięczne/roczne, więc całkiem inaczej niż w Edx, gdzie ostatnio certyfikacja podrożała dwukrotnie.

Chwilowo zatem próbuję swoich sił w misjach Dataquest. Bardzo podoba mi się tam też to, że jest dużo zadań „z życia” – na przykład misje typu „Guided Project: Using Jupyter Notebook. Learn how to perform analysis and communicate results with Jupyter notebook.” albo „Guided Project: Explore U.S. Births. Practice the basics of Python by analyzing births in the U.S.” No ale Edx z kolei ma korzystanie z Azure Machine Learning:) Tak więc mocno się uzupełniają.

 

Python w Data Science

Poprzednio pisałam o statystyce i Excelu, ale to co mnie interesuje najbardziej, to jednak programowanie. Dziś jednak będzie krótko, ponieważ temat, którego poznania się podjęłam jest naprawdę ogromny:)

Dlaczego wybrałam Pythona nie R? Chyba już wspomniałam, iż zależało mi na tym, żeby to był język, który mogę wykorzystać też do czegoś innego. Zresztą w zeszłym roku, właśnie tuż przed rozpoczęciem poprzedniej edycji Daj się poznać miałam swoje pierwsze podejście do Pythona, ale w postaci Django. Ostatecznie jednak w konkursie zdecydowałam się na realizację aplikacji androidowej, bo jej tematyka była ciekawsza.

I tak w Pythonie do tej pory poznałam dwie dość ciekawe rzeczy związane z Data Science: NumPy i Pandas.

NumPy – w dużym skrócie

Jest to moduł/rozszerzenie do Pythona, które umożliwia nam operacje na macierzach i wielowymiarowych tablicach. Jest to zatem niesamowicie przydatne w przypadku przetwarzania danych.
Jedną z podstawowych rzeczy, które często są używane przy pracy z danymi to typ ndarray – jest to tablica, która w odróżnieniu od tablic wbudowanych w Pythona pozwala na przechowywanie danych tylko jednego typu oraz muszą mieć z góry zdefiniowany rozmiar. Dzięki temu tak skonstruowane tablice są dużo bardziej wydajne. W przypadku dużych ilości przetwarzanych danych naprawdę ma to znaczenie.

Pandas – w dużym skrócie

Jest to biblioteka, która dostarcza funkcjonalności związanych z przetwarzaniem danych i ich analizą. Za jej pomocą możemy dokonywać podobnych operacji jak te o których pisałam w poprzednim wpisie poświęconym tematowi Data Science – wyznaczać wartości średnie, mediany, odchylenia standardowe itd. Możemy również agregować dane na różne sposoby, tworzyć pivoty a także rysować wykresy. Właściwie realizując lekcje z Pandas robiłam niemalże to samo co wcześniej w lekcjach z Excela związanymi z przetwarzaniem danych.

NumPy i Pandas mają całą masę funkcjonalności – wielu z nich na pewno jeszcze nie znam, ale wszystko przede mną!