Dane, które otrzymujemy często mogą pojawiać się w różnych formatach oraz ułożeniach. Często będziemy potrzebować innego punktu widzenia, z pomocą przychodzi nam funkcja pivot_table. Pozwala nam ona w prosty sposób pokazywać dane w wygodnej dla nas formie.
W tym artykule skupimy się na trzech podstawowych przykładach wykorzystania funkcji pivot_table z biblioteki pandas, która mogliście poznać w tym artykule:
Możemy w wygodny sposób podsumowywać i konwertować nasze tabele, aby były bardziej dla nas czytelne.
Załadujmy przykładowy zbiór danych:
import pandas as pd data_url = 'http://bit.ly/2cLzoxH' dane = pd.read_csv(data_url) print(dane.head())
skupmy się na dwóch kolumnach:
df = dane[['continent','lifeExp']]
Podstawową funkcją jest proste przestawienie kolumn z wierszami, który w modelu podstawowym pokazuje średnią wartości
pd.pivot_table(df, values='lifeExp', columns='continent')
Zmieńmy kolumny i wybierzmy kraj
df_country = dane[['country', 'lifeExp']] pd.pivot_table(df_country, values='lifeExp', columns='country')
Zobaczyliśmy podstawowe działanie pivot_table, które pozwala na wybranie kolumn oraz przedstawienie średniej wartości dla każdego z elementów. Pytanie co możemy dalej, kiedy chcemy zobaczyć kilka podziałów korzystając z informacji z kilku kolumn. Nic prostszego jak dodanie kolejnego wymiaru. Weźmy sobie dodatkowo lata i zobaczmy jak zmieniała się średnia wieku w latach.
df_3dimension = dane[['continent', 'year', 'lifeExp']] pd.pivot_table(df_3dimension, values='lifeExp', index=['year'], columns='continent')
Świetnie, udało nam się już wyświetlić tabele przestawne dla kraju, dla kontynentu. Udało nam się połączyć widok, aby zobaczyć zmiany dla każdego z kontynentów w skali roku. Natomiast cały czas oglądamy tylko średnią. Co zrobić jeśli chcemy zobaczyć sumę, wartość minimalną bądź wartość maksymalną ? Korzystamy wtedy z atrybutu aggfunc.
pd.pivot_table(df_3dimension, values='lifeExp', index=['year'], columns='continent', aggfunc='sum')
Dodajmy kolejny poziom i spróbujmy wyświetlić wartość minimalną oraz maksymalną dla każdego z kontynentów na jednej tabeli. Skorzystamy znowu z podejścia pozwalającego na wyświetlenie wartości per kraj ale zmienimy atrybut aggfunc:
pd.pivot_table(df_3dimension, values='lifeExp', index=['year'], columns='continent', aggfunc=[min,max])
Podsumowanie
Tabele przestawne są bardzo przydatnym narzędziem przy czytaniu danych. Pandas pozwala w bardzo przyjazny sposób tworzyć interesujące widoki, z których następnie możemy zacząć tworzyć wykresy z wykorzystaniem biblioteki Seaborn: