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
oraziloc
. - 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