Python Samouczek dotyczący Pand: ramka danych, zakres dat, użycie Pand

Co to jest Pandy Python?

Pandy to biblioteka typu open source, która pozwala na manipulację i analizę danych w Python. Pandy Python biblioteka oferuje manipulację danymi i operacje na danych dla tabel numerycznych i szeregów czasowych. Pandas zapewnia łatwy sposób tworzenia, manipulowania i porządkowania danych. Jest zbudowany na bazie NumPy, co oznacza, że ​​potrzebuje NumPy do działania.

Dlaczego warto używać Pand?

Analitycy danych korzystają z Pand w Python ze względu na następujące zalety:

  • Z łatwością radzi sobie z brakującymi danymi
  • To używa Seria dla jednowymiarowej struktury danych oraz DataFrame dla wielowymiarowej struktury danych
  • Zapewnia skuteczny sposób dzielenia danych
  • Zapewnia elastyczny sposób łączenia, łączenia i przekształcania danych
  • Zawiera potężne narzędzie do pracy z szeregami czasowymi

Krótko mówiąc, Pandas to przydatna biblioteka w analiza danych. Może być używany do wykonywania manipulacji danymi i analiz. Pandas zapewnia potężne i łatwe w użyciu struktury danych, a także środki do szybkiego wykonywania operacji na tych strukturach.

Jak zainstalować Pandy?

Teraz w tym Python Tutorial Pandas, dowiemy się jak zainstalować Pandy w Python.

Aby zainstalować bibliotekę Pandas, zapoznaj się z naszym tutorialem Jak zainstalować TensorFlow. Pandy są instalowane domyślnie. W zdalnym przypadku pandy nie są zainstalowane -

Możesz zainstalować Pandy za pomocą:

  • Anaconda: conda install -c anaconda pandy
  • In Jupyter Zeszyt :
import sys
!conda install --yes --prefix {sys.prefix} pandas

Co to jest ramka danych Pandy?

Pandy DataFrame jest dwuwymiarową tablicą z oznaczoną strukturą danych zawierającą różne typy kolumn. DataFrame to standardowy sposób przechowywania danych w formacie tabelarycznym, z wierszami do przechowywania informacji i kolumnami do nazywania informacji. Na przykład cena może być nazwą kolumny, a 2,3,4 może być wartością ceny.

Ramka danych jest dobrze znana statystykom i innym specjalistom zajmującym się danymi.

Poniżej zdjęcie ramki danych Pandy:

Pandy DataFrame

Co to jest seria?

Seria to jednowymiarowa struktura danych. Może mieć dowolną strukturę danych, taką jak liczba całkowita, zmiennoprzecinkowa i ciąg znaków. Jest to przydatne, gdy chcesz wykonać obliczenia lub zwrócić tablicę jednowymiarową. Seria z definicji nie może mieć wielu kolumn. W tym drugim przypadku należy skorzystać ze struktury ramki danych.

Python Seria Pandas charakteryzuje się następującymi parametrami:

  • Dane: mogą być listą, słownikiem lub wartością skalarną
pd.Series([1., 2., 3.])
0    1.0
1    2.0
2    3.0
dtype: float64

Możesz dodać indeks za pomocą pliku Index. Pomaga nazwać wiersze. Długość powinna być równa wielkości kolumny

pd.Series([1., 2., 3.], index=['a', 'b', 'c'])

Poniżej tworzysz serię Pandy z brakującą wartością w trzecich wierszach. Uwaga, brakujące wartości w Python są oznaczone jako „NaN”. Możesz użyć numpy, aby sztucznie utworzyć brakującą wartość: np.nan

pd.Series([1,2,np.nan])

Wydajność

0    1.0
1    2.0
2    NaN
dtype: float64

Utwórz ramkę danych Pandy

W tym samouczku Pandas DataFrame nauczymy się tworzyć Python Ramka danych Pandy:

Możesz przekonwertować tablicę numpy na ramkę danych pandy za pomocą pd.Data Frame(). Możliwe jest również coś odwrotnego. Aby przekonwertować ramkę danych pandy na tablicę, możesz użyć np.array()

## Numpy to pandas
import numpy as np
h = [[1,2],[3,4]] 
df_h = pd.DataFrame(h)
print('Data Frame:', df_h)

## Pandas to numpy
df_h_n = np.array(df_h)
print('Numpy array:', df_h_n)
Data Frame:    0  1
0  1  2
1  3  4
Numpy array: [[1 2]
 [3 4]]

Możesz także użyć słownika, aby utworzyć ramkę danych Pandy.

