Analiza danych w Python Pandas

Jednym z podstawowych pakietów do analizy danych w języku Python jest pakiet Pandas. Artykuł przedstawia podstawowe operacje związane z analizą danych za pomocą funkcji dostępnych w pakiecie Pandas. W artykule umieściłem przykłady związane z analizą danych w Python Pandas dotyczących cen samochodów z ogłoszeń motoryzacyjnych, które ilustrują podstawowe operacje wykonywane na danych przy użyciu pakietu Pandas. Artykuł jest przeznaczony dla osób początkujących, które rozpoczynają prace z analizą danych w języku Python i nie znają jeszcze funkcjonalności pakietu Pandas.

Python Pandas – wprowadzenie

Pierwszym krokiem do rozpoczęcia pracy z Python i Pandas jest zaimportowanie niezbędnych pakietów. W proponowanym przykładzie należy zaimportować pakiet NumPy do obliczeń numerycznych, zwłaszcza obliczeń wektorowo-macierzowych, pakiet Matplotlib do tworzenia wykresów oraz oczywiście sam pakiet Pandas. Wymienione pakiety zostały domyślnie umieszczone w popularnej dystrybucji Anaconda Python używanej w Data Science i są domyślnie instalowane (natomiast w przypadku innych dystrybucji języka Python wymagana może być ich indywidualna instalacja).

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

Python Pandas – wczytanie danych z pliku tekstowego

Drugim krokiem jest wczytanie danych poddawanych analizie. Pakiet Pandas umożliwia wczytanie danych z wielu źródeł, m.in. z plików tekstowych w formacie .csv, które w kolejnych wierszach zawierają rekordy danych o polach oddzielonych przecinkiem lub średnikiem. Proponowany przykład dotyczy danych zawierających informacje z ogłoszeń motoryzacyjnych. Przykładowy plik tekstowy, zawierający dane z 1000 ogłoszeń motoryzacyjnych, dostępny jest tutaj. Dane składają się z 1000 rekordów. Każdy rekord dotyczy jednego ogłoszenia motoryzacyjnego i zawiera następujące informacje: identyfikator ogłoszenia, marka samochodu, model samochodu, rok produkcji, rodzaj silnika, pojemność silnika, przebieg samochodu, cena, województwo.

Poniższy kod wczytuje dane z określonego pliku tekstowego i wypisuje na ekranie pierwsze kilka rekordów wczytanych danych.

samochod = pd.read_csv('samochody1tys.csv')
samochod.head()

Python Pandas – podstawowe operacje na danych

Lista unikalnych marek samochodów

print 'Lista unikalnych marek samochodów:'
for marka in samochod['marka'].unique():
    print marka,
print
Lista unikalnych marek samochodów:
Nissan BMW Opel Hyundai Volkswagen Fiat Seat Toyota Audi Citroën Ford Mercedes-Benz Honda Chevrolet Volvo Suzuki Renault Škoda Peugeot Mini Pontiac Dodge Jeep Mazda Saab Kia Mitsubishi Infiniti Land Rover Smart Porsche Lexus Alfa Romeo Jaguar Daewoo SsangYong Dacia Lancia Subaru Chrysler Ligier Maserati Daihatsu

Lista unikalnych marek samochodów

df = samochod.groupby('marka').size()
print 'Liczba unikalnych marek samochodów: %d' % df.shape[0]
print df.head(10)
Liczba unikalnych marek samochodów: 43
marka
Alfa Romeo     5
Audi          70
BMW           66
Chevrolet     11
Chrysler       1
Citroën       40
Dacia          5
Daewoo         2
Daihatsu       1
Dodge          5
dtype: int64

Lista unikalnych modeli samochodów

df = samochod.groupby(['marka', 'model']).size()
print 'Liczba unikalnych modeli samochodów: %d' % df.shape[0]
print df.head(10)
Liczba unikalnych modeli samochodów: 423
marka       model 
Alfa Romeo  147       1
            156       1
            159       2
            Spider    1
Audi        A1        1
            A3 8L     5
            A3 8P     5
            A3 8V     2
            A4 B5     1
            A4 B6     6
dtype: int64

Lista unikalnych modeli samochodów

df.sort_values(ascending=False,inplace=True)
print 'Liczba unikalnych modeli samochodów: %d' % df.shape[0]
print df.head(10)
Liczba unikalnych modeli samochodów: 423
marka       model      
Opel        Astra H        15
            Vectra C       14
            Corsa D        10
Audi        A4 B7           9
Volkswagen  Golf VII        9
Audi        A6 C7           9
BMW         Seria 3 E46     9
Škoda       Octavia II      8
Opel        Astra J         8
Ford        Focus Mk2       8
dtype: int64

Lista samochodów dla poszczególnych lat produkcji

df = samochod.groupby(['rok_produkcji']).size()
df = df.reindex(index=df.index[::-1])
print df.head(25)
rok_produkcji
2017.0    132
2016.0     77
2015.0     32
2014.0     51
2013.0     32
2012.0     39
2011.0     39
2010.0     48
2009.0     63
2008.0     59
2007.0     81
2006.0     76
2005.0     56
2004.0     48
2003.0     42
2002.0     36
2001.0     29
2000.0     19
1999.0     10
1998.0      7
1997.0      5
1996.0      1
1995.0      3
1994.0      4
1993.0      1
dtype: int64

Python Pandas – zaawansowane operacje na danych

W kolejnym artykule zostaną opisane bardziej zaawansowane operacje na danych, takie jak indeksowanie i selekcja danych, łączenie tabel z danymi, itp.