Dlaczego ludzie wolą Pandy niż SQL?


69

Używam SQL od 1996 roku, więc mogę być stronniczy. Korzystałem intensywnie z MySQL i SQLite 3, ale także Microsoft SQL Server i Oracle.

Zdecydowaną większość operacji, które widziałem, wykonałem za pomocą Pandas, można łatwiej wykonać za pomocą SQL. Obejmuje to filtrowanie zestawu danych, wybieranie określonych kolumn do wyświetlenia, zastosowanie funkcji do wartości itd.

Zaletą SQL jest optymalizator i trwałość danych. SQL ma również komunikaty o błędach, które są jasne i zrozumiałe. Panda ma nieco tajemniczy interfejs API, w którym czasem należy użyć jednego [ stuff ], innym razem potrzebujesz [[ stuff ]], a czasem potrzebujesz .loc. Część złożoności Pand wynika z faktu, że dzieje się tak wiele przeciążeń.

Próbuję więc zrozumieć, dlaczego Pandy są tak popularne.


Komentarze nie są przeznaczone do rozszerzonej dyskusji; ta rozmowa została przeniesiona do czatu .
Sean Owen,

Odpowiedzi:


51

Prawdziwe pierwsze pytanie brzmi: dlaczego ludzie są bardziej produktywni dzięki abstrakcjom DataFrame niż abstrakcjom czysto SQL.

TLDR; SQL nie jest ukierunkowany na (ludzki) proces tworzenia i debugowania, a DataFrames są.

Głównym powodem jest to, że abstrakcje DataFrame pozwalają konstruować instrukcje SQL, unikając jednocześnie pełnego i nieczytelnego zagnieżdżania. Schemat pisania zagnieżdżonych procedur, komentowania ich w celu sprawdzenia, a następnie odkomentowania, zastępuje się pojedynczymi liniami transformacji. Możesz oczywiście uruchamiać rzeczy wiersz po wierszu w replice (nawet w Spark) i przeglądać wyniki.

Rozważ przykład dodania nowej tabeli przekształconej (kolumna zniekształconego łańcucha) do tabeli, a następnie pogrupowanie według niej i wykonanie pewnych agregacji. SQL staje się dość brzydki. Pandy mogą to rozwiązać, ale brakuje pewnych rzeczy, jeśli chodzi o naprawdę duże zbiory danych lub poszczególne partycje (być może ostatnio ulepszone).

Ramki danych powinny być postrzegane jako wysokopoziomowe interfejsy API do procedur SQL, nawet jeśli w przypadku pand w ogóle nie są renderowane w niektórych planistach SQL.

-

Prawdopodobnie możesz przeprowadzić wiele dyskusji technicznych na ten temat, ale rozważam perspektywę użytkownika poniżej.

Jednym z prostych powodów, dla których możesz zobaczyć o wiele więcej pytań na temat manipulacji danymi Pandas, w przeciwieństwie do SQL, jest to, że używanie SQL z definicji oznacza korzystanie z bazy danych i wiele przypadków użycia w dzisiejszych czasach wymaga po prostu kawałków danych dla „ zadania „gotowe” (z .csv, interfejsu API itp.). W takich przypadkach ładowanie, przechowywanie, manipulowanie i wyodrębnianie z bazy danych nie jest wykonalne.

Jednak biorąc pod uwagę przypadki, w których przypadek użycia może uzasadniać użycie Pandy lub SQL, na pewno się nie mylisz. Jeśli chcesz wykonać wiele powtarzających się zadań związanych z manipulowaniem danymi i zachować wyniki, zawsze zalecałbym najpierw przejście przez SQL. Z tego, co widziałem, powód, dla którego wielu użytkowników, nawet w tych przypadkach, nie korzysta z SQL, jest dwojaki.

Po pierwsze, główną zaletą pand w porównaniu z SQL jest to, że jest częścią szerszego wszechświata Pythona, co oznacza, że ​​za jednym zamachem mogę ładować, czyścić, manipulować i wizualizować moje dane (mogę nawet wykonywać SQL poprzez Pandas ...). Po drugie, zbyt wielu użytkowników nie zna zakresu możliwości SQL. Każdy początkujący uczy się składni SQL (SELECT, FROM, WHERE itp.) Jako sposobu na przeniesienie danych z bazy danych do następnego miejsca. Niektórzy mogą wybrać bardziej zaawansowaną składnię grupowania i iteracji. Ale potem pojawia się znaczna przepaść wiedzy, dopóki nie dojdziesz do ekspertów (DBA, Data Engineers itp.).

