Eksploracyjna analiza danych w Pythonie: co musisz wiedzieć?

Opublikowany: 2021-03-12

Eksploracyjna analiza danych (EDA) jest bardzo powszechną i ważną praktyką stosowaną przez wszystkich naukowców zajmujących się danymi. Jest to proces patrzenia na tabele i tabele danych pod różnymi kątami, aby je w pełni zrozumieć. Uzyskanie dobrego zrozumienia danych pomaga nam je uporządkować i podsumować, co następnie wydobywa spostrzeżenia i trendy, które w przeciwnym razie byłyby niejasne.

EDA nie ma sztywnych zasad, których należy przestrzegać, jak na przykład w „analizie danych”. Ludzie, którzy są nowicjuszami w tej dziedzinie, zawsze mają tendencję do mylenia tych dwóch terminów, które są w większości podobne, ale różnią się celem. W przeciwieństwie do EDA, analiza danych jest bardziej skłonna do wdrażania prawdopodobieństw i metod statystycznych w celu ujawnienia faktów i relacji między różnymi wariantami.

Wracając, nie ma dobrego ani złego sposobu wykonywania EDA. Różni się to w zależności od osoby, jednak istnieją pewne główne powszechnie stosowane wytyczne, które wymieniono poniżej.

  • Obsługa brakujących wartości: wartości null można zobaczyć, gdy wszystkie dane mogły nie być dostępne lub zarejestrowane podczas zbierania.
  • Usuwanie zduplikowanych danych: ważne jest, aby zapobiec nadmiernemu dopasowaniu lub uprzedzeniom powstałym podczas uczenia algorytmu uczenia maszynowego przy użyciu powtarzających się rekordów danych
  • Postępowanie z wartościami odstającymi: wartości odstające to rekordy, które drastycznie różnią się od pozostałych danych i nie są zgodne z trendem. Może to wynikać z pewnych wyjątków lub niedokładności podczas zbierania danych
  • Skalowanie i normalizowanie: Odbywa się to tylko dla liczbowych zmiennych danych. W większości przypadków zmienne znacznie różnią się zakresem i skalą, co utrudnia ich porównywanie i znajdowanie korelacji.
  • Analiza jednowymiarowa i dwuwymiarowa: Analiza jednowymiarowa jest zwykle wykonywana poprzez sprawdzenie, jak jedna zmienna wpływa na zmienną docelową. Analiza dwuwymiarowa jest przeprowadzana między dowolnymi 2 zmiennymi, może być liczbowa, kategoryczna lub obie.

Przyjrzymy się, jak niektóre z nich są zaimplementowane przy użyciu bardzo znanego zestawu danych „Ryzyko niewypłacalności kredytu domowego” dostępnego na Kaggle tutaj . Dane zawierają informacje o osobie ubiegającej się o pożyczkę w momencie ubiegania się o pożyczkę. Zawiera dwa rodzaje scenariuszy:

  • Klient z trudnościami w płatnościach : miał opóźnienia w płatnościach ponad X dni

na co najmniej jednej z pierwszych rat Y kredytu w naszej próbie,

  • Wszystkie inne przypadki : Wszystkie inne przypadki, w których płatność jest uiszczona na czas.

Na potrzeby tego artykułu będziemy pracować tylko nad plikami danych aplikacji.

Powiązane: Pomysły i tematy projektów Pythona dla początkujących

Spis treści

Patrząc na dane

app_data = pd.read_csv( 'aplikacja_data.csv' )

app_data.info()

Po odczytaniu danych aplikacji używamy funkcji info(), aby uzyskać krótki przegląd danych, z którymi będziemy mieć do czynienia. Poniższe dane wyjściowe informują nas, że mamy około 300000 rekordów pożyczek ze 122 zmiennymi. Spośród nich jest 16 zmiennych kategorycznych, a reszta liczbowa.

<klasa 'pandas.core.frame.DataFrame'>

RangeIndex: 307511 wpisów, od 0 do 307510

Kolumny: 122 wpisy, SK_ID_CURR do AMT_REQ_CREDIT_BUREAU_YEAR

dtypes: float64(65), int64(41), object(16)

