• 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ń (albo dwa) 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

AI Engineer działający głównie w Lingaro. Zajmuje się głównie maszynerią potrzebną do wytworzenia produktów opartych o uczenia maszynowe - od danych przez modele do wdrożenia. 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

Ostatnie Wpisy

Od danych do produktu – automatyzacja w obszarze Machine Learning dzięki MLOps

Od danych do produktu – automatyzacja w obszarze Machine Learning dzięki MLOps

[#w3linijkach] Jak pobrać dane z MySQL i zapisać do CSV w Pythonie?

[#w3linijkach] Jak pobrać dane z MySQL i zapisać do CSV w Pythonie?

Kodowanie znaków przy połączeniu do bazy danych zdradliwe bywa

Kodowanie znaków przy połączeniu do bazy danych zdradliwe bywa

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

Newsletter o ML za free?

Gdzie wejść?


Ostatnie wpisy

  • Od danych do produktu – automatyzacja w obszarze Machine Learning dzięki MLOps
  • [#w3linijkach] Jak pobrać dane z MySQL i zapisać do CSV w Pythonie?
  • Kodowanie znaków przy połączeniu do bazy danych zdradliwe bywa
  • Jak mergować Jupyter notebooki w GIT i nie osiwieć? Proste narzędzie!
  • [WDI2021] Szukamy Szopów, czyli Computer Vision w 30 minut
Arba WordPress Theme by XstreamThemes.
  • UczymyMaszyny.pl
  • Polityka prywatności
  • Kontakt