dic = {'Name': ["John", "Smith"], 'Age': [30, 40]}
pd.DataFrame(data=dic)
Wiek Nazwa
0 30 John
1 40 Kowal

Dane dotyczące zasięgu pand

Pandy mają wygodny interfejs API do tworzenia zakresu dat. Uczmy się z Python Przykłady pand:

pd.data_range(data,kropka,częstotliwość):

  • Pierwszym parametrem jest data początkowa
  • Drugim parametrem jest ilość okresów (opcjonalna w przypadku podania daty końcowej)
  • Ostatnim parametrem jest częstotliwość: dzień: „D”, miesiąc: „M” i rok: „Y”.
## Create date
# Days
dates_d = pd.date_range('20300101', periods=6, freq='D')
print('Day:', dates_d)

Wydajność

Day: DatetimeIndex(['2030-01-01', '2030-01-02', '2030-01-03', '2030-01-04', '2030-01-05', '2030-01-06'], dtype='datetime64[ns]', freq='D')
# Months
dates_m = pd.date_range('20300101', periods=6, freq='M')
print('Month:', dates_m)

Wydajność

Month: DatetimeIndex(['2030-01-31', '2030-02-28', '2030-03-31', '2030-04-30','2030-05-31', '2030-06-30'], dtype='datetime64[ns]', freq='M')

Sprawdzanie danych

Możesz sprawdzić nagłówek lub ogon zbioru danych za pomocą funkcji head() lub tail() poprzedzonej nazwą ramki danych pandy, jak pokazano w poniższym przykładzie Pandy:

Krok 1) Utwórz losową sekwencję za pomocą tępy. Sekwencja ma 4 kolumny i 6 wierszy

random = np.random.randn(6,4)

Krok 2) Następnie tworzysz ramkę danych za pomocą pand.

Użyj date_m jako indeksu ramki danych. Oznacza to, że każdemu wierszowi zostanie nadana „nazwa” lub indeks odpowiadający dacie.

Na koniec nadajesz nazwę 4 kolumnom za pomocą kolumn argumentów

# Create data with date
df = pd.DataFrame(random,
                  index=dates_m,
                  columns=list('ABCD'))

Krok 3) Korzystanie z funkcji głowy

df.head(3)
A B C D
2030-01-31 1.139433 1.318510 -0.181334 1.615822
2030-02-28 -0.081995 -0.063582 0.857751 -0.527374
2030-03-31 -0.519179 0.080984 -1.454334 1.314947

Krok 4) Korzystanie z funkcji ogona

df.tail(3)
A B C D
2030-04-30 -0.685448 -0.011736 0.622172 0.104993
2030-05-31 -0.935888 -0.731787 -0.558729 0.768774
2030-06-30 1.096981 0.949180 -0.196901 -0.471556

Krok 5) Doskonałą praktyką, aby uzyskać wskazówkę dotyczącą danych, jest użycie metody opisu(). Podaje liczbę, średnią, std, min, max i percentyl zbioru danych.

df.describe()
A B C D
liczyć 6.000000 6.000000 6.000000 6.000000
oznaczać 0.002317 0.256928 -0.151896 0.467601
std 0.908145 0.746939 0.834664 0.908910
min -0.935888 -0.731787 -1.454334 -0.527374
25% -0.643880 -0.050621 -0.468272 -0.327419
50% -0.300587 0.034624 -0.189118 0.436883
75% 0.802237 0.732131 0.421296 1.178404
max 1.139433 1.318510 0.857751 1.615822

Dane plasterka

Ostatni punkt tego Python Samouczek Pandy dotyczy dzielenia ramki danych pandy.

Możesz użyć nazwy kolumny, aby wyodrębnić dane z konkretnej kolumny, jak pokazano w poniższym przykładzie Pandy:

## Slice
### Using name
df['A']

2030-01-31   -0.168655
2030-02-28    0.689585
2030-03-31    0.767534
2030-04-30    0.557299
2030-05-31   -1.547836
2030-06-30    0.511551
Freq: M, Name: A, dtype: float64

Aby zaznaczyć wiele kolumn, należy użyć podwójnego nawiasu, [[..,..]]

Pierwsza para nawiasów oznacza, że ​​chcesz wybrać kolumny, druga para nawiasów mówi, jakie kolumny chcesz zwrócić.

df[['A', 'B']].
A B
2030-01-31 -0.168655 0.587590
2030-02-28 0.689585 0.998266
2030-03-31 0.767534 -0.940617
2030-04-30 0.557299 0.507350
2030-05-31 -1.547836 1.276558
2030-06-30 0.511551 1.572085

