Pandy: od zera do bohatera

Dec 11 2022
Obszerny artykuł, który możesz przeczytać podczas oglądania ulubionej telewizji w ciągu dnia, ale wystarczająco dobry, aby nauczyć Cię wszystkiego, co musisz wiedzieć, aby faktycznie wykonać pracę. Pierwsze kroki Pandas to biblioteka do analizy i przetwarzania danych w Pythonie.

Obszerny artykuł, który możesz przeczytać podczas oglądania ulubionej telewizji w ciągu dnia, ale wystarczająco dobry, aby nauczyć Cię wszystkiego, co musisz wiedzieć, aby faktycznie wykonać pracę.

Rozpoczęcie pracy

Pandas to biblioteka do analizy i przetwarzania danych w Pythonie. Pandas jest szeroko stosowany w nauce o danych i uczeniu maszynowym. Jest rozwijany na podstawie innego pakietu Pythona o nazwie NumPy, który jest używany do obliczeń naukowych. Jeśli nie wiesz zbyt wiele o NumPy, możesz szybko to sprawdzić, czytając mój 5-minutowy artykuł , zanim przejdziesz dalej z Pandami. Nie jest to obowiązkowe, ale gorąco polecam.

Aby rozpocząć, najpierw upewnij się, że masz w systemie Python, NumPy i Pandas. Sposób, w jaki to zrobisz, zależy od twojego systemu i preferowanego IDE, ale polecam Anacondę. Przy podstawowej instalacji Anacondy możesz po prostu przejść do terminala i uruchomić „conda install numpy”, a następnie „conda install pandas” i voila!

Teraz utwórzmy plik example.py , z którym będziemy mogli rozpocząć pracę.

Uwaga: gdybyśmy mieli stworzyć projekt zamiast pojedynczego przykładowego pliku do pracy, musielibyśmy po prostu utworzyć katalog i znajdujący się w nim plik __init__.py .

Powinieneś dodać następujące wiersze na początku pliku, aby móc pracować z Pandas w pliku.

importuj numpy jako np

importuj pandy jako pd

Uwaga: Generalnie importujemy NumPy jako np, a Pandy jako pd, abyśmy nie musieli wpisywać numpy i pandas za każdym razem, gdy wywołujemy funkcję z bibliotek. Pamiętaj, że chociaż można je zmienić, np i pd ogólną konwencją.

Następnie możesz uruchomić kod w przykładowym pliku, po prostu przechodząc do terminala i uruchamiając polecenie:

python przykład.py

Seria

Podobnie jak każdy język programowania ma tablice, podobnie jak NumPy ma macierze, w Pandach otrzymujemy serie. Główna różnica między seriami a zwykłymi macierzami/tablicami polega na tym, że pozycje w serii mogą mieć numer indeksu lub klucze dostępu do tej wartości. Pomyśl o tym jako o liście par klucz-wartość, takich jak dane JSON.

Ciekawostka: Pandas jest często określany jako „Excel for Data Science” ze względu na fakt, że oszczędza wartość — pary kluczy, wyświetla je wizualnie i wykonuje na nich obliczenia w sposób podobny do MS Excel.

Możesz stworzyć serię Pandas ze słownika Pythona:

myDictionary = { „Jan”: 35, „Jane”: 40}

pd.Series(myDictionary) // zwraca John 35, Jane 40

Gdybyś miał dodać tablicę zamiast słownika, elementy w serii miałyby liczby całkowite jako klucze:

mojaTablica = [ 35, 40]

pd.Series(myArray) // zwraca 0 35, 1 40

Możesz dodać dwie tablice razem i utworzyć z nich serię jako:

mojaTablica1 = [ 35, 40]

mojaTablica2 = [ „Jan”, „Jana”]

pd.Series(data= myArray1, index=myArray2) // zwraca John 35, Jane 40

Jeśli istnieją dwie różne serie z tymi samymi kluczami, możesz wykonać na nich operacje matematyczne, takie jak:

seria1 = pd.Series({ „John” : 35, „Jane” : 40})

seria2 = pd.Series({ „John” : 100, „Jane” : 50})

seriaSum = seria1 + seria2 // zwraca John 135, Jane 90

Uwaga: Podczas wykonywania operacji matematycznej na szeregu z różnymi kluczami, pasujące klucze będą miały wynik operacji jako swoją wartość, ale klucze nieobrabiające będą miały wartość NaN, ponieważ dla tych kluczy nie będzie wyniku.