tl; dr: Często zależy to od przypadku użycia, wygody lub luki w wiedzy dotyczącej zakresu możliwości SQL.


2
Myślę, że SQL w dużej mierze oparty na ustawieniach odgrywa dużą rolę, gdy wiele osób z innych obszarów technicznych jest przyzwyczajonych do obsługi danych linia po linii. Weź również pod uwagę, że dane są najczęściej tylko dane do pand, ale różnych silników SQL obsługują różne wbudowane funkcje, które mogą dostać szalenie irytujące szybko, jeśli trzeba posiekać i zmienić w ciągu dnia pracy
Dave

3
Nie powiedziałbym, że to nie jest wykonalne. Jeśli umieścisz dane w ramce danych pandy, prawdopodobnie prawdopodobnie umieścisz je w bazie danych PostgreSQL. Ale po pierwsze, to prawdopodobnie więcej wysiłku i czasu niż byś zaoszczędził.
jpmc26,

2
Zgadzam się, że niektóre podejścia ETL wydają się być decyzjami zorientowanymi na programistę. Oznacza to, że wolą manipulować danymi, a następnie prezentują tę „idealną” zawartość bazy danych. Jak jednak wskazujesz, jeśli można tego dokonać za pomocą kilku zapytań SQL, dodatkowa warstwa programowa nie jest potrzebna. Dokładnie to, z czym się ostatnio spotkałem. Jak wskazuje OP i twoja odpowiedź, możliwe, że ludzie „oldschoolowi” lub DBA koncentrują się na tym i mówią, dlaczego nie zrobić tego w SQL (nawet kilka prostych zapytań!). To powiedziawszy, odkryłem, że pandy są bardzo potężne w przypadku bardzo różnorodnych zestawów danych.
SaltySub2

1
@SaltySub Tylko kwestia przeniesienia rzeczy z warstwy programowej do SQL: To słuszna kwestia i może być całkowicie poprawna, ale posunięcie się do zakopania logiki aplikacji w procedurach SQL może przynieść własny ból głowy.
Electric Head

1
@ElectricHead Zgadzam się, że musi istnieć odpowiednia równowaga. Jeśli seria zapytań SQL może odpowiednio wykonywać zadania, zdecydowanie może być łatwiejsza i wydajniejsza. I odwrotnie, jak wskazujesz, jeśli trzeba umieścić ogromną logikę w procedurach SQL itp., To zdecydowanie należy rozważyć pandy. Szczególnie jak wyżej, jeśli używasz różnych smaków baz danych - różnice w składni SQL mogą być wtedy bardzo owłosione.
SaltySub2

29

O ile nakładanie się tych dwóch rzeczy zachodzi na siebie, to porównuje się jabłka z pomarańczami.

panda to zestaw narzędzi do analizy danych zaimplementowany w Pythonie, języku programowania ogólnego przeznaczenia. SQL jest językiem specyficznym dla domeny do wyszukiwania danych relacyjnych (zwykle w systemie zarządzania relacyjnymi bazami danych, których przykładami są SQLite, MySQL, Oracle, SQL Server, PostgreSQL itp.).

SQL implikuje

  • praca z danymi w RDBMS *, które mogą, ale nie muszą być odpowiednie do obciążenia, nawet jeśli jest to tylko mała baza danych SQLite,
  • znajomość domeny bazy danych (jako użytkownik końcowy, programista i / lub administrator; często sugeruję, że „SQL jest szybszy” to ogromne uproszczenie), oraz
  • pokonywanie nieistotnej krzywej uczenia się w efektywnym korzystaniu z SQL, szczególnie w specjalistycznych aplikacjach, takich jak analiza danych (w przeciwieństwie do tworzenia prostych raportów prostych danych).

* Warto podkreślić fakt, że SQL jest tak specyficzny dla domeny, że staje się coraz mniej odpowiedni do pracy z coraz bardziej popularnymi alternatywami dla relacyjnych baz danych, takich jak bazy danych NoSQL . Stanowi to zasadniczą zmianę w sposobie przechowywania i struktury danych, a tak naprawdę nie ma powszechnie powszechnego sposobu dostępu do nich, takiego jak rozwój normalizacji SQL, który ma zostać osiągnięty.

