Jak aktualizować wiersze i kolumny za pomocą Python Pandas

Pandas to biblioteka Pythona, która jest niezwykle użyteczna w procesach analizy i obróbki danych. Jedną z podstawowych umiejętności, jakie oferuje, jest zdolność do łatwej modyfikacji ramek danych. Możemy zmieniać pojedyncze komórki, całe rzędy lub kolumny. W niniejszym artykule omówimy różne metody aktualizacji danych w Pandas.

Wprowadzenie do Aktualizacji Danych

Pandas udostępnia bogaty zestaw narzędzi do manipulacji danymi, włączając w to ich aktualizację. Zmiana danych może obejmować poprawki pojedynczych wartości, eliminowanie duplikatów, dodawanie nowych informacji oraz przeprowadzanie operacji matematycznych.

Sposoby aktualizowania danych w Pandas są różnorodne i zależą od konkretnego zadania. Poniżej przedstawiamy popularne metody:

  • Zmiana Pojedynczych Wartości: Możliwe jest modyfikowanie konkretnych komórek w ramce danych, wykorzystując indeksowanie, notację kropkową lub funkcje loc oraz iloc.
  • Aktualizacja Całych Wierszy: Za pomocą przypisania nowej listy lub serii danych, możemy zmienić wszystkie wartości w wybranym wierszu.
  • Aktualizacja Całych Kolumn: Analogicznie do wierszy, można modyfikować wszystkie dane w kolumnie, przypisując nową listę lub serię.
  • Zastosowanie Funkcji do Aktualizacji: Możemy wykorzystać funkcje do modyfikowania danych w ramce, co pozwala na bardziej zaawansowaną transformację.

Sposoby Aktualizacji Pojedynczych Wartości

Indeksowanie

Najprostsza metoda zmiany pojedynczej wartości to indeksowanie. Odwołujemy się do komórki, podając nazwę kolumny i numer indeksu wiersza.

import pandas as pd
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
# Aktualizacja komórki na pozycji (1, 'A')
df.loc[1, 'A'] = 10
print(df)

Notacja Kropkowa

Notacja kropkowa ułatwia aktualizację danych w pojedynczej kolumnie.

import pandas as pd
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
# Aktualizacja wartości w kolumnie 'A'
df.A = [10, 20, 30]
print(df)

Funkcje loc i iloc

Funkcje loc i iloc to zaawansowane narzędzia do indeksowania. loc odnosi się do danych za pomocą etykiet wierszy i kolumn, a iloc – za pomocą ich numerów.

import pandas as pd
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
# Aktualizacja komórki (1, 'B') za pomocą loc
df.loc[1, 'B'] = 20
print(df)
# Aktualizacja komórki (2, 1) za pomocą iloc
df.iloc[2, 1] = 30
print(df)

Aktualizacja Całych Wierszy

Przypisanie Nowej Listy lub Serii

Aby zmienić wszystkie wartości w wierszu, możemy przypisać nową listę lub serię do wybranego indeksu.

import pandas as pd
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
# Aktualizacja wiersza o indeksie 1
df.loc[1] = [10, 20]
print(df)

Aktualizacja Całych Kolumn

Przypisanie Nowej Listy lub Serii

Podobnie jak w przypadku wierszy, możemy zmienić wszystkie wartości w kolumnie, przypisując nową listę lub serię do jej nazwy.

import pandas as pd
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
# Aktualizacja kolumny 'A'
df.A = [10, 20, 30]
print(df)

Wykorzystanie Funkcji do Aktualizacji

Funkcje Anonimowe (Lambda)

Funkcje anonimowe, czyli lambda, mogą być wykorzystane do aktualizacji danych w ramce. Funkcja lambda pobiera wartość z kolumny i zwraca zmodyfikowaną wersję.

import pandas as pd
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
# Zastosowanie funkcji lambda do aktualizacji kolumny 'A'
df.A = df.A.apply(lambda x: x * 2)
print(df)

Aktualizacja Danych na Podstawie Warunków

Funkcja where

Funkcja where umożliwia aktualizację wartości w ramce danych na podstawie określonego warunku. Zwraca oryginalne wartości, jeśli warunek jest spełniony, a w przeciwnym wypadku wartości z podanego argumentu.

import pandas as pd
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
# Aktualizacja wartości w kolumnie 'A', gdzie wartość jest większa niż 2
df.A = df.A.where(df.A > 2, 10)
print(df)

Aktualizacja Danych w Połączonych Ramkach

Aktualizacja za Pomocą update

Do modyfikacji danych w połączonych ramkach danych używamy funkcji update.

import pandas as pd
df1 = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
df2 = pd.DataFrame({'A': [10, 20, 30], 'B': [40, 50, 60]})
# Aktualizacja wartości w df1 za pomocą wartości z df2
df1.update(df2)
print(df1)

Aktualizacja z Wykorzystaniem apply

Zastosowanie Funkcji do Wierszy lub Kolumn

Funkcja apply pozwala na zastosowanie dowolnej funkcji do wierszy lub kolumn, co umożliwia aktualizację lub tworzenie nowych kolumn.

import pandas as pd
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
# Aktualizacja wartości w kolumnie 'A' za pomocą funkcji
df['A'] = df['A'].apply(lambda x: x * 2)
print(df)

