Pandy wspierały nas dotychczas na etapie wstępnego przetwarzania danych. Chociaż w jednym przypadku podczas tworzenia histogramów wykorzystaliśmy także inny moduł Pand – plotting
.
Jak dotąd celowo tego unikaliśmy, ponieważ wcześniejsze wprowadzenie spowodowałoby więcej pytań niż odpowiedzi. Mianowicie Pandy i Matplotlib był tak powszechnym i wszechobecnym duetem, że Pandy zaczęły integrować funkcjonalność Matplotlib. To ciężko wykorzystuje Matplotlib do wykonywania wszelkich rzeczywistych kreśleń, a wiele funkcji Matplotlib znajdziesz w kodzie źródłowym. Alternatywnie możesz użyć innych backendów do kreślenia, takich jak Zgrabnie i Bokeh.
Jednak Pandy wprowadzają nas także w kilka wątków nie są część standardowych typów wykresów Matplotlib, takich jak KDE, Krzywe Andrewsa, Wykresy Bootstrapa i Macierze rozproszone.
Połączenia plot()
funkcja pandy DataFrame
używa backendu określonego przez plotting.backend
iw zależności od kind
argument – generuje wykres korzystając z podanej biblioteki. Ponieważ wiele z nich się pokrywa – nie ma sensu omawiać typów działek takich jak line
, bar
, hist
i scatter
. Wygenerują prawie te same wykresy z tym samym kodem, co robiliśmy do tej pory z Matplotlibem.
Przyjrzymy się tylko pokrótce plot()
ponieważ dotychczas zbadano mechanizm leżący u jego podstaw. Zamiast tego skupmy się na niektórych fabułach, które omawiamy nie może już łatwo zrobić z Matplotlibem.
To będzie bardzo krótki rozdział, ponieważ możliwości kreślenia i wizualizacji Pandy bledną w porównaniu z Matplotlibem – ale nadal warto poznać niektóre z nich, a także mieć świadomość możliwości kreślenia z DataFrame
bezpośrednio.
Połączenia DataFrame.plot() Funkcjonować
Połączenia plot()
funkcja akceptuje x
i y
cechy i a kind
argument. Alternatywnie, aby uniknąć kind
argument, możesz także zadzwonić DataFrame.plot.kind()
zamiast tego i przekaż x
i y
funkcje.
Przyjęte wartości dla kind
argumentem są: line
, bar
, barh
(pasek poziomy), hist
, box
, kde
, density
(synonim dla kde
), area
, pie
, scatter
i hexbin
(podobnie jak mapa cieplna).
import pandas as pd
from matplotlib import pyplot as plt df = pd.read_csv('gdp_csv.csv')
df_eu = df.loc[df['Country Name'] == 'European Union'] df_eu.plot.bar(x = 'Year', y = 'Value')
df_eu.plot.line(x = 'Year', y = 'Value')
df_eu.plot.box(x='Value') plt.show()
Zamiast zapewniać Series
instancje, tak jak robimy to dla Matplotlib – wystarczy zapewnić nazwy kolumn, a ponieważ dzwonisz do plot()
funkcja na DataFrame
wizualizujesz, Pandy z łatwością przyporządkują te wartości ciągów do odpowiednich nazw kolumn.
Każde z tych połączeń tworzy nowe Figure
instancję i wykreśla na niej odpowiednie wartości:
Aby wykreślić wiele osi na tym samym Figure
, możesz zrobić Figure
i jeden lub więcej Axes
przez plt.subplots()
i przypisz odpowiednie Axes
do ax
argument każdego plot.plot_type()
połączenie:
import pandas as pd
from matplotlib import pyplot as plt df = pd.read_csv('gdp_csv.csv')
df_eu = df.loc[df['Country Name'] == 'European Union'] fig, ax = plt.subplots(3, 1) df_eu.plot.box(x='Value', ax = ax[0])
df_eu.plot.line(x = 'Year', y = 'Value', ax = ax[1])
df_eu.plot.bar(x = 'Year', y = 'Value', rot = 45, ax = ax[2]) plt.show()
Niektóre standardowe argumenty, takie jak rotation
argumenty są w rzeczywistości różne w plot()
dzwoni. Na przykład, rotation
jest skrócony do rot
. To sprawia, że jest to trochę trudne po prostu przełącz się między Matplotlibem a Pandas, ponieważ najprawdopodobniej wylądujesz na stronach dokumentacji, po prostu sprawdzając, które argumenty można zastosować, a które nie.
Teraz zamiast tworzyć nowy Figure
or Axes
Przykładowo każda z tych działek będzie stacjonowała w odpowiednim miejscu Axes
przypadkach, w które je dostarczyliśmy:
Ogólnie rzecz biorąc, kreślenie za pomocą Pand jest wygodne i szybkie, ale mimo to w przypadku wykresów słupkowych, liniowych i pudełkowych prawdopodobnie będziesz chciał skorzystać z Matplotlib. Jest to zarówno podstawowy silnik, z którego nieuchronnie korzysta Panda, jak i ma więcej opcji dostosowywania, dzięki czemu nie musisz zapamiętywać nowego zestawu argumentów, których możesz używać w przypadku wykresów Pandy.
Biorąc to pod uwagę, w przypadku niektórych działek możesz preferować Pandy, ponieważ musiałyby być wykonane ręcznie w Matplotlib, a wykonanie niektórych z nich jest tak kłopotliwe, że nie jest warte wysiłku, jak na przykład linie KDE.
Pandy konspiratorstwo Moduł
Co DataFrame
mają do zaoferowania w zakresie wizualizacji, nie jest dla nas niczym nowym. Jednak podstawowy moduł, który nazywają, pandas.plotting
robi. The plotting
Moduł posiada kilka funkcji, z których możemy skorzystać, jak np autocorrelation_plot()
, bootstrap_plot()
, scatter_matrix()
.
Każdy z nich akceptuje albo a Series
lub DataFrame
, w zależności od rodzaju tworzonej wizualizacji, a także niektórych parametrów specyfikacji kreślenia i celów stylistycznych.
Wykres Bootstrapa
Bootstrapping to proces losowego pobierania próbek (z zastępowaniem) zbioru danych i obliczania miar dokładności, takich jak stronniczość, zmienność i przedziały ufności dla losowych próbek. „Z zastąpieniem” w praktyce oznacza, że każdy losowo wybrany element można wybrać ponownie. Bez zamiany oznacza, że po każdym losowo wybranym elemencie jest on usuwany z puli do następnej próbki.
A Wykres Bootstrapa, utworzony przez Pandas, ładuje statystyki średniej, mediany i średniego zakresu zbioru danych na podstawie próbki size
, po czym wykres jest następnie pokazywany poprzez plt.show()
. Domyślne argumenty dla size
i samples
jest 50
i 500
odpowiednio.
Oznacza to, że dla danej funkcji pobieramy próbkę 50
wartości. Następnie dla tych 50 wartości generowana jest 50-elementowa podpróbka (dane syntetyczne) i dla nich obliczana jest statystyka podsumowująca (średnia/mediana/średni zakres). Ten proces się powtarza 500
razy, więc ostatecznie mamy 500 statystyk podsumowujących:
import pandas as pd
from matplotlib import pyplot as plt df = pd.read_csv('./datasets/gdp_csv.csv')
df_eu = df.loc[df['Country Name'] == 'European Union'] pd.plotting.bootstrap_plot(df_eu['Value']) plt.show()
Wykres autokorelacji
Wykresy autokorelacji służą do sprawdzania losowości danych w przypadku danych szeregów czasowych. Wiele autokorelacje są obliczane dla różnych znaczników czasu, a jeśli dane są rzeczywiście losowe – korelacja będzie bliska zeru. Jeżeli nie – korelacja będzie większa od zera.
Narysujmy dwa wykresy autokorelacji – jeden z naszym wartość funkcję i jedną z Series
wypełnione losowymi wartościami:
import pandas as pd
import numpy as np
from matplotlib import pyplot as plt df = pd.read_csv('gdp_csv.csv')
# Filter DataFrame for the EU
df_eu = df.loc[df['Country Name'] == 'European Union']
# Generate 50 random integers between 0 and 100, and turn into a Series
random_series = pd.Series(np.random.randint(0, 100, size=50)) # Plot Autocorrelation Plot for the *Value* feature
pd.plotting.autocorrelation_plot(df_eu['Value'])
# Plot Autocorrelation Plot for the *random_series*
pd.plotting.autocorrelation_plot(random_series) plt.show()
Wykres autokorelacji dla random_series
powinno się kręcić wokół 0
, ponieważ są to dane losowe, natomiast wykres dla Value
funkcja nie będzie:
Warto zauważyć, że autokorelacja mierzy jeden Nasz formularz losowości, jako nieskorelowane, ale istnieją dane nielosowe. Jeśli nie jest losowy, ale nie ma żadnych znaczących korelacji – wykres autokorelacji wskazywałby, że dane są losowe.
Macierze rozproszone
Macierze rozproszone fabuła A ruszt wykresów punktowych dla wszystkich obiektów względem wszystkich obiektów. Ponieważ to nieuchronnie porównuje każdą cechę także ze sobą – przekątna gdzie tak się dzieje, jest zwykle zastępowane przez a Histogram tej cechy, a nie wykres punktowy. Macierze rozproszone są również znane jako Pary działek, a Seaborn oferuje pairplot()
pełnić funkcję właśnie do tego.
Połączenia scatter_matrix()
funkcja akceptuje a DataFrame
i tworzy macierz rozproszenia dla wszystkich jej cech numerycznych i zwraca tablicę 2D Axes
instancje składające się na macierz rozproszenia. Aby cokolwiek w nich zmienić, będziesz chciał je przejrzeć:
import pandas as pd
import numpy as np
from matplotlib import pyplot as plt df = pd.read_csv('worldHappiness2019.csv') axes = pd.plotting.scatter_matrix(df, diagonal='hist') for ax in axes.flatten(): # Rotate back to 0 degrees since they're automatically rotated by 90 ax.yaxis.label.set_rotation(0) # As to not overlap with the Axes instances, set the ticklabel # alignment to 'right' ax.yaxis.label.set_ha('right') plt.show()
Powoduje to dość dużą macierz rozproszenia wszystkich cech w porównaniu ze wszystkimi innymi cechami:
Można także przejść w diagonal
argument, który akceptuje 'hist'
or 'kde'
aby określić, jaki typ wykresu rozkładu chcesz wykreślić po przekątnej, a także alpha
, określając przezroczystość znaczników na wykresach punktowych.
- 100
- O nas
- Wszystkie kategorie
- już
- Inne
- argumenty
- na około
- jest
- Bit
- Pudełko
- wezwanie
- możliwości
- Rozdział
- kontrola
- kod
- Kolumna
- wspólny
- kraj
- Para
- Tworzenie
- dane
- różne
- 分配
- europejski
- Unia Europejska
- przykład
- Cecha
- Korzyści
- Skupiać
- funkcjonować
- Funkcjonalność
- Ogólne
- Generować
- HTTPS
- IT
- znany
- duży
- większe
- Biblioteka
- Linia
- mapa
- Matrix
- większość
- mianowicie
- Nazwy
- Blisko
- oferta
- Oferty
- Opcje
- Inne
- faza
- basen
- wygląda tak
- produkować
- zapewniać
- cele
- podnieść
- RE
- otrzymuje
- Efekt
- powraca
- Powiedział
- wybrany
- zestaw
- Short
- znaczący
- podobny
- So
- Kod źródłowy
- specyfikacja
- rozpoczęty
- statystyka
- Źródło
- Przez
- unia
- us
- wartość
- wyobrażanie sobie
- Co
- Wikipedia
- wartość
- X
- rok
- zero