wykorzystanie pamięci: 286,2+ MB

Dobrą praktyką jest zawsze oddzielne przetwarzanie i analizowanie danych liczbowych i kategorycznych.

categorical = app_data.select_dtypes(include = object).columns

app_data[categorical].apply(pd.Series.nunique, oś = 0)

Patrząc tylko na poniższe cechy kategorialne, widzimy, że większość z nich ma tylko kilka kategorii, co ułatwia ich analizę za pomocą prostych wykresów.

NAME_CONTRACT_TYPE 2

KOD_PŁEĆ 3

FLAG_OWN_CAR 2

FLAG_OWN_REALTY 2

NAME_TYPE_SUITE 7

NAME_INCOME_TYPE 8

NAME_EDUCATION_TYPE 5

NAME_FAMILY_STATUS 6

NAME_HOUSING_TYPE 6

OCCUPATION_TYPE 18

WEEKDAY_APPR_PROCESS_START 7

TYP ORGANIZACJI 58

FONDKAPREMONT_MODE 4

TYP DOMU_TRYB 3

WALLSMATERIAL_MODE 7

EMERGENCYSTATE_MODE 2

dtype: int64

Teraz, jeśli chodzi o funkcje liczbowe, metoda description() daje nam statystyki naszych danych:

numer= dane_aplikacji.opis()

numeryczna= numer.kolumny

numer

Patrząc na całą tabelę widać, że:

  • liczba dni_urodzeń jest ujemna: wiek wnioskodawcy (w dniach) w stosunku do dnia złożenia wniosku
  • dni_zatrudnienia ma wartości odstające (maksymalna wartość to około 100 lat) (635243)
  • amt_annuity - średnia znacznie mniejsza niż wartość maksymalna

Więc teraz wiemy, które cechy będą musiały być dalej analizowane.

Brakujące dane

Możemy wykonać wykres punktowy wszystkich obiektów z brakującymi wartościami, wykreślając % brakujących danych wzdłuż osi Y.

brakujące = pd.DataFrame( (app_data.isnull().sum()) * 100 / app_data.shape[0]).reset_index()

plt.figure(figsize = (16,5))

ax = sns.pointplot('indeks', 0, dane = brak)

plt.xticks(obrót = 90, rozmiar czcionki = 7)

plt.title("Procent brakujących wartości")

plt.ylabel(„PROCENT”)

plt.pokaż()

Wiele kolumn zawiera wiele brakujących danych (30-70%), niektóre mają niewiele brakujących danych (13-19%), a wiele kolumn również nie zawiera żadnych brakujących danych. Nie ma potrzeby modyfikowania zestawu danych, gdy wystarczy wykonać EDA. Jednak kontynuując wstępne przetwarzanie danych, powinniśmy wiedzieć, jak radzić sobie z brakującymi wartościami.

W przypadku obiektów z mniejszą liczbą braków danych możemy użyć regresji, aby przewidzieć brakujące wartości lub wypełnić średnią z obecnych wartości, w zależności od funkcji. W przypadku obiektów z bardzo dużą liczbą brakujących wartości lepiej jest usunąć te kolumny, ponieważ dają one bardzo mniejszy wgląd w analizę.

Brak równowagi danych

W tym zbiorze danych osoby niespłacające pożyczki są identyfikowane za pomocą zmiennej binarnej „TARGET”.

100 * app_data['TARGET'].value_counts() / len(app_data['TARGET'])

0 91,927118

1 8.072882

Nazwa: TARGET, dtype: float64

Widzimy, że dane są bardzo niezrównoważone w stosunku 92:8. Większość pożyczek została spłacona terminowo (docelowo = 0). Tak więc, gdy występuje tak duża nierównowaga, lepiej jest wziąć cechy i porównać je ze zmienną docelową (analiza ukierunkowana), aby określić, które kategorie w tych cechach mają tendencję do niespłacania pożyczek bardziej niż inne.

Poniżej znajduje się tylko kilka przykładów wykresów, które można wykonać za pomocą biblioteki python Seaborn i prostych funkcji zdefiniowanych przez użytkownika.

Płeć

