Rozdział ten poświęcony będzie „niekonwencjonalnym” metodom pozyskiwania danych. Myśląc o „niekonwencjonalnych metodach” nie mam na myśli kradzieży.
Konwencjonalna metoda pozyskiwania danych to uzyskanie ich w jakimś pliku, gdzie będą one wpisane w takim lub innym (standardowym, lub nie) formacie.
CSV
CSV czyli Comma separated values (dane oddzielone przecinkiem).
Najbardziej „standardowy” format danych tekstowych.
Liczby prezentowane są jako wartości dziesiętne, do oddzielenia części ułamkowej używana jest kropka dziesiętna. Generalnie jest kłopot z krajami (regionami), w których część ułamkowa od całkowitej oddzielona jest przecinkiem. Wówczas format musi być uogólniony: Zamiast przecinka oddzielającego kolejne wartości używany jest średnik. Liczby zapisywane są z przecinkiem dziesiętnym.
Stąd większość dobrych programów rozumiejących ten format pozwala zdefiniować znak rozdzielajacy poszczególne pola.
Kolejny problem pojawia się, gdy pole tekstowe zawiera znak, który powinien być traktowany jako jako znak rozdzielający pola. Wówczas całe pole musi być ujęte w cudzysłowy.
Osobnym problemem są programy typu arkusz kalkulacyjny (Excel, LibreOffice Calc,…). Są one na ogół „zlokalizowane”1. Stąd normalny, „polski” Excel nie rozpoznaje wartości typu 1.3 (jeden i trzy dziesiąte). Rozpoznaje za to 1,3… I tak będzie wartości eksportował do pliku CSV (oddzielając pola znakami średnik).
Warto wiedzieć (i pamiętać), że w pliku xlsx (podobnie jak i ods)2 wszystkie wartości pamiętane są jako liczby dziesiętne zapisane tekstowo z kropką dziesiętną… Zawartość komórki =1/3
(formuła) pamiętana jest w dwu formatach: jako tekst („zapis” formuły) i jako wartość (0.333333333333333). Gdy skopiujemy zawartość komórki w trybie specjalnym (tylko liczby) to w pliku pamiętane będą dwie formy:
- wyświetlana (0,333333333333333),
- wartość (0.333333333333333).
Może to mieć jakiś wpływ na dokładność obliczeń…
Dobra wiadomość jest taka, że zachowanie tych programów można zmienić (prosząc by wyświetlał wartości dziesiętne z kropką).
Matlab
Matlab ma możliwość eksportu danych do postaci tekstowej, ale również do postaci binarnej. Ta ostatnie nie jest „przenośna” (inne programy będą miały kłopoty z jej odczytaniem).
Matlab nie akceptuje wszystkich formatów danych wynikających z lokalizacji, w większości wypadków traktuje dane przyjmuje jako liczby dziesiętne z kropką; oczekuje tekstu w formacie ASCII (to znaczy bez znaków diakrytycznych).
Nie widzę możliwości zmiany sposobu traktowania przecinka. Dokumentacja mówi, że w systemach unixowych Matlab zawsze oczekuje, że separatorem dziesiętnym jest kropka. W przypadku systemów windowsowych informacja jest enigmatyczna: Matlab nie obsługuje każdej lokalizacji; w takim wypadku użyta zostanie lokalizacja C.
Import danych z tablicy w pliku PDF
Często dostępne dane udostępnione są w pliku PDF. W zasadzie stosunkowo łatwo jest skopiować zawartość takiego pliku, ale czasami pliki PDF są dosyć nieprzyjazne. Czasmi ciężko skopiować wiersz, a skopiowanie kolumny z pliku PDF jest właściwie niemożliwe.
Aplikacja tabula pomaga rozwiązać te problemy.
Oprogramowanie (aplikacja napisana w Java) po uruchomieniu tworzy serwer z bardzo wygodnym interfejsem dostępnym przez dowolną przeglądarkę WWW. Pozwala załadować plik PDF, a następnie wskazać tabele (fragmenty tabel) które chcemy z pliku wyciągnąć i skonwertować do formatu CSV.
Program jest bardzo dobrze udokumentowany i bardzo łatwy w obsłudze.
Import danych z wykresu
Jeszcze gorszą sytuacją jest, gdy posiadamy jedynie dostęp do wykresu danych. W takiej sytuacji wydzwać się może, że sytuacja jest beznadziejna…
Bardzo wygodnym narzędziem może być napisana w Javie aplikacja WebPlotDigitizer. Pozwala ona na wczytanie pliku graficznego zawierającego wykres, a następnie w sposób automatyczny na zdigitalizowanie wykresu. Łatwo można zebrane punkty uzupełnić w sposób ręczny.
Program posiada dosyć bogatą dokumentację oraz przydatny tutorial na YouTube.
Dane zapisywane są w pliku CSV.
Tym okropnym terminem będącym kalką z języka angielskiego (od locale) określa się proces tworzenia przystosowanej do danego języka i lokalnych zwyczajów wersji programu, czyli sposób zapisu liczb niecałkowitych, słownik używany do określania poprawności językowej, znak waluty‚… ↩︎
Oba formaty (Excel i Calc) to skompresowane katalogi zawierające tekstowe pliki XML. ↩︎