Z drugiej strony Python (pandy są dość „pytoniczne”, więc to prawda), jest elastyczny i dostępny dla osób z różnych środowisk. Może być używany jako „język skryptowy”, jako język funkcjonalny oraz w pełni funkcjonalny język OOP. Możliwości wizualizacji i współdziałanie źródeł danych są wbudowane w pandy, ale możesz dowolnie włączać wszystko, co Python może zrobić w swój przepływ pracy (co jest większością rzeczy); naukowy ekosystem Pythona rozkwitł i zawiera świetne narzędzia, takie jak Notatnik Jupyter i niezbędne biblioteki Scipy, takie jak Matplotlib i Numpy (na których bazują pandy). Istotnymi elementami analizy danych pand jest R- zainspirowane, a statystycy na ogół nie zastanawiają się nad tym, czy używają R (a może coraz częściej pand!) nad umieszczaniem wszystkiego w bazie danych i pisaniem analiz w SQL.

Nie twierdzę, że pandy są lepsze niż SQL i odwrotnie, ale SQL jest narzędziem bardzo specyficznym dla domeny, podczas gdy pandy są częścią gigantycznego, elastycznego i dostępnego ekosystemu. Pracuję z systemami danych geoprzestrzennych, których relacyjne bazy danych stanowią ogromną część, a SQL jest potężnym i niezbędnym narzędziem. Jednak pandy są równie istotną, jeśli nie bardziej istotną częścią mojego codziennego zestawu narzędzi, a SQL często sprowadza się do pobierania danych - być może z pewnym wstępnym przetwarzaniem - więc mogę to robić w pandach.


1
To jedyna prawdziwa odpowiedź, powinna być wybrana. SQL i Pandy to dwie różne rzeczy, nie rozumiem, jakie porównania ludzie próbują zrobić.
gented

Podejrzewam, że jest to perspektywa dla użytkownika końcowego, aby napisać coś w stylu kodu, aby pobrać i masować skądś niektóre dane i wypluwać niektóre liczby. Nie jestem do końca zaskoczony; Miałem doświadczenie z pierwszej ręki, w jaki sposób analitycy danych prezentowali starą, ale poza tym nieistotną bazę danych Oracle, nawet nie pierwszy pomysł, co to jest i jak się z nią połączyć, nie mówiąc już o wydobyciu danych. Wierzę, że zdradza to podstawowy brak zrozumienia technologii - dodałem trochę, aby, mam nadzieję, podkreślić, jak szybko spada nieporozumienie z zakresu SQL.
Electric Head

Rzuciłbym ci wyzwanie, że jesteś nieistotny w sytuacjach NoSQL. Rozważmy na przykład postęp, jaki PostgreSQL zrobił dzięki swojej pamięci JSON.
jpmc26

Starałem się starannie dobierać słowa; PostgreSQL wciąż jest RDBMS, mimo że robi wiele rzeczy dobrze (podobnie jak SQL Server pomimo obsługi grafów). Ale nieco złagodziłem sformułowanie, ponieważ wciąż jest to dobra rzecz: istnieje pewna crossover i, co ważne, interfejsy API SQL istnieją dla niektórych systemów NoSQL. Jest to jednak crossover, SQL nie jest uniwersalnym językiem i nie wszystkie dane mają strukturę relacyjną.
Electric Head

Myślę, że możesz zrobić wszystko w SQL, co jest możliwe w pandach. SQL nie jest elastyczny, ale jest bardzo zoptymalizowany.
Media

22

Po pierwsze, pandy nie są tak popularne. Używam zarówno pand, jak i SQL. Najpierw próbuję zrozumieć zadanie - jeśli można to zrobić w języku SQL, wolę SQL, ponieważ jest on bardziej wydajny niż pandy. Spróbuj pracować na dużych danych (10 000 000 x 50). Spróbuj wykonać operację grupowania zarówno w SQL, jak i pandach. Zrozumiesz.

Używam pand tam, gdzie jest to przydatne - na przykład dzielenie wartości kolumny na tablicę i robienie na niej pewnych rzeczy (np. Wybieranie tylko niektórych wartości z tej tablicy). Teraz tego rodzaju zadanie jest stosunkowo trudne do zakodowania w SQL, ale pandy ułatwią zadanie.


