Jak innowacje w technologii wzmacniają sektor rozwoju aplikacji? 1

Jak wysyłać zapytania do Dataframe Pandy

Węzeł źródłowy: 1017694

Jak wysyłać zapytania do Dataframe Pandy

Perspektywa Data Scientist na funkcje Pythona podobne do SQL.


By Mateusz Przybyłaś, starszy analityk danych w Favor Delivery



Photo by Bruce'a Honga on Unsplash [1].

Spis treści

 
 

  1. Wprowadzenie
  2. Wiele warunków
  3. Scalanie w wielu określonych kolumnach
  4. Podsumowanie
  5. Referencje

Wprowadzenie

 
 
Niezależnie od tego, czy przechodzisz z inżyniera danych/analityka danych, czy chcesz stać się bardziej wydajnym naukowcem danych, wysyłanie zapytań do ramki danych może okazać się całkiem przydatną metodą zwracania określonych wierszy, które chcesz. Należy zauważyć, że istnieje specyficzna funkcja zapytania dla pand, odpowiednio nazwana, query. Jednak zamiast tego omówię inne sposoby naśladowania zapytań, filtrowania i scalania danych. Przedstawimy typowe scenariusze lub pytania, które zadałbyś swoim danym, a zamiast SQL zrobimy to z Pythonem. W poniższych akapitach opiszę kilka prostych sposobów wykonywania zapytań o wiersze dla ramki danych pandy za pomocą języka programowania Python.

Wiele warunków

 
 



Przykładowe dane. Zrzut ekranu od autora [2].

 

Jako naukowcy lub analitycy danych chcemy zwracać określone wiersze danych. Jeden z tych scenariuszy polega na zastosowaniu wielu warunków w tym samym wierszu kodu. Aby pokazać mój przykład, stworzyłem kilka fałszywych przykładowych danych zawierających imię i nazwisko, a także ich płeć i datę urodzenia. Te dane są wyświetlane powyżej na zrzucie ekranu.

Przykładowe wielokrotne warunki zasadniczo odpowiedzą na konkretne pytanie, tak jak w przypadku korzystania z SQL. Pytanie brzmi, jaki procent naszych danych to płeć męska OR osoba urodzona w latach 2010-2021.

Oto kod, który rozwiąże to pytanie (istnieje kilka sposobów, aby odpowiedzieć na to pytanie, ale oto mój konkretny sposób na zrobienie tego):

print(“Percent of data who are Males OR were born between 2010 and 2021:”, 100*round(df[(df[‘Gender’] == ‘M’) | (df[‘Birthdate’] >= ‘2010–01–01’) & (df[‘Birthdate’] <= ‘2021–01–01’)][‘Gender’].count()/df.shape [0],4), “%”)

Aby lepiej zwizualizować ten kod, załączyłem również ten zrzut ekranu tego samego kodu z góry, wraz z wyjściem/wynikiem. Możesz również zastosować te warunki, aby zwrócić rzeczywiste wiersze zamiast uzyskiwać ułamek lub procent wierszy z całkowitej liczby wierszy.



Kod warunków. Zrzut ekranu autorstwa autora [3].

 

Oto kolejność poleceń, które wykonaliśmy:

  • Wróć rzędy z Male Gender
  • Zawierać OR funkcjonować |
  • Zwróć wiersze Birthdate > 2010 i 2021
  • Połącz je wszystkie, a następnie podziel przez całkowitą liczbę wierszy

Jak widać, ten kod jest podobny do czegoś, co można zobaczyć w SQL. Osobiście uważam, że w pandach jest to łatwiejsze, ponieważ może zawierać mniej kodu, a jednocześnie jest w stanie wizualnie zobaczyć cały kod w jednym łatwym miejscu, bez konieczności przewijania w górę iw dół (ale ten format to tylko moje preferencje).

Scalanie w wielu określonych kolumnach

 
 



Scalony wynik ramki danych. Zrzut ekranu autorstwa autora [4].

 

Prawdopodobnie widzieliśmy, jak scalać ramki danych w innych samouczkach, więc chciałem dodać unikalne podejście, którego tak naprawdę tam nie widziałem, czyli scalanie wielu określonych kolumn. W tym scenariuszu chcemy połączyć dwie ramki danych, w których współdzielone są dwa pola. Można powiedzieć, że jeśli jest jeszcze więcej kolumn, ta metoda może być jeszcze bardziej użyteczna.

Mamy naszą pierwszą ramkę danych, którą jest df, następnie łączymy nasze kolumny z drugą ramką danych, df2. Oto ten kod, aby osiągnąć oczekiwany wynik:

merged_df = df.merge(df2, how=’inner’, left_on=cols, right_on=cols )

Aby lepiej zobrazować to scalanie i kod, przedstawiłem zrzut ekranu poniżej. Możesz zobaczyć, jak wygląda druga ramka danych poniżej, z First i Last nazwy, tak jak w pierwszej ramce danych, ale z nową kolumną, Numeric. Następnie mamy określone kolumny, które chcieliśmy scalić, zwracając kolumny GenderBirthdatei nowe Numeric kolumna też. Kolumny to lista kolumn, które są nazwane cols.



Scalanie ramki danych. Zrzut ekranu autorstwa autora [5].

 

Jak widać, ten sposób łączenia ramek danych jest prostym sposobem na osiągnięcie tych samych wyników, które można uzyskać z zapytania SQL.

Podsumowanie

 
 
W tym samouczku zobaczyliśmy dwa typowe pytania lub zapytania, które można wykonać w SQL, ale zamiast tego wykonano je z ramkami danych pandas w Pythonie.

Podsumowując, oto dwa scenariusze, z którymi pracowaliśmy:

  1. Zwracanie procentu wierszy z całego zestawu danych z wielu warunków
  2. Łączenie wielu określonych kolumn w celu zwrócenia ostatecznej ramki danych z nową kolumną

Mam nadzieję, że mój artykuł okazał się zarówno interesujący, jak i przydatny. Zachęcamy do komentowania poniżej, jeśli zgadzasz się lub nie zgadzasz z tymi metodami. Dlaczego lub dlaczego nie? Z pewnością można to jeszcze bardziej wyjaśnić, ale mam nadzieję, że udało mi się rzucić nieco światła na niektóre sposoby używania pand i Pythona zamiast SQL. Dziękuję za przeczytanie!

Zapraszam do sprawdzenia mojego profilu, Maciej Przybyłai inne artykuły, a także skontaktuj się ze mną na LinkedIn.

Nie jestem powiązany z tymi firmami.

 
Referencje

[1] Zdjęcie: Bruce'a Honga on Unsplash(2018)

[2] M. Przybyła, przykładowy zrzut danych, (2021)

[3] M. Przybyła, zrzut kodu warunków, (2021)

[4] M. Przybyła, zrzut ekranu z wynikiem scalonej ramki danych, (2021)

[5] M. Przybyła, zrzut ekranu scalania danych, (2021)

 
Bio: Mateusz Przybyłaś jest starszym analitykiem danych w Favor Delivery i niezależnym autorem tekstów technicznych, szczególnie w dziedzinie analityki danych.

Oryginalny. Przesłane za zgodą.

Związane z:

Źródło: https://www.kdnuggets.com/2021/08/query-pandas-dataframe.html

Znak czasu:

Więcej z Knuggety