Aktualizacja w oparciu o Indeksowanie

Modifikacja na Podstawie Indeksów

Możemy modyfikować wartości na podstawie indeksów wierszy lub kolumn.

import pandas as pd
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
# Aktualizacja komórki (1, 'A')
df.loc[1, 'A'] = 10
print(df)

Aktualizacja na Podstawie Warunków

Użycie where i mask

Funkcje where i mask pozwalają aktualizować wartości w zależności od spełnienia określonego warunku.

import pandas as pd
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
# Aktualizacja wartości w kolumnie 'A', gdzie wartość jest większa niż 2
df['A'] = df['A'].where(df.A > 2, 10)
print(df)

Podsumowanie

Pandas oferuje wiele metod aktualizowania danych w ramkach danych. Możemy modyfikować pojedyncze komórki, całe wiersze, kolumny oraz stosować funkcje do aktualizacji na podstawie określonych warunków. Dobór odpowiedniej metody zależy od konkretnego zadania.

Najczęściej Zadawane Pytania

1. Czy aktualizacja danych w Pandas działa in-place?

Standardowo nie. Operacje aktualizujące zwracają nową ramkę danych. Aby zmodyfikować oryginalną ramkę, trzeba przypisać wynik operacji do tej samej zmiennej.

2. Jak usunąć zduplikowane wiersze?

Użyj funkcji drop_duplicates(). Parametr subset pozwala określić kolumny, na podstawie których ma być sprawdzana unikalność.

import pandas as pd
df = pd.DataFrame({'A': [1, 1, 2, 2], 'B': [3, 3, 4, 4]})
# Usuwanie duplikatów w oparciu o wszystkie kolumny
df.drop_duplicates(inplace=True)
print(df)
# Usuwanie duplikatów w oparciu o kolumnę 'A'
df.drop_duplicates(subset='A', inplace=True)
print(df)

3. Jak dodać nową kolumnę?

Przypisz listę lub serię do nowej nazwy kolumny.

import pandas as pd
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
# Dodanie nowej kolumny 'C'
df['C'] = [7, 8, 9]
print(df)

4. Jak usunąć kolumnę?

Użyj funkcji drop(), wskazując listę kolumn do usunięcia za pomocą parametru columns.

import pandas as pd
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
# Usuwanie kolumny 'B'
df.drop('B', axis=1, inplace=True)
print(df)

5. Jak sortować ramkę danych?

Użyj sort_values(), określając kolumnę lub kolumny do sortowania w parametrze by.

import pandas as pd
df = pd.DataFrame({'A': [3, 1, 2], 'B': [6, 4, 5]})
# Sortowanie w oparciu o kolumnę 'A'
df.sort_values(by='A', inplace=True)
print(df)
# Sortowanie w oparciu o kolumny 'A' i 'B'
df.sort_values(by=['A', 'B'], inplace=True)
print(df)

6. Jak filtrować ramkę danych?

Wykorzystaj operatory porównania i logiczne. Zwrócony zostanie nowy DataFrame z wierszami spełniającymi warunki.

import pandas as pd
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
# Filtrowanie wierszy, gdzie 'A' jest większe niż 1
filtered_df = df[df['A'] > 1]
print(filtered_df)
# Filtrowanie wierszy, gdzie 'B' jest równe 5
filtered_df = df[df['B'] == 5]
print(filtered_df)

7. Jak wykonywać operacje matematyczne?

Stosuj operatory matematyczne i funkcje do kolumn lub całej ramki danych.

import pandas as pd
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
# Dodanie dwóch kolumn
df['C'] = df['A'] + df['B']
print(df)
# Pomnożenie wartości w kolumnie 'A' przez 2
df['A'] = df['A'] * 2
print(df)

8. Jak sumować wartości?

Użyj funkcji sum(), którą można zastosować do całej ramki, kolumny lub wiersza.

import pandas as pd
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
# Suma wszystkich wartości
total_sum = df.sum()
print(total_sum)
# Suma wartości w kolumnie 'A'
column_sum = df['A'].sum()
print(column_sum)
# Suma wartości w wierszu o indeksie 1
row_sum = df.iloc[1].sum()
print(row_sum)

9. Jak obliczyć średnią arytmetyczną?

Użyj funkcji mean() na całej ramce, kolumnie lub wierszu.

import pandas as pd
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
# Średnia wszystkich wartości
mean_value = df.mean()
print(mean_value)
# Średnia wartości w kolumnie 'A'
column_mean = df['A'].mean()
print(column_mean)
# Średnia wartości w wierszu o indeksie 1
row_mean = df.iloc[1].mean()
print(row_mean)

10. Jak zapisać ramkę danych do pliku?

Wykorzystaj funkcje to_csv(), to_excel() lub to_json(), podając ścieżkę do pliku.

import pandas as pd
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
# Zapisanie do CSV
df.to_csv('data.csv', index=False)
# Zapisanie do Excel
df.to_excel('data.xlsx', index=False)
# Zapisanie do JSON
df.to_json('data.json', orient='records')

Tagi: Pandas, Python, Aktualizacja danych, Ramka danych, Wiersze, Kolumny, Manipulacja danymi, Analiza danych, Data Science, Data Analysis, Data Manipulation.


newsblog.pl