Czy ta nieefektywność jest specyficzna dla pand? Zrobiłem całkiem sporo manipulacji danymi w pamięci w języku C # i uznałem, że jest to dość łatwe i wydajne, pod warunkiem, że pasuje do pamięci i było jednorazowe (tj. Nie ma potrzeby stopniowej aktualizacji indeksów wraz ze zmianami danych).
CodesInChaos

pandy mają być wygodne, ale nie znaczy to, że nie może być szybkie, jeśli używasz go prawidłowo. W końcu wykonanie zapytania SQL dotyczącego danych w bazie danych nie jest magiczne - wymaga zasobów jak wszystko, po prostu (jeśli zrobisz to dobrze!) Masz nadzieję, że wykorzystasz zasoby na starannie skonfigurowanych, rozbudowanych serwerach bazy danych . Ułożenie potoku w pandach lub podobnych (np. Przesyłanie strumieniowe danych zamiast wczytywania ich do pamięci) pozwoli ustalić, jak skuteczne są niektóre wysiłki.
Electric Head

@CodesInChaos Istnieje odpowiedź pandy vs SQl - qr.ae/TUIpzE . Tam opisano zalety i wady używania pand.
Ankit Seth

12

Jestem jedną z tych osób, które korzystałyby (w moim przypadku) z języka R (języka, niekoniecznie narzędzia) w każdym przypadku, gdybym mógł, mimo że znam mój SQL.

Główną korzyścią, którą widzę w potokach Pandas / dplyr / data.table, jest to, że operacje są atomowe i można je czytać od góry do dołu.

W SQL musisz parsować cały skrypt, przeskakując (co jest sumamrizowane, co się łączy i jak - lewy? Wewnętrzny? Prawy ?, czy zastosowano jakieś filtry?), Aby w pełni zrozumieć, co się dzieje.

W Pandas i wsp. Każdy etap potoku jest samodzielny, robi coś z danymi wejściowymi i zwraca dane wyjściowe, ten sekwencyjny proces ułatwia zrozumienie, co się dzieje, ponieważ dla każdej operacji jest jasno określony stan, a nie tylko poziom zapytania.

I tak, możesz wykonywać WITHinstrukcje, ale wymaga to znacznie więcej kodu i nie jest tak jasne, jaki obiekt jest używany w porównaniu do potokowania.


6

Jestem dość nowy w Pandas / Python, ale mam ponad 20 lat jako SQLServer DBA, architekt, administrator itp. Uwielbiam Pandy i staram się, aby zawsze działać w Pandach przed powrotem do mojej wygody, przytulny świat SQL.

Dlaczego RDBMS są lepsze: Zaletą RDBMS jest ich wieloletnie doświadczenie w optymalizacji szybkości zapytań i operacji odczytu danych. Imponujące jest to, że mogą to zrobić, jednocześnie równoważąc potrzebę optymalizacji prędkości zapisu i zarządzania wysoce równoczesnym dostępem. Czasami te dodatkowe koszty ogólne przewyższają zalety Pandas, jeśli chodzi o proste przypadki użycia przez jednego użytkownika. Ale nawet wtedy doświadczony DBA może dostroić bazę danych, aby była wysoce zoptymalizowana pod kątem szybkości odczytu w porównaniu z prędkością zapisu. DBA mogą korzystać z takich rzeczy, jak optymalizacja przechowywania danych, strategiczny rozmiar strony dysku, wypełnianie / wypełnianie strony, strategie kontrolera danych i partycjonowania dysku, zoptymalizowane plany We / Wy, przypinanie danych w pamięci, wstępnie zdefiniowane plany wykonania, indeksowanie, kompresja danych , i wiele więcej. Mam wrażenie, że wielu programistów Pandas nie „ t zrozumieć głębokość, która jest tam dostępna. Myślę, że zwykle dzieje się tak, że jeśli programista Pandas nigdy nie ma danych wystarczająco dużych, aby potrzebować tych optymalizacji, nie doceniają, ile czasu mogą zaoszczędzić od razu po wyjęciu z pudełka. Świat RDBMS ma 30-letnie doświadczenie w optymalizacji tego, więc jeśli potrzebna jest surowa prędkość na dużych zestawach danych, RDBMS można pokonać.