Możesz pokroić wiersze za pomocą:

Poniższy kod zwraca pierwsze trzy wiersze

### using a slice for row
df[0:3]
A B C D
2030-01-31 -0.168655 0.587590 0.572301 -0.031827
2030-02-28 0.689585 0.998266 1.164690 0.475975
2030-03-31 0.767534 -0.940617 0.227255 -0.341532

Funkcja loc służy do wybierania kolumn według nazw. Jak zwykle, wartości przed przecinkiem oznaczają wiersze, a po nim odnoszą się do kolumny. Aby wybrać więcej niż jedną kolumnę, należy użyć nawiasów.

## Multi col
df.loc[:,['A','B']]
A B
2030-01-31 -0.168655 0.587590
2030-02-28 0.689585 0.998266
2030-03-31 0.767534 -0.940617
2030-04-30 0.557299 0.507350
2030-05-31 -1.547836 1.276558
2030-06-30 0.511551 1.572085

Istnieje inna metoda zaznaczania wielu wierszy i kolumn w Pandach. Możesz użyć iloc[]. Ta metoda używa indeksu zamiast nazwy kolumny. Poniższy kod zwraca tę samą ramkę danych, co powyżej

df.iloc[:, :2]
A B
2030-01-31 -0.168655 0.587590
2030-02-28 0.689585 0.998266
2030-03-31 0.767534 -0.940617
2030-04-30 0.557299 0.507350
2030-05-31 -1.547836 1.276558
2030-06-30 0.511551 1.572085

Upuść kolumnę

Możesz upuszczać kolumny za pomocą pd.drop()

df.drop(columns=['A', 'C'])
B D
2030-01-31 0.587590 -0.031827
2030-02-28 0.998266 0.475975
2030-03-31 -0.940617 -0.341532
2030-04-30 0.507350 -0.296035
2030-05-31 1.276558 0.523017
2030-06-30 1.572085 -0.594772

Powiązanie

Możesz połączyć dwie ramki danych w Pandach. Możesz użyć pd.concat()

Przede wszystkim musisz utworzyć dwie ramki danych. Jak dotąd wszystko w porządku, znasz już tworzenie ramek danych

import numpy as np
df1 = pd.DataFrame({'name': ['John', 'Smith','Paul'],
                     'Age': ['25', '30', '50']},
                    index=[0, 1, 2])
df2 = pd.DataFrame({'name': ['Adam', 'Smith' ],
                     'Age': ['26', '11']},
                    index=[3, 4])  

Na koniec łączysz dwie ramki DataFrame

df_concat = pd.concat([df1,df2]) 
df_concat
Wiek Nazwa
0 25 John
1 30 Kowal
2 50 Paweł
3 26 Adam
4 11 Kowal

Upuść_duplikaty

Jeśli zbiór danych może zawierać zduplikowane informacje, „drop_duplicates” pozwala łatwo wykluczyć zduplikowane wiersze. Możesz zobaczyć, że `df_concat` ma zduplikowaną obserwację, `Smith` pojawia się dwukrotnie w kolumnie `name.`

df_concat.drop_duplicates('name')
Wiek Nazwa
0 25 John
1 30 Kowal
2 50 Paweł
3 26 Adam

Sortuj wartości

Możesz sortować wartości za pomocą sort_values

df_concat.sort_values('Age')
Wiek Nazwa
4 11 Kowal
0 25 John
3 26 Adam
1 30 Kowal
2 50 Paweł

Zmień nazwę: zmiana indeksu

Możesz użyć opcji Zmień nazwę, aby zmienić nazwę kolumny w Pandach. Pierwsza wartość to bieżąca nazwa kolumny, a druga wartość to nowa nazwa kolumny.

df_concat.rename(columns={"name": "Surname", "Age": "Age_ppl"})
Wiek_os Nazwisko
0 25 John
1 30 Kowal
2 50 Paweł
3 26 Adam
4 11 Kowal

Podsumowanie

Poniżej znajduje się podsumowanie najbardziej przydatnej metody analizy danych przy użyciu Pand

zaimportować dane przeczytaj_csv
stworzyć serię Seria
Utwórz ramkę danych Ramka danych
Utwórz zakres dat zakres dat
powrót głowy głowa
zwrotny ogon ogon
Opisać opisać
plasterek używając nazwy nazwa danych ['nazwa kolumny']
Pokrój za pomocą rzędów nazwa_danych[0:5]