Ramki danych

Ramki danych można traktować jako serie, ale dla macierzy. Zasadniczo macierz, w której indeksy są kluczami, a całość jest parą klucz-wartość, nazywana jest ramką danych.

Możesz utworzyć ramkę danych z dowolnej tablicy lub macierzy jako:

mojaMatryca = [ [10, 20, 30], [ 100, 200, 300] ]

DataFrame = pd.DataFrame(myMatrix)

Możesz przypisać klucze kolumn i wierszy jako:

mojaMatryca = [ [ 1, 2, 3],[10, 20, 30], [ 100, 200, 300] ]

wiersze = [ „John”, „Jane”, „Sara” ]

kolumny = [„Tenis”, „Koszykówka”, „Pingpong”]

DataFrame = pd.DataFrame(myMatrix, index = wiersze, kolumny = kolumny)

Możesz wywołać określoną kolumnę z ramki danych jako:

DataFrame [„Tenis”]

Gdybyś jednak wywołał wiersz z kluczem, jak pokazano powyżej, spowodowałoby to błąd. Możesz wywołać wiersz z kluczem jako:

dataFrame.loc [ „Jan” ]

Fakt, że istnieją klucze do wywoływania kolumn i wierszy, nie oznacza, że ​​nie ma indeksów. Podobnie jak w macierzach, indeksy nadal istnieją. Możesz na przykład wywołać pierwszy wiersz jako:

dataFrame.iloc[1] // zwraca wiersz Jane z wartościami 2, 20, 200

Możesz dodać nową kolumnę do ramki danych jako:

dataFrame[ „Piłka nożna” ] = [ 1000, 2000, 3000]

I odwrotnie, możesz usunąć kolumnę lub wiersz z ramki danych jako:

dataFrame.drop("Football", axis=1, inPlace=True) // aby usunąć kolumnę musisz ustawić oś na 1

dataFrame.drop( „Jan”, oś=0, inPlace=True) // aby usunąć wiersz należy ustawić oś na 0

Uwaga: Pandas nie chce, abyś przez pomyłkę zmienił całą kolumnę lub wiersz. Może próbujesz utworzyć kolejną ramkę danych i ustawić starą ramkę danych z brakującą jedną kolumną, zamiast faktycznie zmieniać starą? Aby upewnić się, że faktycznie zmieniasz samą ramkę danych, umieściliśmy parametr inPlace=True w pliku functions.

Możesz wywołać wartość komórki jako:

dataFrame.loc [ „Jan”, „Tenis”]

Możesz wyeliminować w ramach ramek danych jako:

ramkadanych[ramkadanych[„Tenis”] > 5]

// usunie wiersze, w których wartość kolumny Tenis jest mniejsza niż 5, a zatem usunie wiersz Jan

Aby zmienić indeksy w ramce danych, należy najpierw dodać nową tablicę indeksów jako kolumnę do starej ramki danych. Następnie możesz przechwycić go według nazwy kolumny i przypisać jego wartości jako nowe indeksy jako:

dataFrame.set_indexes("Nowa kolumna indeksu", inPlace=True)

Ramka danych z wieloma indeksami wygląda następująco w programie Excel:

Gdzie są dwa indeksy wierszy, Owoce i warzywa ORAZ nazwa produktu. Możemy również tworzyć takie indeksy z wieloma indeksami za pośrednictwem Pand. Aby to zrobić musisz:

  • Zdefiniuj dwie listy indeksów zewnętrznych i indeksów wewnętrznych, a następnie połącz je w krotkę z wykorzystaniem metod list i zip.
  • Następnie użyj metody MultiIndex.from_tuples() w celu przekształcenia krotki w multiindeks.
  • Następnie utwórz listę kolumn.
  • Następnie utwórz listę danych jako macierz i faktycznie przekształć ją w macierz za pomocą metody np.array() .
  • Na koniec użyj funkcji DataFrame() z Pandas, aby utworzyć ramkę danych z wieloma indeksami.

ExternalIndexes = [ „Warzywa”, „Warzywa”, „Owoce”, „Owoce”]

innerIndexes = [ „Pomidory”, „Ogórki”, „Pomarańcze”, „Jagody”]

CombineIndexes = list( zip( outsideIndexes, innerIndexes) )

CombinedIndexes = pd.MultiIndex.from_tuples(combinedIndexes)

listAmountPrice = [ 2 USD, 5 funtów], [ 1 USD, 3 funty], [ 2 USD, 3 funty], [ 3 USD, 2 funty] ]