Dlaczego Python / Pandas jest lepszy: To powiedziawszy, prędkość to nie wszystko, aw wielu przypadkach nie jest czynnikiem napędzającym. To zależy od tego, jak korzystasz z danych, czy są one udostępniane i czy zależy Ci na szybkości przetwarzania. RDBMS są na ogół bardziej sztywne w swoich strukturach danych i nakładają na programistę obciążenie, które jest bardziej deterministyczne w zakresie kształtów danych. Pandy pozwalają ci być bardziej luźnym. I to jest mój ulubiony powód, że jesteś w prawdziwym języku programowania. Języki programowania zapewniają nieskończenie większą elastyczność w stosowaniu zaawansowanej logiki do danych. Oczywiście istnieje również bogaty ekosystem modułów i struktur zewnętrznych, do których SQL nie może się zbliżyć. Możliwość przejścia od nieprzetworzonych danych do prezentacji internetowej lub wizualizacji danych w jednej bazie kodu jest BARDZO wygodna. Jest także znacznie bardziej przenośny. Możesz uruchomić Python niemal wszędzie, w tym zeszyty publiczne, które mogą zwiększyć zasięg twoich wyników i szybciej dotrzeć do ludzi. Bazy danych nie przodują w tym.

Moja rada? Jeśli zauważysz, że przechodzisz na coraz większe zbiory danych, musisz się zanurzyć i dowiedzieć się, w jaki sposób RDBMS może pomóc. Widziałem milion wierszy, łączenie wielu tabel, sumowane zapytania zagregowane z 5 minut do 2 sekund. To zrozumienie w pasku narzędzi czyni z ciebie bardziej zaokrąglonego naukowca danych. Możesz być w stanie zrobić wszystko w Pandach dzisiaj, ale pewnego dnia możesz mieć zadanie, w którym RDBMS jest najlepszym wyborem.


5

Rzeczy, które Pandy mogą zrobić, czego nie potrafi SQL

  1. df.describe()
  2. Rysowanie, np df['population'].plot(kind='hist')
  3. Użyj ramki danych bezpośrednio do szkolenia algorytmów uczenia maszynowego

Rzeczy, które potrafi zrobić Panda, nie wiedziałem, że SQL potrafi również

  1. Eksport do csv: df.to_csv('foobar.sv'). Jest to ważne, gdy chcesz pokazać coś właścicielowi firmy, który chce pracować z programem Excel. I jest df.to_excelteż. Ale w SQL możesz to zrobić SELECT a,b,a+b INTO OUTFILE '/tmp/result.txt' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n' FROM test_table;(dziękuję, vy32!)

1
Miły. Chociaż większość z nich wydaje się funkcjami, które można zaimplementować w SQL. (SQL ma bezpośredni eksport CSV.)
vy32

Czy możesz przesłać mi zapytanie, które eksportuje do CSV? (Znam tylko narzędzia, które robią to dla niektórych baz danych opartych na SQL, ale nigdy nie widziałem zapytania ... więc wątpię, że jest to część specyfikacji SQL)
Martin Thoma

1
SELECT a,b,a+b INTO OUTFILE '/tmp/result.txt' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n' FROM test_table; Zobacz dev.mysql.com/doc/refman/8.0/en/select-into.html
vy32

Dziękuję bardzo, vy! Myślę, że dostosuję swoją odpowiedź, kiedy będę w domu :-)
Martin Thoma,

Jasne. Pamiętaj, że plik trafia na serwer SQL, a nie na klienta.
vy32

3