Mężczyźni (M) mają większą szansę na niewywiązanie się z płatności w porównaniu z kobietami (K), mimo że liczba kandydatek jest prawie dwa razy większa. Tak więc kobiety są bardziej niezawodne niż mężczyźni w spłacaniu pożyczek.

Rodzaj edukacji

Mimo że większość pożyczek studenckich jest przeznaczona na ich wykształcenie średnie lub wyższe, to pożyczki na edukację na poziomie gimnazjum są najbardziej ryzykowne dla firmy, a następnie średnie.

Przeczytaj także: Kariera w nauce o danych

Wniosek

Taki rodzaj analizy, o której mowa powyżej, jest wykonywany w dużej mierze w analityce ryzyka w usługach bankowych i finansowych. W ten sposób można wykorzystać archiwa danych, aby zminimalizować ryzyko utraty pieniędzy podczas pożyczania klientom. Zakres EDA we wszystkich innych sektorach jest nieograniczony i powinien być szeroko stosowany.

Jeśli jesteś zainteresowany nauką o danych, sprawdź IIIT-B i upGrad Executive PG in Data Science, który jest stworzony dla pracujących profesjonalistów i oferuje ponad 10 studiów przypadków i projektów, praktyczne warsztaty praktyczne, mentoring z ekspertami branżowymi, 1- on-1 z mentorami branżowymi, ponad 400 godzin nauki i pomocy w pracy z najlepszymi firmami.

Dlaczego potrzebna jest eksploracyjna analiza danych (EDA)?

Eksploracyjna analiza danych jest uważana za poziom początkowy na początku modelowania danych. Jest to dość wnikliwa technika analizy najlepszych praktyk modelowania danych. Będziesz mógł wyodrębnić wykresy wizualne, wykresy i raporty z danych, aby uzyskać ich pełne zrozumienie.
EDA obejmuje pewne kroki w celu pełnej analizy danych, w tym wyprowadzenie wyników statystycznych, znalezienie brakujących wartości danych, obsługę błędnych wpisów danych i wreszcie wyprowadzenie różnych wykresów i wykresów.
Głównym celem tej analizy jest upewnienie się, że używany zestaw danych jest odpowiedni do rozpoczęcia stosowania algorytmów modelowania. Z tego powodu jest to pierwszy krok, który powinieneś wykonać na swoich danych przed przejściem do etapu modelowania.

Czym są wartości odstające i jak sobie z nimi radzić?

Wartości odstające odnoszą się do anomalii lub niewielkich rozbieżności w Twoich danych. Może się to zdarzyć podczas zbierania danych. Istnieją 4 sposoby wykrywania wartości odstających w zbiorze danych. Metody te są następujące:
1. Boxplot — Boxplot to metoda wykrywania wartości odstających, w której segregujemy dane według ich kwartyli.
2. Wykres punktowy — wykres punktowy wyświetla dane 2 zmiennych w postaci zbioru punktów zaznaczonych na płaszczyźnie kartezjańskiej. Wartość jednej zmiennej reprezentuje oś poziomą (x-ais), a wartość drugiej zmiennej reprezentuje oś pionową (oś y).
3. Z-score - Podczas obliczania Z-score szukamy punktów oddalonych od centrum i traktujemy je jako odstające.
4. Rozstęp międzykwartylowy (IQR) — Rozstęp międzykwartylowy lub IQR to różnica między górnym a dolnym kwartylem lub 75. i 25. kwartylem, często określana jako rozrzut statystyczny.

Jakie są wytyczne dotyczące wykonywania EDA?

W przeciwieństwie do analizy danych, EDA nie ma twardych i szybkich zasad i przepisów, których należy przestrzegać. Nie można powiedzieć, że jest to właściwa metoda lub zła metoda wykonywania EDA. Początkujący są często źle rozumiani i mylą się między EDA a analizą danych.
Istnieje jednak kilka wskazówek, które są powszechnie praktykowane:
1. Obsługa brakujących wartości
2. Usuwanie duplikatów danych
3. Postępowanie z wartościami odstającymi
4. Skalowanie i normalizacja
5. Analiza jednowymiarowa i dwuwymiarowa