numpySeriesAmountPrice = np. tablica (listAmountPrice )

myColumns = [ „Cena”, „Kwota” ]

multiIndexDataFrame = pd.DataFrame( numpySeriesAmountPrice, indeks = połączone indeksy, kolumny = moje kolumny)

Następnie możesz sprawdzić ilość i cenę Jagód jako:

multiIndexDataFrame.loc [ „Owoce” ].loc [ „Jagody” ]

Możesz również nadać kolumnom z wieloma indeksami pewne nazwy, na przykład:

multiIndexDataFrame.index.names = [ „Przejście”, „Nazwa produktu” ]

Operacje

  • Aby zwrócić ramkę danych z oryginalnej ramki danych z usuniętymi wierszami zawierającymi wartości NaN:
  • Aby zwrócić ramkę danych z oryginalnej ramki danych z usuniętymi kolumnami zawierającymi wartości NaN:
  • Aby zwrócić ramkę danych z oryginalnej ramki danych z usuniętymi wierszami zawierającymi więcej niż dwie wartości NaN:
  • Aby zwrócić ramkę danych z oryginalnej ramki danych z komórkami zawierającymi wartość NaN zmienioną na określoną wartość, powiedzmy liczbę całkowitą 20:
  • Aby wykonać operacje i zebrać dane o ramce danych na podstawie kolumny, należy pogrupować ramkę danych względem tej kolumny za pomocą groupby. Następnie możesz wykonać operacje, aby policzyć dane, uzyskać średnią wartości itp.

group.mean() // pobiera średnią wynagrodzeń z tabeli

group.count() // oblicza, ilu pracowników otrzymuje określoną pensję za każdą pensję

group.describe() // przynosi wyniki analizy statystycznej, takie jak średnia, wartości maksymalne i minimalne itp. dla tej ramki danych względem zgrupowanej kolumny „Wynagrodzenie”

  • Jeśli masz dwie lub więcej ramek danych, które mają te same kolumny, możesz je zebrać razem (jedna pod drugą) w następujący sposób:
  • Podobnie, jeśli masz dwie lub więcej ramek danych, które mają te same wiersze, możesz je zebrać razem (jedna pod drugą) w następujący sposób:
  • Jeśli jednak chcesz uzyskać dwie lub więcej ramek danych z różnymi kolumnami, użyj metody scalania, jak poniżej. Pamiętaj jednak, że aby móc to zrobić, wszystkie łączone ramki danych muszą mieć co najmniej jedną wspólną kolumnę.
  • Możesz wprowadzić tylko unikalne wartości w kolumnie w bazie danych, ponieważ:
  • Możesz obliczyć, ile unikalnych wartości znajduje się w kolumnie w ramce danych jako:
  • Możesz zdefiniować funkcję i zastosować ją do każdej wartości w ramce danych za pomocą funkcji .apply(). Aby wyjaśnić dalej na przykładzie:

cena zwrotna * 1,33 // funkcja dodająca 33% podatku do pierwotnej ceny

priceDataFrame[ “Price” ].apply( priceWithTax ) // zwraca serię ze zaktualizowanymi cenami

Excel z Pandami

Mimo że powyżej pracowaliśmy z ramkami danych i seriami, rzeczywiste dane najprawdopodobniej zostaną Ci przekazane w postaci pliku Excel.

Aby móc pracować z plikiem Excel, upewnij się, że zapisałeś go dokładnie w tym samym katalogu, w którym znajduje się plik Pythona (plik Pythona, w którym będziesz uruchamiać funkcje i operacje Pandy). Następnie możesz zaimportować plik Excel jako:

myDataFrame = pd.read_excel("myExcelFile.xlsx" )

Pliki programu Excel zostaną domyślnie zaimportowane jako DataFrame typu DataFrame, więc możesz zaczynać!

Wniosek

Istnieje wiele innych predefiniowanych funkcji i łatwych w użyciu struktur w Pandach, których możesz potrzebować w zależności od zadania, ale to powinno wystarczyć, aby pomóc Ci wykonać zadanie. Jeśli szukasz całej kariery w tej dziedzinie lub jeśli chcesz się dalej uczyć, możesz kontynuować kursy na poziomie zaawansowanym lub badania, gdy napotkasz potrzebę czegoś innego (czegoś mądrzejszego!) podczas pracy nad zadaniem. Pandas ma rozwiązanie na prawie wszystko!