Jedyną rzeczą nieuwzględnioną w tych odpowiedziach, o której chciałbym wspomnieć, jest to, że zależy to również od tego, jak używasz SQL. Weźmy na przykład arcpy. Z jakiegoś powodu żadna z funkcji arcpy.da nie ma funkcji wykonywania wielu. To jest naprawdę dziwne, ponieważ robi to prawie każda inna biblioteka języka Python SQL. Instrukcja Where w funkcjach arcpy.da jest również ograniczona do około 120 znaków. Zasadniczo oznacza to, że jeśli masz dość dużą liczbę rzeczy, które próbujesz zrobić z bazą danych, jedynym prawdziwym wyborem jest wielokrotne wywołanie wybranej funkcji arcpy.da, zmieniając za każdym razem instrukcję where. Istnieje kilka sztuczek, których można użyć, aby przyspieszyć ten proces - na przykład możesz iterować fragmenty zbioru danych - ale dosłownie każda z tych sztuczek jest znacznie wolniejsza niż użycie jednego pliku arcpy.da. searchcursor, aby załadować całą tabelę do ramki danych pand, a następnie manipulować nią za pomocą pand, numpy i, jeśli twoje dane są tak ogromne, dask. Muszę tutaj podkreślić, że w tym przypadku pandy nie są tylko trochę szybsze. Jest obrzydliwie szybszy. Jest o wiele szybszy, że dosłownie śmiałem się z siebie, że nie zrobiłem tego wcześniej. Korzystanie z pand skróciło czas wykonywania jednego skryptu ze znacznie ponad godziny - zapominam, czy był to skok z 3,5 godziny, czy z 1,5 godziny - do dosłownie 12 minut. jest o wiele szybszy, że dosłownie śmiałem się z siebie, że nie zrobiłem tego wcześniej. Korzystanie z pand skróciło czas wykonywania jednego skryptu ze znacznie ponad godziny - zapominam, czy był to skok z 3,5 godziny, czy z 1,5 godziny - do dosłownie 12 minut. jest o wiele szybszy, że dosłownie śmiałem się z siebie, że nie zrobiłem tego wcześniej. Korzystanie z pand skróciło czas wykonywania jednego skryptu ze znacznie ponad godziny - zapominam, czy był to skok z 3,5 godziny, czy z 1,5 godziny - do dosłownie 12 minut.

Należy zauważyć, że chociaż mógłbym to zrobić za pomocą SQL, zajęłoby mi to dużo więcej czasu. Musiałbym albo nauczyć się operacji specjalnie dla sql w Accessie - tam właśnie skończyły się dane dla tego skryptu - - sql w Accessie nie był tak solidny, jak powinienem być, kiedy tak naprawdę chciałem to zrobić - lub Musiałbym zapisać wszystkie moje dane w bazie danych sqlite3, zmanipulować je, a następnie umieścić w programie Access. Chociaż może to dać mi podobne wyniki wydajności, trudniej byłoby zmodyfikować mój skrypt w przyszłości.

Więc tak, czasami Pandy i jest po prostu zdecydowanie lepsze niż korzystanie z opcji SQL, które masz do dyspozycji . Wszystko, co musiałem zrobić w sql, zostało zrobione z funkcją w pandach. Możesz także użyć składni sql z pandami, jeśli chcesz. Nie ma powodu, aby nie używać pand i sql w tandemie.

Jeszcze jedną rzeczą, o której chcę wspomnieć o Pandach i Numpy, jest to, że obie te biblioteki są z natury oparte na zestawach. Możesz przeszukiwać ramki danych i tworzyć serie za pomocą tych bibliotek, ale naprawdę trudno jest modyfikować dane w takich strukturach, więc skończysz na pisaniu bardziej wydajnego - opartego na zestawie kodu - w obu tych bibliotekach tylko dlatego, że o wiele łatwiej jest zrobić. Bycie „prowadzonym”, jeśli nie nakierowanym na podejście oparte na zestawach, nie jest czymś, czego doświadczyłem w SQL.

Jeszcze jedna ogromna rzecz, o której zapomniałem wspomnieć o Pandach. Pieniądze . Pandy to narzędzie, z którego wiele zadań związanych z nauką danych chce wiedzieć, jak korzystać. Prawie każde zadanie w zakresie Data Science, na które spojrzałem, opłacało więcej niż zadania typu zarządzanie bazą danych. Jedyny wyjątek od tego, co zauważyłem, dotyczy inżynierii danych, ale widziałem znacznie mniej takich ofert pracy. Wygląda na to, że pandy na pierwszy rzut oka dają więcej pieniędzy.


5
Być może smutne jest to, że jeśli chodzi o nowoczesne miejsca pracy, chodzi o to, aby mieć właściwe modne słowa w swoim CV, w przeciwieństwie do podejść do rozwiązania problemu (zakładając, że możesz nauczyć się modnego słowa stosunkowo szybko). To tak, jakby modne hasło jest ważniejsze niż rozwiązywanie problemów. Gdy rozwiązywanie problemów dla X powinno obejmować naukę i korzystanie z technologii A, B, C, a nie odwrotnie. Zastanawiam się, czy większość zespołów programistów rozwala teraz rzeczy ze względu na modne powiedzonko i trendy, a potem myślę o rozwiązywaniu problemów jako o drugorzędnej lub „oldskulowej” rzeczy, ponieważ nie znałeś / nie używasz wspomnianego modnego hasła.
SaltySub2

