• 10 źródeł
  • Najlepszy* Newsletter
  • Kontakt
✕

Hej Pandas, chcę…

Data Science, Narzędzia | 2020-11-03

Hej Pandas, chcę…

Ten artykuł będzie działał trochę jak głosowy asystent na telefonie. Jak Siri albo Asystent Google. Będzie działał tak samo tylko inaczej.

Otóż będę tu zbierał krótkie snippety, na zasadzie chcę w Pandas zrobić to i to. Krótkie kodziki, które można skopiować i mieć od razu wynik.

Ten post jest “ciągłym draftem” – nowe informacje będą się tu pojawiać i pojawiać i pojawiać…

Do dzieła!

Hej Pandas, chcę…

… rozbić kolumnę ze stringiem na wiele kolumn

# po czym rozbijamy / chcemy nowe kolumny / nie ograniczamy liczby kolumn wynikowych
df["column"].str.split("-", expand=True, n=-1)

… jedną kolumnę podzielić na kilka

Zastosuj apply() z funkcją, która zwraca słownik

# Ładnie
def first_and_last_from_split(row):
    s_split = row["col_to_split"].split(", ")
    row['col_1'] = s_split[0]
    row['col_2'] = s_split[-1]
    return row

df = df.apply(first_and_last_from_split, axis=1)
# Szybko
def first_and_last_from_split(s):
    s_split = s.split(", ")
    return s_split[0], s_split[-1]

df['col_1'],  df['col_2'] = zip(*df['col_to_split'].apply(first_and_last_from_split))

… pokazać kolumny, które mają same NaN’y

df.columns[df.isna().all()].tolist()

… dodać kolumnę na podstawie wartości z innego DataFrame. Taki trochę VLOOKUP z Excela 😉

Mamy np. jeden DataFrame, w którym mamy nasze opisane dane i drugi, w którym mamy informację o wagach dla poszczególnych klasach. Możemy sobie dołożyć info o wagach do naszej DFki z danymi wykorzystując DataFrame.merge()

weighted_df = df.merge(labels_weights[["label", "weight"]], on="label", how="left”)

… połączyć dwa DataFrame (merge) z multiindexem zamiast suffixów

df = pd.concat([df_L, df_R], keys=['L','R'],axis=1).swaplevel(0,1,axis=1).sort_index(level=0, axis=1)

Albo sprytniej:

d = {'ABC' : df1, 'XYZ' : df2}
print pd.concat(d.values(), axis=1, keys=d.keys())

Przed

>>> df_L = pd.DataFrame({'X': [1, 3], 'Y': [5, 7]})

>>> df_R = pd.DataFrame({'X': [2, 4], 'Y': [6, 8]})

Suffixy

>>> df_L.join(df_R, lsuffix='_L', rsuffix='_R')

X_L Y_L X_R Y_R
0 1 5 2 6
1 3 7 4 8
Po 
>>> df
X Y
L R L R
0 1 2 5 6
1 3 4 7 8

… wyświetlić całego DataFrame a nie tylko początek i koniec

pd.set_option("display.max_rows", None, "display.max_columns", None)

… pokazać tylko te wiersze, które nie mają NULLa / NaNa

W żadnej z kolumn:

filtered_df = df[df.notnull().all(1)]

W wybranych kolumnach

filtered_df = df[df[[‘col1’, ‘col2']].notnull().all(1)]

Co najmniej jedna wartość nie jest NaNem:

filtered_df = df[df.notnull().any(1)] 

Przykład

In []: df
Out[]: 
     a    b    c
0  1.0  1.0    w
1  NaN  NaN  NaN
2  3.0  NaN    t
3  4.0  5.0  NaN


In []: df[df.notnull().all(1)]
Out[]: 
     a    b  c
0  1.0  1.0  w


In []: df[df[['a', 'c']].notnull().all(1)]
Out[]: 
     a    b  c
0  1.0  1.0  w
2  3.0  NaN  t


In []: df[df.notnull().any(1)]
Out[]: 
     a    b    c
0  1.0  1.0    w
2  3.0  NaN    t
3  4.0  5.0  NaN

… pogrupować DF i dostać liczbę rekordów w danej grupie

df.groupby(['col1', 'col2']).size().reset_index(name='counts')

Obrazek w Nagłówku: Photo by Kunal Kalra on Unsplash

Najlepszy* Newsletter o Machine Learning w Polsce

Co tydzień wyciągam smaczki z różnych miejsc w Internecie na temat Machine Learning, Data Science, AI i Python i przesyłam na Twoją skrzynkę mailową

Przesyłam też krótkie wyjaśnienia niektórych machine learningowych pojęć.

Autor: Konrad Łyda

Machine Learning Engineer w Asseco Business Solutions, zawodowo parający się głównie zagadnieniami Deep Learningu i Computer Vision. Ex-developer, ex-Project Manager, nawrócony na techniczną ścieżkę. W wolnych chwilach zgłębia szeroki ocean zastosowań Machine/Deep Learningu w różnych dziedzinach życia oraz współorganizuje spotkania społeczności Data Science Lublin

Poprzedni Wpis

5 Narzędzi, Które Musi Znać Inżynier Machine Learning

Następny Wpis

[Shorty] Testy vs Pandas - kiedy to samo to nie to samo

Dodaj komentarz Anuluj pisanie odpowiedzi

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

Ostatnie Wpisy

[Shorty] Testy vs Pandas – kiedy to samo to nie to samo

[Shorty] Testy vs Pandas – kiedy to samo to nie to samo

Hej Pandas, chcę…

Hej Pandas, chcę…

5 Narzędzi, Które Musi Znać Inżynier Machine Learning

5 Narzędzi, Które Musi Znać Inżynier Machine Learning

10 źródeł wiedzy o uczeniu maszynowym - pobierz!

Newsletter o ML za free?

Co czytać?

autor: Aurélien Géron

Gdzie wejść?

Najnowsze wpisy

  • [Shorty] Testy vs Pandas – kiedy to samo to nie to samo
  • Hej Pandas, chcę…
  • 5 Narzędzi, Które Musi Znać Inżynier Machine Learning
  • Amarena czy Chardonnay? – Pierwszy Model Machine Learning
  • A gdyby tak pojechać do Pragi?
Arba WordPress Theme by XstreamThemes.
  • UczymyMaszyny.pl
  • Polityka prywatności
  • Kontakt