Wpis z mikrobloga

Cześć,
mam pytania z zakresu #python, #pandas i ogólnie #datascience.
Zasysam dośc duża tabelę z bazy danych (ok 1,5GB). Po zakonczeniu procesu sprawdzam jakiego typu mam kolumny ( tabela.info() ). Wszystkie sa typem 'object'. Jednak jak dam type(tabela[kolumna][0]) to otrzymuje np. decimal.Decimal.
W zwiazku z tym mam pytania:
1. W koncu jakiego typu jest taka kolumna?
2. Z uwagi na dosc duza liczbe wierszy (ok 13 milionow) chce pozmieniac typy kolumna tak, zeby maksymalnie przyspieszyc dzialanie pandasa. Czy ww. kolumne zmienic na int?
3. Czesc z tych kolumna ma mala zmienność danych - w ziwazku z tym chce je zmienic na categorical. I tu mam zagwozdke:
3a. Do jakiej liczby zmiennych warto to zmieniac?
3b. Jedna z kolumna to wiek. Tu lepiej int czy kategorie tez? Bo jesli dobrze rozumiem dzialanie kategorii, to mamy 'podlinkowanie' do ajkiejs wirtualnej tabeli do odpowiedniej pozycji. I w tym momencie informacja w int chyba zajmuje mniej miejsca w pamieci niz adres do tabeli? No i oszczedzam milisekudy na odwolania? Czy zle pojmuje (tj wniosek jest zeby to byl ina a nie kategoria)?
4. Lepiej z punktu widzenia wydajnosci date trzymac jako strong czy datetime?
  • 8
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@leoshelby:
1. dzieki
2. Duzo kolumn to roznej masci ID - czyli nie bede zadnych matematycznych operacji, ale uzywal przy filtrowaniu i zliczaniu unikalnych wartosci.
3. Analiza reczna.
4. W kilu miejscach bed operowal na datach, ale w wiekszosci nie bede uzywal tych kolumn, wiec sadze, ze skonwertuje na poczatku (bo to tra chwile) i mam z glowy. Ale przetestuje to co piszesz :)
  • Odpowiedz
2. No to pewnie int będzie lepszy, ewentualnie możesz podzielić sobie dataset tak i w tej części analizy gdzie potrzebujesz tych danych po prostu ich nie wczytywać (tylko trzeba ubić wcześniej kernel/usunąć zmienne z pamięci)
3. To już zależy od tego czego się chcesz dowiedzieć (wiedza domenowa :)) zacznij od df.colum.unique() i zobacz ile masz unikalnych wartości, porób sobie histogramy, boxploty itd i później decyduj, czy jakoś je grupować, zrzucać rzadkie kategorie
  • Odpowiedz
@thomeq: 3. Przy zmiennych binarnych mozesz sobie zrobic get dummies i zdropowac pierwsza (czyli cos na zasadzie is_male z wartosciami 0 i 1 lub bool). Jesli chodzi o wiek to zazwyczaj warto sobie to pokubelkowac jakos sensownie. Jesli pracujesz np. na miejscu zamieszkania to mozesz sociagnac sobie skads wielkosc miejscowosci i pokubelkowac na male, srednie i duze miasta lub np wyliczyc odleglosc od najblizszej siedziby Waszej firmy. Co do wydajnosci
  • Odpowiedz