1
@ElectricHead z mojego doświadczenia, jeśli piszesz własną funkcję dotyczącą SQL w Pythonie, łatwiej jest po prostu niewłaściwie używać kursora i pisać złe zapytania niż przy użyciu pandas / numpy. Pamiętaj, że nie wszystkie moduły / biblioteki SQL są takie same. W moim przypadku, z arcpy.da.SearchCursors i tym podobnymi, naprawdę nie ma dobrego sposobu na skuteczne zrobienie czegoś z wieloma płytami z powodu dziwnych ograniczeń. Jeśli użyję pandas / numpy, stanie się jeden dobry sposób na robienie różnych rzeczy i właśnie tego chcę, używając Pythona.

1
Ach, w porządku. Masz na myśli domowej roboty potok SQL za pomocą implementacji python dbapi vs używanie numpy / pandas? W takim razie, tak, nie mam tu żadnych argumentów; wymagana opieka! Przeczytał mi to jako zwykły SQL, z którym oczywiście musisz zrozumieć ustawione operacje, ale szybko się o tym dowie, uruchamiając głupie zapytania od klienta bazy danych.
Electric Head

1
@ Steve Tak, nie powstrzyma ludzi próbujących dynamicznie modyfikować rzeczy w pętlach w pandach lub podobnych :) Myślę, że zrozumienie SQL pomaga efektywnie pracować w pandach (choć nie jest tak, że ukryją podobieństwo w niektórych koncepcjach).
Electric Head

1
@ Steve Rzeczywiście pandy też są potężne ... Myślę, że jedną z moich frustracji są zarówno programiści, jak i kierownictwo, w tym ja, którzy nie spędzają wystarczająco dużo czasu na analizowaniu rozwiązań i ściganiu trendów (gdzie pieniądze są zaangażowane w promowanie siebie / firmy). Ale nawet w lean prototyping / mvp należałoby położyć odpowiednie podstawy do skalowania. SQL, noSQL i Panda ... wszystkie mają swoje zadania dla odpowiednich zadań i projektów na różnych etapach. Przez ostatni rok noSQL dla szczupłego prototypu / mvp z pewnością pomógł mi na wiele sposobów. SQL byłby do tego przesadny.
SaltySub2

3

Pomyślałem, że dodam, że wykonuję wiele analiz danych na podstawie szeregów czasowych, a pandy resamplei reindexmetody są do tego nieocenione. Tak, możesz robić podobne rzeczy w SQL (zwykle tworzę DateDimensiontabelę, aby pomóc w zapytaniach związanych z datą), ale uważam, że metody pand są znacznie łatwiejsze w użyciu.

Ponadto, jak powiedzieli inni, reszta mojego modelowania jest w Pythonie i często mam połączenia internetowe lub pliki CSV.


2

Spróbuję odpowiedzieć na to pytanie na podstawie własnego doświadczenia. W przeciwieństwie do innych odpowiedzi, wolę Sqlgłębokie uczenie się i rzeczy związane z dużymi danymi. Jest tego wiele przyczyn. Jak widać tutaj ,

Panda zapewnia intuicyjną, wydajną i szybką analizę danych tabelarycznych. Ponieważ jednak Pandas używa tylko jednego wątku wykonania i wymaga, aby wszystkie dane były w pamięci jednocześnie, nie skaluje się dobrze do zestawów danych znacznie powyżej skali gigabajtów.

B+

Inną różnicą jest to, że operacje CRUD w Sql mogą być stosowane rozproszone z różnymi zasadami autoryzacji, które nie są możliwe w pandach.

Nie ma na celu powiedzieć, co jest lepsze, wszystko zależy od twojego zadania. Do obliczeń na dużą skalę wolę Sql, a do małych - pandy.

Są inne rzeczy, których nie ma w pandach, które są naprawdę ważne dla szybkiego doświadczenia w wydobywaniu danych, o których powiem później. Na razie spójrz tutaj .


1

Panda jest bardziej popularna, ponieważ python w postaci notatników jupyter jest najbardziej popularnym zestawem narzędzi wykorzystywanym przez naukowców z obszaru sieci neuronowych. Python staje się „językiem”. Możliwe jest nawet użycie backendu SQL, ale nie jesteś związany SQL tylko z pandą.


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.